import { baseColumns } from '@/utils/base-columns';
import { relations } from 'drizzle-orm';
import { pgEnum, pgTable } from 'drizzle-orm/pg-core';
import { sourceDocumentToEntityTable } from './source-document-to-entity';
import { sourceDocumentToRelationTable } from './source-document-to-relation';
import { topicTable } from './topic';
export const sourceDocumentTypeEnum = pgEnum('sourceDocumentType', [
'pdf',
'video',
'audio',
'image',
]);
export const sourceDocumentTable = pgTable('source_document', (t) => ({
...baseColumns(t),
topicId: t
.text()
.references(() => topicTable.id, { onDelete: 'cascade' })
.notNull(),
name: t.text().notNull(),
contentS3Key: t.text().notNull(),
originalS3Key: t.text().notNull(),
type: sourceDocumentTypeEnum('type').notNull(),
}));
export const sourceDocumentRelations = relations(
sourceDocumentTable,
({ one, many }) => ({
topic: one(topicTable, {
fields: [sourceDocumentTable.topicId],
references: [topicTable.id],
}),
entities: many(sourceDocumentToEntityTable),
relations: many(sourceDocumentToRelationTable),
})
);
import { baseColumns } from '@/utils/base-columns';
import { relations } from 'drizzle-orm';
import { pgEnum, pgTable } from 'drizzle-orm/pg-core';
import { sourceDocumentToEntityTable } from './source-document-to-entity';
import { sourceDocumentToRelationTable } from './source-document-to-relation';
import { topicTable } from './topic';
export const sourceDocumentTypeEnum = pgEnum('sourceDocumentType', [
'pdf',
'video',
'audio',
'image',
]);
export const sourceDocumentTable = pgTable('source_document', (t) => ({
...baseColumns(t),
topicId: t
.text()
.references(() => topicTable.id, { onDelete: 'cascade' })
.notNull(),
name: t.text().notNull(),
contentS3Key: t.text().notNull(),
originalS3Key: t.text().notNull(),
type: sourceDocumentTypeEnum('type').notNull(),
}));
export const sourceDocumentRelations = relations(
sourceDocumentTable,
({ one, many }) => ({
topic: one(topicTable, {
fields: [sourceDocumentTable.topicId],
references: [topicTable.id],
}),
entities: many(sourceDocumentToEntityTable),
relations: many(sourceDocumentToRelationTable),
})
);