namespaces added and documentation
This commit is contained in:
+24
-1
@@ -1,5 +1,9 @@
|
||||
#lang racket/base
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Ordered PostgreSQL schema migrations for existing wiki databases.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(require db
|
||||
racket/file
|
||||
racket/path
|
||||
@@ -12,7 +16,11 @@
|
||||
database-schema-version
|
||||
migrate-database!)
|
||||
|
||||
(define current-schema-version 6)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Supporting functions
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define current-schema-version 7)
|
||||
|
||||
(define schema-1-statements
|
||||
(list
|
||||
@@ -242,6 +250,9 @@ SQL
|
||||
|
||||
|
||||
(define (migrate-5->6! db)
|
||||
;; Namespace is added here as well so a fresh migration chain can rebuild
|
||||
;; attachment URLs before schema 7 creates the namespace indexes.
|
||||
(query-exec db "ALTER TABLE pages ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT ''")
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
CREATE TABLE IF NOT EXISTS attachment_references (
|
||||
@@ -261,6 +272,15 @@ SQL
|
||||
(rebuild-attachment-references! db)
|
||||
(record-schema-version! db 6))
|
||||
|
||||
|
||||
|
||||
(define (migrate-6->7! db)
|
||||
(query-exec db "ALTER TABLE pages ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT ''")
|
||||
(query-exec db "ALTER TABLE pages DROP CONSTRAINT IF EXISTS pages_slug_key")
|
||||
(query-exec db "CREATE UNIQUE INDEX IF NOT EXISTS pages_namespace_slug_idx ON pages(namespace, slug)")
|
||||
(query-exec db "CREATE INDEX IF NOT EXISTS pages_namespace_idx ON pages(lower(namespace), lower(title), title)")
|
||||
(record-schema-version! db 7))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Bring a racket-wiki PostgreSQL database to the current schema.
|
||||
; pre : db is a writable PostgreSQL connection and config identifies the
|
||||
@@ -290,6 +310,9 @@ SQL
|
||||
(define after-todo-reindex (database-schema-version db))
|
||||
(when (= after-todo-reindex 5)
|
||||
(migrate-5->6! db))
|
||||
(define after-attachment-references (database-schema-version db))
|
||||
(when (= after-attachment-references 6)
|
||||
(migrate-6->7! db))
|
||||
(define resulting-version (database-schema-version db))
|
||||
(when (> resulting-version current-schema-version)
|
||||
(error 'migrate-database!
|
||||
|
||||
Reference in New Issue
Block a user