Files
lunarfront-app/packages/backend/src/db/schema/settings.ts
Ryan Moon b8e39369f1
Some checks failed
Build & Release / build (push) Failing after 35s
feat: add app settings table, encryption utility, and generic email service
- app_settings table with encrypted field support (AES-256-GCM, key from ENCRYPTION_KEY env)
- SettingsService for transparent encrypt/decrypt on get/set
- EmailService factory with Resend and SendGrid providers (SMTP stub) — provider config lives in app_settings
- Seeds initial admin user and email settings from env vars on first startup if not already present
- Migration 0039_app_settings.sql

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 10:27:20 -05:00

14 lines
589 B
TypeScript

import { pgTable, varchar, text, boolean, timestamp } from 'drizzle-orm/pg-core'
export const appSettings = pgTable('app_settings', {
key: varchar('key', { length: 100 }).primaryKey(),
value: text('value'),
isEncrypted: boolean('is_encrypted').notNull().default(false),
iv: text('iv'),
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),
})
export type AppSetting = typeof appSettings.$inferSelect
export type AppSettingInsert = typeof appSettings.$inferInsert