import { integer, numeric, sqliteTable, text, type AnySQLiteColumn, unique, } from "drizzle-orm/sqlite-core"; export const haexSettings = sqliteTable("haex_settings", { id: text().primaryKey(), key: text(), value_text: text(), value_json: text({ mode: "json" }), value_number: numeric(), }); export const haexExtensions = sqliteTable("haex_extensions", { id: text().primaryKey(), author: text(), enabled: integer({ mode: "boolean" }), icon: text(), name: text(), url: text(), version: text(), }); export const testTable = sqliteTable("testTable", { id: text().primaryKey(), author: text(), test: text(), }); export const haexExtensionsPermissions = sqliteTable( "haex_extensions_permissions", { id: text().primaryKey(), extensionId: text("extension_id").references((): AnySQLiteColumn => haexExtensions.id), resource: text({ enum: ["fs", "http", "database"] }), operation: text({ enum: ["read", "write", "create"] }), path: text(), }, (table) => [unique().on(table.extensionId, table.resource, table.operation, table.path)] ); export type InsertHaexSettings = typeof haexSettings.$inferInsert; export type SelectHaexSettings = typeof haexSettings.$inferSelect; export type InsertHaexExtensions = typeof haexExtensions.$inferInsert; export type SelectHaexExtensions = typeof haexExtensions.$inferSelect; export type InsertHaexExtensionsPermissions = typeof haexExtensionsPermissions.$inferInsert; export type SelectHaexExtensionsPermissions = typeof haexExtensionsPermissions.$inferSelect;