]> git.sesse.net Git - pr0n/blob - sql/pr0n.sql
Make some sorely needed changes to the SQL schema, and update the code
[pr0n] / sql / pr0n.sql
1 CREATE TABLE events (
2     event character varying NOT NULL,
3     "date" character varying NOT NULL,
4     name character varying NOT NULL,
5     vhost character varying NOT NULL,
6     last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
7
8     PRIMARY KEY (vhost, event)
9 );
10
11 -- In a separate table to avoid deadlocks.
12 CREATE TABLE last_picture_cache ( 
13    vhost varchar NOT NULL,
14    event varchar NOT NULL,
15    last_picture timestamp without time zone,
16
17    PRIMARY KEY (vhost,event),
18    FOREIGN KEY (vhost,event) REFERNECES events(vhost,event)
19 );
20
21 CREATE TABLE images (
22     id serial NOT NULL PRIMARY KEY,
23     vhost character varying NOT NULL,
24     event character varying NOT NULL,
25     filename character varying NOT NULL,
26     width integer DEFAULT -1 NOT NULL,
27     height integer DEFAULT -1 NOT NULL,
28     uploadedby character varying NOT NULL,
29     "date" timestamp without time zone,
30     takenby character varying NOT NULL,
31     selected boolean DEFAULT false,
32
33     FOREIGN KEY (vhost,event) REFERENCES events (vhost,event)
34 );
35 CREATE UNIQUE INDEX unique_filenames ON images USING btree (vhost, event, filename);
36
37 CREATE TABLE deleted_images (
38     id integer NOT NULL,
39     vhost character varying,
40     event character varying NOT NULL,
41     filename character varying NOT NULL,
42     width integer DEFAULT -1 NOT NULL,
43     height integer DEFAULT -1 NOT NULL,
44     uploadedby character varying,
45     "date" timestamp without time zone,
46     takenby character varying NOT NULL,
47     selected boolean
48 );
49
50 CREATE TABLE fake_files (
51     vhost character varying NOT NULL,
52     event character varying NOT NULL,
53     filename character varying NOT NULL,
54     expires_at timestamp without time zone NOT NULL,
55
56     PRIMARY KEY ( vhost, event, filename ),
57     FOREIGN KEY (vhost,event) REFERENCES events (vhost,event)
58 );
59
60 CREATE TABLE shadow_files (
61     vhost character varying NOT NULL,
62     event character varying NOT NULL,
63     filename character varying NOT NULL,
64     id integer NOT NULL,
65     expires_at timestamp without time zone NOT NULL
66 );
67
68 CREATE TABLE users (
69     username character varying NOT NULL,
70     sha1password character(28) NOT NULL,
71     vhost character varying NOT NULL
72 );
73
74 CREATE TABLE exif_info (
75     image integer NOT NULL REFERENCES images (id),
76     tag varchar NOT NULL,
77     value varchar NOT NULL,
78
79     PRIMARY KEY ( image, tag )
80 );
81     
82
83 GRANT INSERT ON TABLE deleted_images TO pr0n;
84 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE events TO pr0n;
85 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE fake_files TO pr0n;
86 GRANT SELECT,UPDATE ON TABLE images_id_seq TO pr0n;
87 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE images TO pr0n;
88 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE shadow_files TO pr0n;
89 GRANT SELECT ON TABLE users TO pr0n;
90 GRANT SELECT,INSERT,DELETE ON TABLE exif_info TO pr0n;
91 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE last_picture_cache TO pr0n;