feat: Add project filter to listInitiatives
Add findByProjectId to InitiativeRepository using a subquery on the initiative_projects junction table. Extend the listInitiatives tRPC procedure to accept an optional projectId filter that composes with the existing status filter. Add a project dropdown to the initiatives page alongside the status filter.
This commit is contained in:
@@ -111,12 +111,22 @@ export function initiativeProcedures(publicProcedure: ProcedureBuilder) {
|
||||
listInitiatives: publicProcedure
|
||||
.input(z.object({
|
||||
status: z.enum(['active', 'completed', 'archived']).optional(),
|
||||
projectId: z.string().min(1).optional(),
|
||||
}).optional())
|
||||
.query(async ({ ctx, input }) => {
|
||||
const repo = requireInitiativeRepository(ctx);
|
||||
const initiatives = input?.status
|
||||
? await repo.findByStatus(input.status)
|
||||
: await repo.findAll();
|
||||
|
||||
let initiatives;
|
||||
if (input?.projectId) {
|
||||
const all = await repo.findByProjectId(input.projectId);
|
||||
initiatives = input.status
|
||||
? all.filter(i => i.status === input.status)
|
||||
: all;
|
||||
} else {
|
||||
initiatives = input?.status
|
||||
? await repo.findByStatus(input.status)
|
||||
: await repo.findAll();
|
||||
}
|
||||
|
||||
// Fetch active architect agents once for all initiatives
|
||||
const ARCHITECT_MODES = ['discuss', 'plan', 'detail', 'refine'];
|
||||
|
||||
Reference in New Issue
Block a user