import { z } from 'zod'
import { baseEnv, databaseEnv, featureEnv, loadEnv, magentoEnv } from '@znet/shared'

export const syncEnv = baseEnv.extend(databaseEnv.shape).extend(magentoEnv.shape).extend(featureEnv.shape).extend({
  /** Cron expressions (evaluated in SYNC_TIMEZONE). */
  SYNC_CRON_REFERENCE: z.string().default('7 * * * *'),
  /** Changed products (admin saves, API, imports all bump updated_at). Cheap when nothing changed. */
  SYNC_CRON_PRODUCTS: z.string().default('*/2 * * * *'),
  SYNC_CRON_INVENTORY: z.string().default('*/10 * * * *'),
  /** Full sweep: catches deletions and mass attribute updates (which don't bump updated_at). */
  SYNC_CRON_FULL: z.string().default('15 * * * *'),
  SYNC_TIMEZONE: z.string().default('Europe/London'),
  /** Apply migrations at startup. Set false when running as the restricted mcp_sync role (compose runs `migrate` first). */
  MIGRATE_ON_START: z.enum(['true', 'false']).default('true').transform(v => v === 'true'),
})

export type SyncEnv = z.infer<typeof syncEnv>
export const loadSyncEnv = () => loadEnv(syncEnv)
