Files
cms-SiteForge/scripts/verify_pg_bootstrap.py
T

21 lines
1.2 KiB
Python
Raw Normal View History

"""PostgreSQL bootstrap smoke: execute only in a throwaway database."""
import os
if not os.getenv('SITEFORGE_DATABASE_URL','').startswith(('postgresql://','postgres://')):
raise SystemExit('Please set SITEFORGE_DATABASE_URL to a disposable PostgreSQL database')
from app import db,enterprise,factory_api,migration_audit,reusables,release_api,jobs
from app.core import save_entry
import uuid
db.init();enterprise.setup();factory_api.setup();migration_audit.setup();reusables.setup();release_api.setup()
sid=uuid.uuid4().hex[:16]
with db.connect() as c:
c.execute('INSERT INTO sites(id,name,domain,created_at,updated_at) VALUES (?,?,?,?,?)',(sid,'PG Smoke','','2026-01-01','2026-01-01'))
c.execute('INSERT INTO entries(id,site_id,type,title,route,slug,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?)',
(uuid.uuid4().hex[:16],sid,'page','Home','/','home','2026-01-01','2026-01-01'))
assert db.one('SELECT id FROM sites WHERE id=?',(sid,))['id']==sid
job=jobs.submit(sid,{'mirror_images':False},'pg-smoke','pg-smoke-unique-0001')
assert job['state']=='queued'
assert jobs.cancel(sid,job['id'])['state']=='cancelled'
with db.connect() as c:c.execute('DELETE FROM sites WHERE id=?',(sid,))
print('PostgreSQL schema, CRUD, job submit, cancel smoke passed')