Files
Moniki_uslugi/apps/cms/src/lib/ensure-services-schema.ts
T

38 lines
1.0 KiB
TypeScript

import { sql } from '@payloadcms/db-postgres'
import type { Payload } from 'payload'
type DrizzleAdapter = {
drizzle: { execute: (query: unknown) => Promise<unknown> }
}
async function exec(payload: Payload, query: unknown) {
const adapter = payload.db as DrizzleAdapter
await adapter.drizzle.execute(query)
}
export async function ensureServicesSchema(payload: Payload) {
await exec(payload, sql`ALTER TABLE services_locales ADD COLUMN IF NOT EXISTS group_title character varying`)
await exec(
payload,
sql`
DO $$ BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'services'
AND column_name = 'group_title'
) THEN
UPDATE services_locales AS sl
SET group_title = s.group_title
FROM services AS s
WHERE sl._parent_id = s.id
AND sl._locale = 'ru'
AND (sl.group_title IS NULL OR sl.group_title = '')
AND s.group_title IS NOT NULL;
END IF;
END $$
`,
)
}