import { int, text, sqliteTable, type SQLiteTableExtraConfig, primaryKey, blob } from 'drizzle-orm/sqlite-core'; export const usersTable = sqliteTable("users", { id: int().primaryKey({ autoIncrement: true }), username: text().notNull().unique(), email: text().notNull().unique(), hash: text().notNull().unique(), state: int().default(0), }); export const usersDataTable = sqliteTable("users_data", { id: int().primaryKey().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), }); export const userSessionsTable = sqliteTable("user_sessions", { id: int().notNull(), user_id: int().notNull().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), timestamp: int({ mode: 'timestamp' }).notNull().$defaultFn(() => new Date()), }, (table): SQLiteTableExtraConfig => { return { pk: primaryKey({ columns: [ table.id, table.user_id ] }), } }); export const explorerContentTable = sqliteTable("explorer_content", { path: text().primaryKey(), owner: int().notNull().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), title: text().notNull(), type: text({ enum: ['file', 'folder', 'markdown', 'canvas'] }).notNull(), content: blob({ mode: 'buffer' }), navigable: int({ mode: 'boolean' }).default(true), private: int({ mode: 'boolean' }).default(false), });