pastebin/migrations/2019-02-20-235122_create_pastes/up.sql
2019-03-02 17:35:05 +01:00

50 lines
1.6 KiB
SQL

CREATE TABLE languages (
language_id serial PRIMARY KEY,
priority int NOT NULL,
name text NOT NULL,
highlighter_mode text,
mime text NOT NULL
);
INSERT INTO languages(priority, name, highlighter_mode, mime) VALUES
(0, 'Plain text', NULL, 'text/plain'),
(10, 'C', 'clike', 'text/x-csrc'),
(10, 'C++', 'clike', 'text/x-c++src'),
(10, 'C#', 'clike', 'text/x-csharp'),
(10, 'Haskell', 'haskell', 'text/x-haskell'),
(10, 'Java', 'clike', 'text/x-java'),
(10, 'JavaScript', 'javascript', 'text/javascript'),
(10, 'Jinja2', 'jinja2', 'text/jinja2'),
(10, 'JSX', 'jsx', 'text/jsx'),
(10, 'Markdown', 'markdown', 'text/x-markdown'),
(10, 'Perl', 'perl', 'text/x-perl'),
(10, 'Python 2', 'python', 'text/x-python'),
(10, 'Python 3', 'python', 'text/x-python'),
(10, 'Rust', 'rust', 'text/x-rustsrc'),
(10, 'SQL', 'sql', 'text/x-sql'),
(10, 'SQLite', 'sql', 'text/x-sqlite'),
(10, 'TypeScript', 'javascript', 'application/typescript'),
(10, 'TypeScript-JSX', 'jsx', 'text/typescript-jsx');
CREATE TABLE pastes (
paste_id serial PRIMARY KEY,
identifier text NOT NULL UNIQUE
);
CREATE TABLE paste_revisions (
paste_revision_id serial PRIMARY KEY,
created_at timestamp with time zone NOT NULL DEFAULT now(),
paste_id int NOT NULL REFERENCES pastes
);
CREATE INDEX ON paste_revisions(paste_id, created_at DESC);
CREATE TABLE paste_contents (
paste_content_id serial PRIMARY KEY,
paste_revision_id int NOT NULL REFERENCES paste_revisions,
language_id int NOT NULL REFERENCES languages,
paste text NOT NULL
);
CREATE INDEX ON paste_contents(paste_revision_id);