import { asc, eq, inArray } from "drizzle-orm"; import type { AppDatabase } from "../database-context.js"; import { distributionBoardComponentProtectionDevices } from "../schema/distribution-board-component-protection-devices.js"; import { distributionBoardComponents } from "../schema/distribution-board-components.js"; export class DistributionBoardComponentRepository { constructor(private readonly database: AppDatabase) {} async listByCircuitList(circuitListId: string) { return this.database .select() .from(distributionBoardComponents) .where( eq(distributionBoardComponents.circuitListId, circuitListId) ) .orderBy( asc(distributionBoardComponents.sortOrder), asc(distributionBoardComponents.id) ); } async listProtectionByComponentIds(componentIds: string[]) { if (componentIds.length === 0) { return []; } return this.database .select() .from(distributionBoardComponentProtectionDevices) .where( inArray( distributionBoardComponentProtectionDevices.componentId, componentIds ) ); } }