41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { sql } from 'drizzle-orm';
|
|
import { text, integer, sqliteTable } from 'drizzle-orm/sqlite-core';
|
|
|
|
export const messages = sqliteTable('messages', {
|
|
id: integer('id').primaryKey(),
|
|
content: text('content').notNull(),
|
|
chatId: text('chatId').notNull(),
|
|
messageId: text('messageId').notNull(),
|
|
role: text('type', { enum: ['assistant', 'user'] }),
|
|
metadata: text('metadata', {
|
|
mode: 'json',
|
|
}),
|
|
});
|
|
|
|
interface File {
|
|
name: string;
|
|
fileId: string;
|
|
}
|
|
|
|
export const chats = sqliteTable('chats', {
|
|
id: text('id').primaryKey(),
|
|
title: text('title').notNull(),
|
|
createdAt: text('createdAt').notNull(),
|
|
focusMode: text('focusMode').notNull(),
|
|
files: text('files', { mode: 'json' })
|
|
.$type<File[]>()
|
|
.default(sql`'[]'`),
|
|
});
|
|
|
|
export const userPreferences = sqliteTable('user_preferences', {
|
|
id: integer('id').primaryKey(),
|
|
userId: text('user_id').notNull(),
|
|
categories: text('categories', { mode: 'json' })
|
|
.$type<string[]>()
|
|
.default(sql`'["AI", "Technology"]'`),
|
|
languages: text('languages', { mode: 'json' }) // Changed from 'language' to 'languages'
|
|
.$type<string[]>()
|
|
.default(sql`'[]'`), // Empty array means "All Languages"
|
|
createdAt: text('created_at').notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
updatedAt: text('updated_at').notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
});
|