skills/rimthan-lab/rimthan-plugins/api-data-repository

api-data-repository

SKILL.md

Data Repository

Purpose

Generate a repository class that extends BaseRepository from @starter/foundation-repositories with multi-tenancy support, transaction patterns, and Testcontainers for integration testing.

When to Use

  • Creating data access layer for new entities
  • Adding complex query methods to repositories
  • Implementing tenant-scoped data access
  • Creating repositories with proper test coverage

What It Generates

Directory Structure

apps/api/src/modules/{feature}/repositories/
├── {entity}.repository.ts
└── index.ts

Patterns Enforced

BaseRepository Extension

Repositories must extend BaseRepository<T> from @starter/foundation-repositories:

  • Inherits CRUD methods (findById, findAll, create, update, delete)
  • All methods accept tenantId parameter
  • Transaction support via db.transaction()

Multi-Tenancy

  • All queries include WHERE organization_id = tenantId
  • All methods validate tenant access
  • Cross-tenant queries throw ForbiddenException

Transaction Support

  • Multi-step writes use db.transaction(async (tx) => {...})
  • All operations within transaction use tx instead of db
  • Transactions rollback on error

Testcontainers Testing

  • Integration tests use real PostgreSQL via Testcontainers
  • Unique test data per test
  • Cleanup after each test
  • Tenant isolation tests

Usage Example

/skill data-repository --name=User --table=users --methods='findByEmail,searchByName,findByIdWithProfile'

Related Files

Weekly Installs
1
GitHub Stars
1
First Seen
6 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1