import { blob, index, int, integer, sqliteTable, text, } from "drizzle-orm/sqlite-core"; import { sql } from "drizzle-orm/sql"; export const userTable = sqliteTable("user", { id: text() .primaryKey(), createdAt: integer("created_at", { mode: "timestamp" }) .default(sql`(current_timestamp)`) .notNull(), email: text() .notNull(), name: text() .notNull(), }); export const sessionTable = sqliteTable("session", { id: text("id") .primaryKey(), createdAt: integer("created_at", { mode: "timestamp_ms" }).default( sql`(current_timestamp)`, ), expiresAt: integer("expires_at", { mode: "timestamp" }) .notNull(), userId: text("user_id") .notNull(), }); export const performanceTable = sqliteTable("performance", { path: text().notNull(), search: text(), time: int().notNull(), createdAt: integer("created_at", { mode: "timestamp_ms", }).default(sql`(STRFTIME('%s', 'now') * 1000)`), }); export const imageTable = sqliteTable("image", { createdAt: integer("created_at", { mode: "timestamp" }).default( sql`(current_timestamp)`, ), url: text().notNull(), average: text().notNull(), blurhash: text().notNull(), mime: text().notNull(), }); export const documentTable = sqliteTable("document", { name: text().notNull().primaryKey(), lastModified: integer("last_modified").notNull(), content: text(), contentType: text("content_type").notNull(), size: integer().notNull(), perm: text().notNull(), }, (table) => { return [ index("name_idx").on(table.name), ]; }); export const cacheTable = sqliteTable("cache", { scope: text().notNull(), key: text().notNull().primaryKey(), json: text({ mode: "json" }), binary: blob(), createdAt: integer("created_at", { mode: "timestamp" }).default( sql`(current_timestamp)`, ), expiresAt: integer("expires_at", { mode: "timestamp" }), }, (table) => { return [ index("key_idx").on(table.key), index("scope_idx").on(table.scope), ]; });