/**
 * Drizzle ORM schema - Multideal (מולטידיל) database
 *
 * All 13 FDS data models + supporting tables.
 * snake_case column names (enforced by drizzle.config.ts casing: 'snake_case').
 * Every timestamp uses { withTimezone: true }.
 * Every enum uses pgEnum.
 *
 * PII columns (phone, email, address, token) are stored as encrypted text via pgcrypto.
 * Blind-index columns provide deterministic lookup without decryption.
 */

import { pgTable, uuid, integer, timestamp, check } from 'drizzle-orm/pg-core';
import { sql } from 'drizzle-orm';

import { users } from './core.js';

// ─── Platform Config ──────────────────────────────────────────────────────────

export const platformImageLimits = pgTable(
  'platform_image_limits',
  {
    id: integer('id').primaryKey().default(1),
    maxImagesPerDeal: integer('max_images_per_deal').notNull().default(10),
    maxImagesPerSku: integer('max_images_per_sku').notNull().default(10),
    updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
    updatedByUserId: uuid('updated_by_user_id').references(() => users.id),
  },
  (t) => [check('platform_image_limits_singleton', sql`${t.id} = 1`)],
);
