Files

39 lines
2.2 KiB
SQL

-- FIX "Failed to publish" op locatie- en gewone pagina's (collecties `locaties` + `paginas`).
--
-- OORZAAK (deterministisch, geverifieerd): de setup-wizard maakte voor deze twee collecties
-- een FTS5-zoekindex aan als EXTERNE-CONTENT-tabel (`content='ec_locaties'`), met sync-triggers
-- op INSERT/UPDATE/DELETE. De UPDATE-trigger doet `DELETE FROM _emdash_fts_* WHERE rowid=OLD.rowid`.
-- Bij een externe-content FTS5-tabel herberekent die DELETE de oude termen door de bron-tabel te
-- lezen — maar tijdens AFTER UPDATE is die rij AL bijgewerkt, dus de index klopt niet meer en
-- SQLite gooit "database disk image is malformed". De hele UPDATE rolt terug.
--
-- Publiceren roept intern `syncDataColumns` aan = `UPDATE ec_locaties SET <kolommen>` → trigger
-- vuurt → fout → status wordt nooit 'published'. (De /maastricht-pagina staat alleen live omdat
-- die als 'published' is GESEED via een INSERT, dus nooit het UPDATE-pad raakte.) Lokaal 1-op-1
-- gereproduceerd met de exacte trigger-DDL: INSERT lukt, UPDATE faalt.
--
-- FIX: maak deze collecties non-searchable — net als alle ZELF-gegenereerde collecties
-- (over_ons/diensten/homepage/contact_page/voorwaarden), die bewust geen FTS hebben en wél
-- publiceren. We droppen de triggers + de FTS-virtualtabellen (incl. shadow-tabellen) en zetten
-- searchable=0. De frontend gebruikt geen full-text-search (routes halen op via slug); alleen de
-- admin-zoekbalk voor deze twee collecties valt weg. Pure DB-wijziging → geen redeploy nodig.
--
-- Toepassen op remote D1:
-- node node_modules/wrangler/bin/wrangler.js d1 execute helvoirt-db --remote --file migrations/0014_fix_publish_drop_fts.sql
DROP TRIGGER IF EXISTS "_emdash_fts_locaties_insert";
DROP TRIGGER IF EXISTS "_emdash_fts_locaties_update";
DROP TRIGGER IF EXISTS "_emdash_fts_locaties_delete";
DROP TABLE IF EXISTS "_emdash_fts_locaties";
DROP TRIGGER IF EXISTS "_emdash_fts_paginas_insert";
DROP TRIGGER IF EXISTS "_emdash_fts_paginas_update";
DROP TRIGGER IF EXISTS "_emdash_fts_paginas_delete";
DROP TABLE IF EXISTS "_emdash_fts_paginas";
UPDATE _emdash_fields
SET searchable = 0
WHERE collection_id IN (
SELECT id FROM _emdash_collections WHERE slug IN ('locaties', 'paginas')
);