aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/guff/database-updater.cr114
-rw-r--r--src/guff/migrations.cr4
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)