Files
dbx/apps/desktop/src/lib/sidebar/sidebarDdlTemplate.ts
T

20 lines
913 B
TypeScript

import { joinExportedDdls } from "@/lib/export/ddlExport";
interface SidebarDdlExecutionTarget {
connectionId: string;
database: string;
catalog?: string;
}
export function sidebarDdlTargetsForExecutionContext<T extends SidebarDdlExecutionTarget>(activeTarget: SidebarDdlExecutionTarget, targets: readonly T[]): T[] {
return targets.filter((target) => target.connectionId === activeTarget.connectionId && target.database === activeTarget.database && (target.catalog ?? "") === (activeTarget.catalog ?? ""));
}
export async function buildSidebarDdlTemplateSql<T>(targets: readonly T[], loadDdl: (target: T) => Promise<string>, formatDdl: (ddl: string, target: T) => Promise<string>): Promise<string> {
const parts: string[] = [];
for (const target of targets) {
parts.push(await formatDdl(await loadDdl(target), target));
}
return parts.length === 1 ? parts[0]! : joinExportedDdls(parts);
}