cmap functions, email, architecture documentation.
This commit is contained in:
+68
-1
@@ -20,7 +20,7 @@
|
||||
;; Supporting functions
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define current-schema-version 9)
|
||||
(define current-schema-version 11)
|
||||
|
||||
(define schema-1-statements
|
||||
(list
|
||||
@@ -323,6 +323,67 @@ SQL
|
||||
"CREATE INDEX IF NOT EXISTS concept_maps_title_idx ON concept_maps(lower(title))")
|
||||
(record-schema-version! db 9))
|
||||
|
||||
(define (migrate-9->10! db)
|
||||
(query-exec db "ALTER TABLE users ADD COLUMN IF NOT EXISTS email TEXT")
|
||||
(query-exec db
|
||||
"CREATE UNIQUE INDEX IF NOT EXISTS users_email_unique_idx ON users(lower(email)) WHERE email IS NOT NULL")
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
CREATE TABLE IF NOT EXISTS password_reset_tokens (
|
||||
token_hash TEXT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at BIGINT NOT NULL,
|
||||
expires_at BIGINT NOT NULL,
|
||||
used_at BIGINT
|
||||
)
|
||||
SQL
|
||||
)
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
CREATE TABLE IF NOT EXISTS wiki_settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at BIGINT NOT NULL
|
||||
)
|
||||
SQL
|
||||
)
|
||||
(query-exec db
|
||||
"CREATE INDEX IF NOT EXISTS password_reset_tokens_user_idx ON password_reset_tokens(user_id, expires_at DESC)")
|
||||
(query-exec db
|
||||
"CREATE INDEX IF NOT EXISTS password_reset_tokens_expires_idx ON password_reset_tokens(expires_at)")
|
||||
(record-schema-version! db 10))
|
||||
|
||||
(define (migrate-10->11! db)
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
CREATE TABLE IF NOT EXISTS concept_map_versions (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
concept_map_id BIGINT NOT NULL REFERENCES concept_maps(id) ON DELETE CASCADE,
|
||||
version BIGINT NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
document JSONB NOT NULL,
|
||||
author TEXT NOT NULL,
|
||||
action TEXT NOT NULL,
|
||||
summary TEXT NOT NULL,
|
||||
created_at BIGINT NOT NULL,
|
||||
UNIQUE(concept_map_id, version)
|
||||
)
|
||||
SQL
|
||||
)
|
||||
(query-exec db
|
||||
"CREATE INDEX IF NOT EXISTS concept_map_versions_map_idx ON concept_map_versions(concept_map_id, version DESC)")
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
INSERT INTO concept_map_versions
|
||||
(concept_map_id, version, title, document, author, action, summary, created_at)
|
||||
SELECT id, current_version, title, document, updated_by, 'snapshot',
|
||||
'Current state when CMap history was enabled', updated_at
|
||||
FROM concept_maps
|
||||
ON CONFLICT (concept_map_id, version) DO NOTHING
|
||||
SQL
|
||||
)
|
||||
(record-schema-version! db 11))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Bring a racket-wiki PostgreSQL database to the current schema.
|
||||
; pre : db is a writable PostgreSQL connection and config identifies the
|
||||
@@ -361,6 +422,12 @@ SQL
|
||||
(define after-page-aliases (database-schema-version db))
|
||||
(when (= after-page-aliases 8)
|
||||
(migrate-8->9! db))
|
||||
(define after-concept-maps (database-schema-version db))
|
||||
(when (= after-concept-maps 9)
|
||||
(migrate-9->10! db))
|
||||
(define after-user-profiles (database-schema-version db))
|
||||
(when (= after-user-profiles 10)
|
||||
(migrate-10->11! db))
|
||||
(define resulting-version (database-schema-version db))
|
||||
(when (> resulting-version current-schema-version)
|
||||
(error 'migrate-database!
|
||||
|
||||
Reference in New Issue
Block a user