38 lines
1.0 KiB
TypeScript
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 $$
|
|
`,
|
|
)
|
|
}
|