kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
at main 48 lines 1.2 kB view raw
1import { and, asc, eq } from "drizzle-orm"; 2import db from "../../../database"; 3import { columnTable, workflowRuleTable } from "../../../database/schema"; 4 5export async function resolveTargetStatus( 6 projectId: string, 7 eventType: string, 8 fallbackStatus: string, 9): Promise<string> { 10 const projectColumns = await db 11 .select({ 12 id: columnTable.id, 13 slug: columnTable.slug, 14 }) 15 .from(columnTable) 16 .where(eq(columnTable.projectId, projectId)) 17 .orderBy(asc(columnTable.position)); 18 19 if (projectColumns.length === 0) { 20 return fallbackStatus; 21 } 22 23 const rule = await db.query.workflowRuleTable.findFirst({ 24 where: and( 25 eq(workflowRuleTable.projectId, projectId), 26 eq(workflowRuleTable.integrationType, "github"), 27 eq(workflowRuleTable.eventType, eventType), 28 ), 29 }); 30 31 if (rule) { 32 const mappedColumn = projectColumns.find( 33 (column) => column.id === rule.columnId, 34 ); 35 if (mappedColumn) { 36 return mappedColumn.slug; 37 } 38 } 39 40 const fallbackColumn = projectColumns.find( 41 (column) => column.slug === fallbackStatus, 42 ); 43 if (fallbackColumn) { 44 return fallbackColumn.slug; 45 } 46 47 return projectColumns[0]?.slug ?? fallbackStatus; 48}