mirror of
https://github.com/Lumither/nocturne.git
synced 2026-10-17 10:26:21 +00:00
feat(migration) add migration
This commit is contained in:
9 files changed
+84
-22
No files matched your search
@@ -0,0 +1,66 @@
|
||||
CREATE TABLE tags
|
||||
(
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(20) UNIQUE NOT NULL,
|
||||
description TEXT DEFAULT ''
|
||||
);
|
||||
|
||||
CREATE TABLE categories
|
||||
(
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(20) UNIQUE NOT NULL,
|
||||
description TEXT DEFAULT ''
|
||||
);
|
||||
|
||||
CREATE TABLE post_status
|
||||
(
|
||||
name VARCHAR(20) PRIMARY KEY
|
||||
);
|
||||
|
||||
INSERT INTO post_status (name)
|
||||
VALUES ('draft'),
|
||||
('published'),
|
||||
('planned'),
|
||||
('hidden');
|
||||
|
||||
CREATE TABLE posts
|
||||
(
|
||||
id UUID PRIMARY KEY,
|
||||
identifier VARCHAR(100) UNIQUE NOT NULL,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
subtitle VARCHAR(255) NOT NULL,
|
||||
date_created DATE NOT NULL,
|
||||
date_updated DATE,
|
||||
status VARCHAR(20) REFERENCES post_status (name) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
hash VARCHAR(44) NOT NULL,
|
||||
category INTEGER REFERENCES categories (id) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE post_tag
|
||||
(
|
||||
post UUID REFERENCES posts (id) ON DELETE CASCADE,
|
||||
tag INTEGER REFERENCES tags (id) ON DELETE CASCADE,
|
||||
|
||||
CONSTRAINT post_tag_pk PRIMARY KEY (post, tag)
|
||||
);
|
||||
|
||||
CREATE TABLE metadata
|
||||
(
|
||||
pid UUID REFERENCES posts (id) ON DELETE CASCADE NOT NULL,
|
||||
meta_key VARCHAR(50) NOT NULL,
|
||||
meta_value TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT metadata_pk PRIMARY KEY (pid, meta_key)
|
||||
);
|
||||
|
||||
-- index
|
||||
CREATE INDEX idx_tags_name ON tags (name);
|
||||
CREATE INDEX idx_categories_name ON categories (name);
|
||||
CREATE INDEX idx_posts_identifier ON posts (identifier);
|
||||
CREATE INDEX idx_posts_status ON posts (status);
|
||||
CREATE INDEX idx_posts_category ON posts (category);
|
||||
CREATE INDEX idx_posts_date_created ON posts (date_created);
|
||||
CREATE INDEX idx_post_tag_post ON post_tag (post);
|
||||
CREATE INDEX idx_post_tag_tag ON post_tag (tag);
|
||||
CREATE INDEX idx_metadata_pid ON metadata (pid);
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
PGPASSFILE="/root/.pgpass"
|
||||
echo "postgres:5432:${POSTGRES_DB}:${POSTGRES_USER}:${POSTGRES_PASSWORD}" > "$PGPASSFILE"
|
||||
chmod 600 "$PGPASSFILE"
|
||||
|
||||
echo "waiting for postgres"
|
||||
until pg_isready -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB"; do
|
||||
echo "retrying, sleep 2s"
|
||||
sleep 2
|
||||
done
|
||||
echo "db ready, running migrations"
|
||||
for file in /migrations/*.sql; do
|
||||
echo "applying $file"
|
||||
psql -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB" -f "$file"
|
||||
done
|
||||
echo "migration complete"
|
||||
Reference in new issue
Block a user