| rev | line source | 
| jbe/bsw@0 | 1 -- only needed for database driven tempstore (see application config) | 
| jbe/bsw@0 | 2 CREATE TABLE "tempstore" ( | 
| jbe/bsw@0 | 3         "key"           TEXT            PRIMARY KEY, | 
| jbe/bsw@0 | 4         "data"          BYTEA           NOT NULL ); | 
| jbe/bsw@0 | 5 | 
| jbe/bsw@0 | 6 -- Attention: USER is a reserved word in PostgreSQL. We use it anyway in | 
| jbe/bsw@0 | 7 -- this example. Don't forget the double quotes where neccessary. | 
| jbe/bsw@0 | 8 CREATE TABLE "user" ( | 
| jbe/bsw@0 | 9         "id"            SERIAL8         PRIMARY KEY, | 
| jbe/bsw@0 | 10         "ident"         TEXT            NOT NULL, | 
| jbe/bsw@0 | 11         "password"      TEXT, | 
| jbe/bsw@0 | 12         "name"          TEXT, | 
| jbe/bsw@0 | 13         "lang"          TEXT, | 
| jbe/bsw@0 | 14         "write_priv"    BOOLEAN         NOT NULL DEFAULT FALSE, | 
| jbe/bsw@0 | 15         "admin"         BOOLEAN         NOT NULL DEFAULT FALSE ); | 
| jbe/bsw@0 | 16 | 
| jbe/bsw@0 | 17 CREATE TABLE "session" ( | 
| jbe/bsw@0 | 18         "ident"         TEXT            PRIMARY KEY, | 
| jbe/bsw@0 | 19         "csrf_secret"   TEXT            NOT NULL, | 
| jbe/bsw@0 | 20         "expiry"        TIMESTAMPTZ     NOT NULL DEFAULT NOW() + '24 hours', | 
| jbe/bsw@0 | 21         "user_id"       INT8            REFERENCES "user" ("id") ON DELETE SET NULL ON UPDATE CASCADE ); | 
| jbe/bsw@0 | 22 | 
| jbe/bsw@0 | 23 CREATE TABLE "media_type" ( | 
| jbe/bsw@0 | 24         "id"            SERIAL8         PRIMARY KEY, | 
| jbe/bsw@0 | 25         "name"          TEXT            NOT NULL, | 
| jbe/bsw@0 | 26         "description"   TEXT ); | 
| jbe/bsw@0 | 27 | 
| jbe/bsw@0 | 28 CREATE TABLE "genre" ( | 
| jbe/bsw@0 | 29         "id"            SERIAL8         PRIMARY KEY, | 
| jbe/bsw@0 | 30         "name"          TEXT            NOT NULL, | 
| jbe/bsw@0 | 31         "description"   TEXT ); | 
| jbe/bsw@0 | 32 | 
| jbe/bsw@0 | 33 CREATE TABLE "medium" ( | 
| jbe/bsw@0 | 34         "id"            SERIAL8         PRIMARY KEY, | 
| jbe/bsw@0 | 35         "media_type_id" INT8            NOT NULL REFERENCES "media_type" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, | 
| jbe/bsw@0 | 36         "name"          TEXT            NOT NULL, | 
| jbe/bsw@0 | 37         "copyprotected" BOOLEAN         NOT NULL ); | 
| jbe/bsw@0 | 38 | 
| jbe/bsw@0 | 39 CREATE TABLE "classification" ( | 
| jbe/bsw@0 | 40         PRIMARY KEY ("medium_id", "genre_id"), | 
| jbe/bsw@0 | 41         "medium_id"     INT8            REFERENCES "medium" ("id") ON DELETE CASCADE ON UPDATE CASCADE, | 
| jbe/bsw@0 | 42         "genre_id"      INT8            REFERENCES "genre" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); | 
| jbe/bsw@0 | 43 | 
| jbe/bsw@0 | 44 CREATE TABLE "track" ( | 
| jbe/bsw@0 | 45         "id"            SERIAL8         PRIMARY KEY, | 
| jbe/bsw@0 | 46         "medium_id"     INT8            NOT NULL REFERENCES "medium" ("id") ON DELETE CASCADE ON UPDATE CASCADE, | 
| jbe/bsw@0 | 47         "position"      INT8            NOT NULL, | 
| jbe/bsw@0 | 48         "name"          TEXT            NOT NULL, | 
| jbe/bsw@0 | 49         "description"   TEXT, | 
| jbe/bsw@0 | 50         "duration"      INTERVAL, | 
| jbe/bsw@0 | 51         UNIQUE ("medium_id", "position") ); | 
| jbe/bsw@0 | 52 | 
| jbe/bsw@0 | 53 INSERT INTO "user" ("ident", "password", "name", "write_priv", "admin") | 
| jbe/bsw@0 | 54   VALUES ('admin', 'admin', 'Administrator', true, true); | 
| jbe/bsw@0 | 55 | 
| jbe/bsw@0 | 56 INSERT INTO "user" ("ident", "password", "name", "write_priv", "admin") | 
| jbe/bsw@0 | 57   VALUES ('user', 'User', 'User', true, false); | 
| jbe/bsw@0 | 58 | 
| jbe/bsw@0 | 59 INSERT INTO "user" ("ident", "password", "name", "write_priv", "admin") | 
| jbe/bsw@0 | 60   VALUES ('anon', 'anon', 'Anonymous', false, false); | 
| jbe/bsw@0 | 61 | 
| jbe/bsw@0 | 62 INSERT INTO "media_type" ("name", "description") VALUES ('CD', ''); | 
| jbe/bsw@0 | 63 INSERT INTO "media_type" ("name", "description") VALUES ('Tape', ''); | 
| jbe/bsw@0 | 64 | 
| jbe/bsw@0 | 65 INSERT INTO "genre" ("name", "description") VALUES ('Klassik', ''); | 
| jbe/bsw@0 | 66 INSERT INTO "genre" ("name", "description") VALUES ('Gospel', ''); | 
| jbe/bsw@0 | 67 INSERT INTO "genre" ("name", "description") VALUES ('Jazz', ''); | 
| jbe/bsw@0 | 68 INSERT INTO "genre" ("name", "description") VALUES ('Traditional', ''); | 
| jbe/bsw@0 | 69 INSERT INTO "genre" ("name", "description") VALUES ('Latin', ''); | 
| jbe/bsw@0 | 70 INSERT INTO "genre" ("name", "description") VALUES ('Blues', ''); | 
| jbe/bsw@0 | 71 INSERT INTO "genre" ("name", "description") VALUES ('Rhythm & blues', ''); | 
| jbe/bsw@0 | 72 INSERT INTO "genre" ("name", "description") VALUES ('Funk', ''); | 
| jbe/bsw@0 | 73 INSERT INTO "genre" ("name", "description") VALUES ('Rock', ''); | 
| jbe/bsw@0 | 74 INSERT INTO "genre" ("name", "description") VALUES ('Pop', ''); | 
| jbe/bsw@0 | 75 INSERT INTO "genre" ("name", "description") VALUES ('Country', ''); | 
| jbe/bsw@0 | 76 INSERT INTO "genre" ("name", "description") VALUES ('Electronic', ''); | 
| jbe/bsw@0 | 77 INSERT INTO "genre" ("name", "description") VALUES ('Ska / Reggea', ''); | 
| jbe/bsw@0 | 78 INSERT INTO "genre" ("name", "description") VALUES ('Hip hop / Rap', ''); | 
| jbe/bsw@0 | 79 |