banatie-service/packages/database/src/schema/index.ts

113 lines
3.0 KiB
TypeScript

import { relations } from 'drizzle-orm';
import { organizations } from './organizations';
import { projects } from './projects';
import { apiKeys } from './apiKeys';
import { flows } from './flows';
import { images } from './images';
import { generations } from './generations';
import { promptUrlCache } from './promptUrlCache';
// Export all tables
export * from './organizations';
export * from './projects';
export * from './apiKeys';
export * from './flows';
export * from './images';
export * from './generations';
export * from './promptUrlCache';
// Define relations
export const organizationsRelations = relations(organizations, ({ many }) => ({
projects: many(projects),
apiKeys: many(apiKeys),
}));
export const projectsRelations = relations(projects, ({ one, many }) => ({
organization: one(organizations, {
fields: [projects.organizationId],
references: [organizations.id],
}),
apiKeys: many(apiKeys),
flows: many(flows),
images: many(images),
generations: many(generations),
promptUrlCache: many(promptUrlCache),
}));
export const apiKeysRelations = relations(apiKeys, ({ one, many }) => ({
organization: one(organizations, {
fields: [apiKeys.organizationId],
references: [organizations.id],
}),
project: one(projects, {
fields: [apiKeys.projectId],
references: [projects.id],
}),
images: many(images),
generations: many(generations),
}));
export const flowsRelations = relations(flows, ({ one, many }) => ({
project: one(projects, {
fields: [flows.projectId],
references: [projects.id],
}),
images: many(images),
generations: many(generations),
}));
export const imagesRelations = relations(images, ({ one, many }) => ({
project: one(projects, {
fields: [images.projectId],
references: [projects.id],
}),
generation: one(generations, {
fields: [images.generationId],
references: [generations.id],
}),
flow: one(flows, {
fields: [images.flowId],
references: [flows.id],
}),
apiKey: one(apiKeys, {
fields: [images.apiKeyId],
references: [apiKeys.id],
}),
promptUrlCacheEntries: many(promptUrlCache),
}));
export const generationsRelations = relations(generations, ({ one, many }) => ({
project: one(projects, {
fields: [generations.projectId],
references: [projects.id],
}),
flow: one(flows, {
fields: [generations.flowId],
references: [flows.id],
}),
apiKey: one(apiKeys, {
fields: [generations.apiKeyId],
references: [apiKeys.id],
}),
outputImage: one(images, {
fields: [generations.outputImageId],
references: [images.id],
}),
promptUrlCacheEntries: many(promptUrlCache),
}));
export const promptUrlCacheRelations = relations(promptUrlCache, ({ one }) => ({
project: one(projects, {
fields: [promptUrlCache.projectId],
references: [projects.id],
}),
generation: one(generations, {
fields: [promptUrlCache.generationId],
references: [generations.id],
}),
image: one(images, {
fields: [promptUrlCache.imageId],
references: [images.id],
}),
}));