Bettern cmap handling. Lots of changes.

This commit is contained in:
2026-08-17 23:06:23 +02:00
parent 8997f7f94a
commit 12f1ed2764
27 changed files with 10351 additions and 217 deletions
+49 -1
View File
@@ -20,7 +20,7 @@
;; Supporting functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define current-schema-version 7)
(define current-schema-version 9)
(define schema-1-statements
(list
@@ -281,6 +281,48 @@ SQL
(query-exec db "CREATE INDEX IF NOT EXISTS pages_namespace_idx ON pages(lower(namespace), lower(title), title)")
(record-schema-version! db 7))
(define (migrate-7->8! db)
(query-exec db
#<<SQL
CREATE TABLE IF NOT EXISTS page_aliases (
id BIGSERIAL PRIMARY KEY,
namespace TEXT NOT NULL DEFAULT '',
slug TEXT NOT NULL,
title TEXT NOT NULL,
page_id BIGINT NOT NULL REFERENCES pages(id) ON DELETE CASCADE,
created_at BIGINT NOT NULL,
created_by TEXT NOT NULL,
UNIQUE(namespace, slug)
)
SQL
)
(query-exec db
"CREATE INDEX IF NOT EXISTS page_aliases_page_idx ON page_aliases(page_id, created_at DESC)")
(record-schema-version! db 8))
(define (migrate-8->9! db)
(query-exec db
#<<SQL
CREATE TABLE IF NOT EXISTS concept_maps (
id BIGSERIAL PRIMARY KEY,
slug TEXT NOT NULL UNIQUE,
title TEXT NOT NULL,
document JSONB NOT NULL,
current_version BIGINT NOT NULL DEFAULT 1,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
created_by TEXT NOT NULL,
updated_by TEXT NOT NULL,
archived BOOLEAN NOT NULL DEFAULT FALSE,
archived_at BIGINT,
archived_by TEXT
)
SQL
)
(query-exec db
"CREATE INDEX IF NOT EXISTS concept_maps_title_idx ON concept_maps(lower(title))")
(record-schema-version! db 9))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; goal : Bring a racket-wiki PostgreSQL database to the current schema.
; pre : db is a writable PostgreSQL connection and config identifies the
@@ -313,6 +355,12 @@ SQL
(define after-attachment-references (database-schema-version db))
(when (= after-attachment-references 6)
(migrate-6->7! db))
(define after-namespaces (database-schema-version db))
(when (= after-namespaces 7)
(migrate-7->8! db))
(define after-page-aliases (database-schema-version db))
(when (= after-page-aliases 8)
(migrate-8->9! db))
(define resulting-version (database-schema-version db))
(when (> resulting-version current-schema-version)
(error 'migrate-database!