Files
haex-hub-mirror/src-tauri/database/schemas/vault.ts
2025-05-28 11:35:02 +02:00

51 lines
1.4 KiB
TypeScript

import {
integer,
sqliteTable,
text,
unique,
type AnySQLiteColumn,
} from 'drizzle-orm/sqlite-core'
export const haexSettings = sqliteTable('haex_settings', {
id: text().primaryKey(),
key: text(),
value: text(),
})
export const haexExtensions = sqliteTable('haex_extensions', {
id: text().primaryKey(),
name: text(),
author: text(),
enabled: integer({ mode: 'boolean' }),
icon: text(),
url: text(),
version: text(),
})
export const haexExtensionsPermissions = sqliteTable(
'haex_extensions_permissions',
{
id: text().primaryKey(),
extensionId: text('extension_id').references(
(): AnySQLiteColumn => haexExtensions.id,
),
resource: text({ enum: ['fs', 'http', 'db', 'shell'] }),
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