scribe-cms 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/runtime.js CHANGED
@@ -411,7 +411,7 @@ function seoFieldsFromEn(enDoc) {
411
411
  redirectTo: enDoc.redirectTo
412
412
  };
413
413
  }
414
- var SCHEMA_VERSION = 3;
414
+ var SCHEMA_VERSION = 4;
415
415
  var MIGRATIONS = [
416
416
  `CREATE TABLE IF NOT EXISTS meta (
417
417
  key TEXT PRIMARY KEY,
@@ -431,20 +431,6 @@ var MIGRATIONS = [
431
431
  )`,
432
432
  `CREATE INDEX IF NOT EXISTS idx_translations_type_locale
433
433
  ON translations(content_type, locale)`,
434
- `CREATE TABLE IF NOT EXISTS revisions (
435
- id INTEGER PRIMARY KEY AUTOINCREMENT,
436
- content_type TEXT NOT NULL,
437
- en_slug TEXT NOT NULL,
438
- locale TEXT,
439
- revision_kind TEXT NOT NULL,
440
- en_hash TEXT NOT NULL,
441
- body_hash TEXT NOT NULL,
442
- created_at TEXT NOT NULL,
443
- model TEXT,
444
- body_preview TEXT
445
- )`,
446
- `CREATE INDEX IF NOT EXISTS idx_revisions_lookup
447
- ON revisions(content_type, en_slug, locale, created_at DESC)`,
448
434
  `CREATE TABLE IF NOT EXISTS slug_aliases (
449
435
  content_type TEXT NOT NULL,
450
436
  canonical_en_slug TEXT NOT NULL,
@@ -461,7 +447,19 @@ var MIGRATIONS = [
461
447
  locale_slug TEXT NOT NULL,
462
448
  captured_at TEXT NOT NULL,
463
449
  PRIMARY KEY (content_type, alias_en_slug, locale)
464
- )`
450
+ )`,
451
+ `CREATE TABLE IF NOT EXISTS en_snapshots (
452
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
453
+ content_type TEXT NOT NULL,
454
+ en_slug TEXT NOT NULL,
455
+ en_hash TEXT NOT NULL,
456
+ frontmatter_json TEXT NOT NULL,
457
+ body TEXT NOT NULL,
458
+ created_at TEXT NOT NULL,
459
+ UNIQUE (content_type, en_slug, en_hash)
460
+ )`,
461
+ `CREATE INDEX IF NOT EXISTS idx_en_snapshots_lookup
462
+ ON en_snapshots(content_type, en_slug, created_at DESC)`
465
463
  ];
466
464
  function resolveStorePath(config) {
467
465
  return config.storePath;
@@ -483,12 +481,19 @@ function addColumnIfMissing(db, table, column, ddlType) {
483
481
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${ddlType}`);
484
482
  }
485
483
  }
484
+ function readSchemaVersion(db) {
485
+ const row = db.prepare(`SELECT value FROM meta WHERE key = 'schema_version'`).get();
486
+ return row ? Number.parseInt(row.value, 10) || 0 : 0;
487
+ }
486
488
  function migrate(db) {
489
+ const previousVersion = readSchemaVersion(db);
487
490
  for (const sql of MIGRATIONS) {
488
491
  db.exec(sql);
489
492
  }
490
- addColumnIfMissing(db, "revisions", "frontmatter_json", "TEXT");
491
- addColumnIfMissing(db, "revisions", "body", "TEXT");
493
+ if (previousVersion < 4) {
494
+ db.exec(`DROP TABLE IF EXISTS revisions`);
495
+ }
496
+ addColumnIfMissing(db, "translations", "snapshot_id", "INTEGER");
492
497
  db.prepare(
493
498
  `INSERT INTO meta(key, value) VALUES('schema_version', ?)
494
499
  ON CONFLICT(key) DO UPDATE SET value = excluded.value`