import { sql } from "drizzle-orm"; import { integer, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core"; import { users } from "./users.js"; export const mounts = sqliteTable( "mounts", { id: text("id") .primaryKey() .$defaultFn(() => crypto.randomUUID()), userId: text("user_id") .notNull() .references(() => users.id, { onDelete: "cascade" }), name: text("name").notNull(), type: text("type").notNull().default("webdav"), baseUrl: text("base_url").notNull(), username: text("username"), /** AES-GCM 密文(base64),永不回传前端 */ secretEnc: text("secret_enc").notNull().default(""), rootPath: text("root_path").notNull().default("/"), enabled: integer("enabled", { mode: "boolean" }).notNull().default(true), createdAt: integer("created_at", { mode: "timestamp" }) .notNull() .default(sql`(unixepoch())`), updatedAt: integer("updated_at", { mode: "timestamp" }) .notNull() .default(sql`(unixepoch())`), }, (t) => [uniqueIndex("mounts_user_name_uq").on(t.userId, t.name)], ); export type Mount = typeof mounts.$inferSelect; export type NewMount = typeof mounts.$inferInsert;