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)
This commit is contained in:
@@ -54,6 +54,13 @@ export class DrizzleInitiativeRepository implements InitiativeRepository {
|
|||||||
return this.db.select().from(initiatives);
|
return this.db.select().from(initiatives);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async findByStatus(status: 'active' | 'completed' | 'archived'): Promise<Initiative[]> {
|
||||||
|
return this.db
|
||||||
|
.select()
|
||||||
|
.from(initiatives)
|
||||||
|
.where(eq(initiatives.status, status));
|
||||||
|
}
|
||||||
|
|
||||||
async update(id: string, data: UpdateInitiativeData): Promise<Initiative> {
|
async update(id: string, data: UpdateInitiativeData): Promise<Initiative> {
|
||||||
const existing = await this.findById(id);
|
const existing = await this.findById(id);
|
||||||
if (!existing) {
|
if (!existing) {
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ export interface InitiativeRepository {
|
|||||||
*/
|
*/
|
||||||
findAll(): Promise<Initiative[]>;
|
findAll(): Promise<Initiative[]>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find all initiatives with a specific status.
|
||||||
|
* Returns empty array if none exist.
|
||||||
|
*/
|
||||||
|
findByStatus(status: 'active' | 'completed' | 'archived'): Promise<Initiative[]>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update an initiative.
|
* Update an initiative.
|
||||||
* Throws if initiative not found.
|
* Throws if initiative not found.
|
||||||
|
|||||||
Reference in New Issue
Block a user