import { createDbService } from '@/server/services/db.js';
/**
 * Cron: TM Eviction — runs daily at 03:00 Asia/Jerusalem (01:00 UTC).
 *
 * Reads `translation_tm_ttl_days` from system_config (default 180) and
 * deletes stale translation-memory rows via `tmEvict`.
 */

import { withSentry } from '@/server/observability/with-sentry';
import { getSystemConfig } from '../../db/queries/system-config.js';
import type { CronEnv } from '../../cron/deal-expiry.js';
import { tmEvict } from './queries.js';

const DEFAULT_TTL_DAYS = 180;

export const runTmEviction = withSentry(
  async function runTmEviction(env: CronEnv): Promise<void> {
    const db = createDbService({ DATABASE_URL: env.DATABASE_URL });

    const ttlRaw = await getSystemConfig(db, 'translation_tm_ttl_days');
    const ttlDays = ttlRaw ? parseInt(ttlRaw, 10) : DEFAULT_TTL_DAYS;
    const olderThanDays = Number.isFinite(ttlDays) && ttlDays > 0 ? ttlDays : DEFAULT_TTL_DAYS;

    await tmEvict(db, { olderThanDays, minUsageCount: 1 });
  },
  { name: 'cron.tm-eviction', kind: 'cron' },
);
