All files / web/src/db/schema feature-flag-overrides.ts

100% Statements 33/33
100% Branches 1/1
100% Functions 0/0
100% Lines 33/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 342x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x  
import { integer, primaryKey, sqliteTable, text } from 'drizzle-orm/sqlite-core'
 
/**
 * Per-user feature flag overrides
 *
 * Allows admins to enable/disable flags for specific users,
 * independent of the global flag state. Used for testing features
 * with individual accounts before rolling out globally.
 */
export const featureFlagOverrides = sqliteTable(
  'feature_flag_overrides',
  {
    /** The flag key (references feature_flags.key) */
    flagKey: text('flag_key').notNull(),
 
    /** The user ID to override for */
    userId: text('user_id').notNull(),
 
    /** Override enabled value */
    enabled: integer('enabled', { mode: 'boolean' }).notNull().default(true),
 
    /** Optional override config JSON (null = inherit global config) */
    config: text('config'),
 
    createdAt: integer('created_at', { mode: 'timestamp' }).notNull(),
 
    updatedAt: integer('updated_at', { mode: 'timestamp' }).notNull(),
  },
  (table) => [primaryKey({ columns: [table.flagKey, table.userId] })]
)
 
export type FeatureFlagOverride = typeof featureFlagOverrides.$inferSelect
export type NewFeatureFlagOverride = typeof featureFlagOverrides.$inferInsert