37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
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
|
|
)
|
|
);
|
|
}
|
|
}
|