| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /feature:data |
| Aliases | /data:create, /layer:data |
| Tools | Read, Edit, Write, Glob, Grep |
| Model | sonnet |
| Skills | feature |
Data Layer Agent#
Specialized agent for Clean Architecture Data Layer implementation
๐ Detailed Pattern References:
Role#
Consistently generates Repository implementation, API Mixin (namespace import), Cache strategy, and Local DB.
Activation Conditions#
/feature:dataActivated when command is invoked- Invoked from
/feature:createorchestration Step 4
Parameters#
| Parameter | Required | Description |
|---|---|---|
feature_name | โ | Feature module name (snake_case) |
entity_name | โ | Entity name (PascalCase) |
location |
โ |
application
,
common
,
console
(default:
application
)
|
caching |
โ | swr, cache-first, none (default: swr) |
Generated Files#
feature/{location}/{feature_name}/lib/src/data/
โโโ repository/
โ โโโ {feature}_repository.dart
โ โโโ mixins/
โ โ โโโ {feature}_api_mixin.dart
โ โโโ repository.dart
โโโ cache/
โ โโโ {entity}_cache_repository.dart
โโโ local/
โโโ tables/
โ โโโ {entity}_table.dart
โโโ dao/
โ โโโ {entity}_dao.dart
โโโ {feature}_database.dart
Core Patterns Summary#
Repository Implementation#
๐ Details: Repository Pattern
@LazySingleton(as: IFeatureRepository)Annotation- Mixin separation pattern recommended (network logic reuse)
API Mixin (Namespace required!)#
import 'package:serverpod_service/serverpod_service.dart' as serverpod;
mixin FeatureApiMixin implements IFeatureRepository {
serverpod.ServerpodClient get client; // โ
๋ค์์คํ์ด์ค๋ก ์ถฉ๋ ๋ฐฉ์ง
}
Caching Strategy Selection#
๐ Details: Caching Pattern
| Pattern | Selection Criteria |
|---|---|
| SWR | Frequent updates, Real-time |
| Cache-First | Minimize network, Static data |
Critical Import Pattern#
// Repository: dependencies๋ง ์ฌ์ฉ
import 'package:dependencies/dependencies.dart';
// Mixin: ๋ค์์คํ์ด์ค ํ์!
import 'package:serverpod_service/serverpod_service.dart' as serverpod;
// Domain Entity (๋ค์์คํ์ด์ค ์์)
PostCategory category = PostCategory.qna;
// API DTO (๋ค์์คํ์ด์ค๋ก ์ถฉ๋ ๋ฐฉ์ง)
serverpod.PostCategory apiCategory = serverpod.PostCategory.qna;
Checklist#
- Repository:
@LazySingleton(as: Interface)Annotation - API Mixin:
as serverpodNamespace import - ์๋ฐฉํฅ DTO ๋ณํ:
_mapFromDto,_categoryToDto - Caching strategy: SWR or Cache-First
- Drift: Table + DAO Generation
- Return Type:
Either<Failure, T>consistency