25 lines
1,002 B
TypeScript
25 lines
1,002 B
TypeScript
import { eq } from "drizzle-orm";
|
|
import type { ExternalModelConfigurationReader } from "../../domain/ports/external-model-configuration.reader.js";
|
|
import type { AppDatabase } from "../database-context.js";
|
|
import { externalModelConfigurations } from "../schema/external-model-configurations.js";
|
|
import { projects } from "../schema/projects.js";
|
|
|
|
export class ExternalModelConfigurationRepository
|
|
implements ExternalModelConfigurationReader {
|
|
constructor(private readonly database: AppDatabase) {}
|
|
|
|
getByProject(projectId: string) {
|
|
const project = this.database
|
|
.select({ id: projects.id })
|
|
.from(projects)
|
|
.where(eq(projects.id, projectId))
|
|
.get();
|
|
if (!project) return { projectExists: false, configuration: null };
|
|
const configuration = this.database
|
|
.select()
|
|
.from(externalModelConfigurations)
|
|
.where(eq(externalModelConfigurations.projectId, projectId))
|
|
.get() ?? null;
|
|
return { projectExists: true, configuration };
|
|
}
|
|
}
|