breadcrumps, todos, etc.

This commit is contained in:
2026-08-15 01:46:15 +02:00
parent b3afd64769
commit ea7cd45eed
11 changed files with 635 additions and 27 deletions
+31 -1
View File
@@ -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!