import { PrismaClient } from '@prisma/client' /** * Ensure new.gholaktala.ir stays Khanegi modular (not Hamkar). * set -a && . ./.env && set +a && node scripts/fix-gholaktala-to-khanegi.mjs --apply */ const prisma = new PrismaClient() const APPLY = process.argv.includes('--apply') const DOMAIN = 'new.gholaktala.ir' function bumpAppVersion(current) { const v = String(current || '1').trim() || '1' if (/^\d+$/.test(v)) return String(Number(v) + 1) const semver = v.match(/^(\d+)\.(\d+)\.(\d+)$/) if (semver) return `${semver[1]}.${semver[2]}.${Number(semver[3]) + 1}` return String(Date.now()) } async function main() { const tenants = await prisma.tenant.findMany({ where: { OR: [ { domain: { equals: DOMAIN, mode: 'insensitive' } }, { domains: { string_contains: DOMAIN } }, { domain: { contains: 'gholaktala', mode: 'insensitive' } }, ], }, select: { id: true, nameFa: true, domain: true, product: true, uiVariant: true, appVersion: true, notes: true, }, }) console.log('MATCHES', JSON.stringify(tenants, null, 2)) const tenant = tenants.find((t) => String(t.domain).toLowerCase() === DOMAIN) || tenants[0] if (!tenant) throw new Error(`Tenant not found for ${DOMAIN}`) const alreadyOk = tenant.product === 'khanegi' && String(tenant.uiVariant || 'modular') !== 'newTheme' console.log('SELECTED', { ...tenant, alreadyOk, expected: { product: 'khanegi', uiVariant: 'modular', frontend: 'userModular', api: '/api/get_settings' }, }) if (!APPLY) { console.log('DRY_RUN — re-run with --apply to force product=khanegi uiVariant=modular') return } if (alreadyOk && tenant.product === 'khanegi') { const updated = await prisma.tenant.update({ where: { id: tenant.id }, data: { product: 'khanegi', uiVariant: 'modular', notes: [ String(tenant.notes || '') .replace(/\s*\|\s*product=hamkar[^\|]*/g, '') .trim(), 'product=khanegi modular (confirmed)', ] .filter(Boolean) .join(' | '), }, }) console.log('CONFIRMED', { id: updated.id, product: updated.product, uiVariant: updated.uiVariant, appVersion: updated.appVersion, }) return } const updated = await prisma.tenant.update({ where: { id: tenant.id }, data: { product: 'khanegi', uiVariant: 'modular', appVersion: bumpAppVersion(tenant.appVersion), notes: [ String(tenant.notes || '') .replace(/\s*\|\s*product=hamkar[^\|]*/g, '') .trim(), 'product=khanegi modular (restored; not hamkar)', ] .filter(Boolean) .join(' | '), }, }) console.log('UPDATED', { id: updated.id, product: updated.product, uiVariant: updated.uiVariant, appVersion: updated.appVersion, }) } main() .catch((e) => { console.error(e) process.exitCode = 1 }) .finally(async () => { await prisma.$disconnect() })