/**
 * Settings: Proposals query helpers — proposal-expiry-deadline (wave-12).
 *
 * Reads and writes the proposal_default_valid_days column on tenant_settings.
 */
import { eq } from 'drizzle-orm'
import type { Db } from '../client'
import { tenantSettings } from '../schema/tenants'

// ── Domain object type ────────────────────────────────────────────────────────

export interface ProposalSettingsObject {
  proposal_default_valid_days: number | null
}

// ── getProposalSettings ───────────────────────────────────────────────────────

export async function getProposalSettings(
  db: Db,
  tenantId: string,
): Promise<ProposalSettingsObject> {
  const [row] = await db
    .select({ proposalDefaultValidDays: tenantSettings.proposalDefaultValidDays })
    .from(tenantSettings)
    .where(eq(tenantSettings.tenantId, tenantId))
    .limit(1)

  return {
    proposal_default_valid_days: row?.proposalDefaultValidDays ?? null,
  }
}

// ── updateProposalSettings ────────────────────────────────────────────────────

export async function updateProposalSettings(
  db: Db,
  tenantId: string,
  input: { proposal_default_valid_days: number | null },
): Promise<ProposalSettingsObject> {
  await db
    .update(tenantSettings)
    .set({ proposalDefaultValidDays: input.proposal_default_valid_days })
    .where(eq(tenantSettings.tenantId, tenantId))

  return { proposal_default_valid_days: input.proposal_default_valid_days }
}
