Browse Source

improve schema, cascade, unique

pull/1619/head
Bernd Storath 3 months ago
parent
commit
8704d2ae77
  1. 3
      src/services/database/schema/general.ts
  2. 5
      src/services/database/schema/hooks.ts
  3. 4
      src/services/database/schema/interface.ts
  4. 5
      src/services/database/schema/metrics.ts
  5. 2
      src/services/database/schema/oneTimeLinks.ts
  6. 5
      src/services/database/schema/userConfig.ts

3
src/services/database/schema/general.ts

@ -2,7 +2,8 @@ import { sql } from 'drizzle-orm';
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core';
export const general = sqliteTable('general_table', {
id: int().primaryKey({ autoIncrement: true }),
// limit to one entry
id: int().primaryKey({ autoIncrement: false }).default(1),
sessionTimeout: int('session_timeout').notNull(),
createdAt: text('created_at')
.notNull()

5
src/services/database/schema/hooks.ts

@ -6,7 +6,10 @@ import { wgInterface } from './interface';
export const hooks = sqliteTable('hooks_table', {
id: int()
.primaryKey({ autoIncrement: true })
.references(() => wgInterface.id),
.references(() => wgInterface.id, {
onDelete: 'cascade',
onUpdate: 'cascade',
}),
preUp: text('pre_up').notNull(),
postUp: text('post_up').notNull(),
preDown: text('pre_down').notNull(),

4
src/services/database/schema/interface.ts

@ -8,8 +8,8 @@ import { prometheus } from './metrics';
// maybe support multiple interfaces in the future
export const wgInterface = sqliteTable('interface_table', {
id: int().primaryKey({ autoIncrement: true }),
device: text().notNull(),
port: int().notNull(),
device: text().notNull().unique(),
port: int().notNull().unique(),
privateKey: text('private_key').notNull(),
publicKey: text('public_key').notNull(),
ipv4Cidr: text('ipv4_cidr').notNull(),

5
src/services/database/schema/metrics.ts

@ -6,7 +6,10 @@ import { wgInterface } from './interface';
export const prometheus = sqliteTable('prometheus_table', {
id: int()
.primaryKey({ autoIncrement: true })
.references(() => wgInterface.id),
.references(() => wgInterface.id, {
onDelete: 'cascade',
onUpdate: 'cascade',
}),
password: text().notNull(),
createdAt: text('created_at')
.notNull()

2
src/services/database/schema/oneTimeLinks.ts

@ -9,7 +9,7 @@ export const oneTimeLinks = sqliteTable('one_time_links_table', {
expiresAt: text('expires_at').notNull(),
clientId: int()
.notNull()
.references(() => clients.id),
.references(() => clients.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
createdAt: text('created_at')
.notNull()
.default(sql`(CURRENT_TIMESTAMP)`),

5
src/services/database/schema/userConfig.ts

@ -7,7 +7,10 @@ import { wgInterface } from './interface';
export const userConfig = sqliteTable('user_config_table', {
id: int()
.primaryKey({ autoIncrement: true })
.references(() => wgInterface.id),
.references(() => wgInterface.id, {
onDelete: 'cascade',
onUpdate: 'cascade',
}),
defaultMtu: int('default_mtu').notNull(),
defaultPersistentKeepalive: int('default_persistent_keepalive').notNull(),
defaultDns: text('default_dns', { mode: 'json' }).$type<string[]>().notNull(),

Loading…
Cancel
Save