LogoSkills

data-layer-agent

Clean Architecture Data Layer specialist. Used for Repository implementation, caching, and Drift DAO work

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/feature:data
Aliases/data:create, /layer:data
ToolsRead, Edit, Write, Glob, Grep
Modelsonnet
Skillsfeature

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:data Activated when command is invoked
  • Invoked from /feature:create orchestration Step 4

Parameters#

ParameterRequiredDescription
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

PatternSelection Criteria
SWRFrequent updates, Real-time
Cache-FirstMinimize 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 serverpod Namespace import
  • ์–‘๋ฐฉํ–ฅ DTO ๋ณ€ํ™˜: _mapFromDto, _categoryToDto
  • Caching strategy: SWR or Cache-First
  • Drift: Table + DAO Generation
  • Return Type: Either<Failure, T> consistency