breadcrumps, todos, etc.
This commit is contained in:
+31
-1
@@ -11,7 +11,7 @@
|
||||
database-schema-version
|
||||
migrate-database!)
|
||||
|
||||
(define current-schema-version 3)
|
||||
(define current-schema-version 5)
|
||||
|
||||
(define schema-1-statements
|
||||
(list
|
||||
@@ -215,6 +215,30 @@ SQL
|
||||
(replace-page-todos! db (vector-ref row 0) (vector-ref row 1)))
|
||||
(record-schema-version! db 3))
|
||||
|
||||
|
||||
(define (migrate-3->4! db)
|
||||
(query-exec db
|
||||
#<<SQL
|
||||
CREATE TABLE IF NOT EXISTS bookmarks (
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
page_id BIGINT NOT NULL REFERENCES pages(id) ON DELETE CASCADE,
|
||||
section TEXT NOT NULL DEFAULT '',
|
||||
position INTEGER NOT NULL DEFAULT 0,
|
||||
created_at BIGINT NOT NULL,
|
||||
PRIMARY KEY(user_id, page_id)
|
||||
)
|
||||
SQL
|
||||
)
|
||||
(query-exec db
|
||||
"CREATE INDEX IF NOT EXISTS bookmarks_user_idx ON bookmarks(user_id, section, position, created_at)")
|
||||
(record-schema-version! db 4))
|
||||
|
||||
(define (migrate-4->5! db)
|
||||
(for ((row (in-list (query-rows db "SELECT id, markdown FROM pages WHERE archived = FALSE"))))
|
||||
(replace-page-todos! db (vector-ref row 0) (vector-ref row 1)))
|
||||
(record-schema-version! db 5))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Bring a racket-wiki PostgreSQL database to the current schema.
|
||||
; pre : db is a writable PostgreSQL connection and config identifies the
|
||||
@@ -235,6 +259,12 @@ SQL
|
||||
(define after-attachments (database-schema-version db))
|
||||
(when (= after-attachments 2)
|
||||
(migrate-2->3! db))
|
||||
(define after-todos (database-schema-version db))
|
||||
(when (= after-todos 3)
|
||||
(migrate-3->4! db))
|
||||
(define after-bookmarks (database-schema-version db))
|
||||
(when (= after-bookmarks 4)
|
||||
(migrate-4->5! db))
|
||||
(define resulting-version (database-schema-version db))
|
||||
(when (> resulting-version current-schema-version)
|
||||
(error 'migrate-database!
|
||||
|
||||
Reference in New Issue
Block a user