diff options
Diffstat (limited to 'src/guff')
-rw-r--r-- | src/guff/database-updater.cr | 114 | ||||
-rw-r--r-- | src/guff/migrations.cr | 4 |
2 files changed, 2 insertions, 116 deletions
diff --git a/src/guff/database-updater.cr b/src/guff/database-updater.cr index d472c50..74af005 100644 --- a/src/guff/database-updater.cr +++ b/src/guff/database-updater.cr @@ -2,8 +2,6 @@ require "./database" module Guff class DatabaseUpdater - CURRENT_VERSION = 2_i64 - SQL = { get_version: " SELECT value @@ -20,118 +18,6 @@ module Guff ", } - MIGRATIONS = [{ - id: "0-null", - backup: false, - sql: %w{}, - }, { - id: "1-create-tags-and-posts", - backup: false, - - sql: [%{ - CREATE TABLE metadata ( - name TEXT PRIMARY KEY, - value TEXT NOT NULL - ) - }, %{ - CREATE TABLE sites ( - -- site id - site_id INTEGER PRIMARY KEY, - - -- name of site - name TEXT UNIQUE NOT NULL - CHECK (LENGTH(name) > 0), - - -- is this the default site? - is_default BOOLEAN NOT NULL DEFAULT false - ) - }, %{ - INSERT INTO sites(name, is_default) VALUES ('Default', 1) - }, %{ - CREATE TABLE posts ( - -- unique id - post_id INTEGER PRIMARY KEY, - - site_id INTEGER NOT NULL - REFERENCES sites(site_id), - - -- false if this post has been deleted - is_active BOOLEAN NOT NULL - DEFAULT true, - - -- when this post was created - created_at TIMESTAMP WITH TIME ZONE - NOT NULL DEFAULT CURRENT_TIMESTAMP, - - -- when this post was posted - -- (that is, the draft status was removed) - posted_at TIMESTAMP WITH TIME ZONE - NOT NULL DEFAULT CURRENT_TIMESTAMP, - - -- title of post - name TEXT NOT NULL - CHECK (LENGTH(name) > 0), - - -- slug of post (url fragment) - slug TEXT NOT NULL - CHECK (LENGTH(slug) > 0), - - -- body (raw text before filters) - body TEXT NOT NULL - CHECK (LENGTH(body) > 0), - - -- generated html (after filters) - html TEXT NOT NULL - CHECK (LENGTH(html) > 0) - ) - }, %{ - CREATE INDEX in_posts_slug ON posts(slug) - }], - }, { - id: "2-create-tags", - backup: false, - - sql: [%{ - CREATE TABLE tags ( - tag_id INTEGER PRIMARY KEY, - name TEXT UNIQUE NOT NULL - ) - }, %{ - CREATE INDEX in_tags_name ON tags(name) - }, %{ - CREATE TABLE post_tags ( - tag_id INTEGER NOT NULL - REFERENCES tags(tag_id), - - post_id INTEGER NOT NULL - REFERENCES posts(post_id), - - UNIQUE(tag_id, post_id) - ) - }, %{ - CREATE INDEX in_post_tags_tag_id ON post_tags(tag_id) - }, %{ - CREATE INDEX in_post_tags_post_id ON post_tags(post_id) - }], - }, { - id: "3-create-domains", - backup: false, - - sql: [%{ - CREATE TABLE domains ( - -- domain - domain TEXT PRIMARY KEY CHECK ( - LENGTH(domain) > 0 AND - domain = LOWER(domain) - ), - - -- site id - site_id INTEGER NOT NULL - REFERENCES sites(site_id) - ) - }], - }] - def self.run(path, config) new(path, config).run end diff --git a/src/guff/migrations.cr b/src/guff/migrations.cr index aef1f27..0894aea 100644 --- a/src/guff/migrations.cr +++ b/src/guff/migrations.cr @@ -78,10 +78,10 @@ module Guff CREATE INDEX in_tags_name ON tags(name) }, %{ CREATE TABLE post_tags ( - tag_id INTEGER NOT NULL + tag_id INTEGER NOT NULL REFERENCES tags(tag_id), - post_id INTEGER NOT NULL + post_id INTEGER NOT NULL REFERENCES posts(post_id), UNIQUE(tag_id, post_id) |