| 1 | /* -*-sql-*- |
| 2 | * |
| 3 | * Plain old SQL for setting up the tables for Odin web services. |
| 4 | */ |
| 5 | |
| 6 | /* The various tools assume that the database is appropriate configured with |
| 7 | * the SERIALIZABLE isolation level. |
| 8 | */ |
| 9 | |
| 10 | begin; |
| 11 | |
| 12 | drop table if exists odin_pastebin; |
| 13 | drop table if exists odin_pastebin_lang; |
| 14 | drop table if exists odin_pastebin_seq; |
| 15 | |
| 16 | create table odin_pastebin_lang |
| 17 | (lang varchar(32) primary key, |
| 18 | descr varchar(64) not null); |
| 19 | insert into odin_pastebin_lang (lang, descr) values ('txt', 'Plain text'); |
| 20 | |
| 21 | create table odin_pastebin_seq (seq int); |
| 22 | insert into odin_pastebin_seq (seq) values (10000); |
| 23 | |
| 24 | create table odin_pastebin |
| 25 | (tag varchar(16) primary key, |
| 26 | stamp bigint not null, |
| 27 | edithash varchar(128) not null, |
| 28 | owner varchar(64) not null, |
| 29 | title varchar(128) not null, |
| 30 | lang varchar(32) not null |
| 31 | default 'txt' |
| 32 | references odin_pastebin_lang (lang) |
| 33 | on update cascade |
| 34 | on delete set default |
| 35 | deferrable initially deferred, |
| 36 | content text not null); |
| 37 | create index odin_pastebin_by_lang on odin_pastebin (lang); |
| 38 | create index odin_pastebin_by_owner on odin_pastebin (owner); |
| 39 | |
| 40 | commit; |