From 768c4d265e7f95dd366bf5856fcedd86663a1ccd Mon Sep 17 00:00:00 2001 From: Lukas May Date: Sat, 31 Jan 2026 19:03:26 +0100 Subject: [PATCH] feat(11-02): add findByStatus method to InitiativeRepository - Add findByStatus method to InitiativeRepository port interface - Implement findByStatus in DrizzleInitiativeRepository adapter - Filter initiatives by status (active/completed/archived) --- src/db/repositories/drizzle/initiative.ts | 7 +++++++ src/db/repositories/initiative-repository.ts | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/src/db/repositories/drizzle/initiative.ts b/src/db/repositories/drizzle/initiative.ts index c050c23..8eb0f47 100644 --- a/src/db/repositories/drizzle/initiative.ts +++ b/src/db/repositories/drizzle/initiative.ts @@ -54,6 +54,13 @@ export class DrizzleInitiativeRepository implements InitiativeRepository { return this.db.select().from(initiatives); } + async findByStatus(status: 'active' | 'completed' | 'archived'): Promise { + return this.db + .select() + .from(initiatives) + .where(eq(initiatives.status, status)); + } + async update(id: string, data: UpdateInitiativeData): Promise { const existing = await this.findById(id); if (!existing) { diff --git a/src/db/repositories/initiative-repository.ts b/src/db/repositories/initiative-repository.ts index f4e4417..a16cce6 100644 --- a/src/db/repositories/initiative-repository.ts +++ b/src/db/repositories/initiative-repository.ts @@ -44,6 +44,12 @@ export interface InitiativeRepository { */ findAll(): Promise; + /** + * Find all initiatives with a specific status. + * Returns empty array if none exist. + */ + findByStatus(status: 'active' | 'completed' | 'archived'): Promise; + /** * Update an initiative. * Throws if initiative not found.