19 lines
1.7 KiB
JavaScript
19 lines
1.7 KiB
JavaScript
import fs from 'node:fs';
|
|
import assert from 'node:assert/strict';
|
|
import {banquetDemo} from './trial-banquet-data.mjs';
|
|
const root=new URL('../../',import.meta.url);
|
|
const original=fs.readFileSync(new URL('trial-demo.sql',import.meta.url),'utf8');
|
|
const functionBlock=name=>original.slice(original.indexOf(`create or replace function public.${name}(`),original.indexOf('end $fn$;',original.indexOf(`create or replace function public.${name}(`))+10);
|
|
let status=functionBlock('caterium_trial_demo_status');
|
|
const oldStatus="'canInstall',coalesce(v_allowed,false) and v_empty and not v_installed";
|
|
assert.ok(status.includes(oldStatus));
|
|
status=status.replace(oldStatus,oldStatus+",'canUpgrade',coalesce(v_allowed,false) and v_installed and coalesce(v_storage#>>'{sunTrialDemoV1,v,banquetVersion}','')<>'1'");
|
|
let install=functionBlock('caterium_install_trial_demo');
|
|
assert.ok(install.includes('then return v_status; end if;'));
|
|
install=install.replace('then return v_status; end if;','then return public.caterium_install_trial_banquet(p_workspace); end if;')
|
|
.replace('return public.caterium_trial_demo_status(p_workspace);','return public.caterium_install_trial_banquet(p_workspace);');
|
|
const template=fs.readFileSync(new URL('trial-banquet.sql',import.meta.url),'utf8');
|
|
fs.writeFileSync(new URL('public/demo/banquet-v1.json',root),JSON.stringify(banquetDemo,null,2)+'\n');
|
|
fs.writeFileSync(new URL('supabase/migrations/20260918060000_trial_banquet.sql',root),template.replace('__BANQUET_JSON__',JSON.stringify(banquetDemo)).replace('__STATUS_FUNCTION__',status).replace('__INSTALL_FUNCTION__',install));
|
|
console.log(`Built ${banquetDemo.banquet.length} banquet dishes and ${banquetDemo.stock.length} additional stock products.`);
|