]> git.sesse.net Git - pr0n/blob - sql/pr0n.sql
f3f2087e6ce7b8d7db298c1d60841d4d655868a4
[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     hidden boolean NOT NULL DEFAULT false,
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    last_update timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
18    PRIMARY KEY (vhost,event),
19    FOREIGN KEY (vhost,event) REFERENCES events(vhost,event)
20 );
21
22 CREATE SEQUENCE imageid_seq;
23
24 CREATE TABLE images (
25     id integer DEFAULT nextval('imageid_seq') NOT NULL PRIMARY KEY,
26     vhost character varying NOT NULL,
27     event character varying NOT NULL,
28     filename character varying NOT NULL,
29     width integer,
30     height integer,
31     uploadedby character varying NOT NULL,
32     "date" timestamp without time zone,
33     takenby character varying NOT NULL,
34     selected boolean DEFAULT false,
35     model character varying,
36     lens character varying,
37
38     FOREIGN KEY (vhost,event) REFERENCES events (vhost,event)
39 );
40 CREATE UNIQUE INDEX unique_filenames ON images USING btree (vhost, event, filename);
41
42 CREATE TABLE deleted_images (
43     id integer NOT NULL,
44     vhost character varying,
45     event character varying NOT NULL,
46     filename character varying NOT NULL,
47     width integer,
48     height integer,
49     uploadedby character varying,
50     "date" timestamp without time zone,
51     takenby character varying NOT NULL,
52     selected boolean,
53     model character varying,
54     lens character varying
55 );
56
57 CREATE TABLE users (
58     username character varying NOT NULL,
59     vhost character varying NOT NULL,
60     cryptpassword character varying NOT NULL
61 );
62
63 -- Mainly used for manual queries -- usually too slow to be very useful
64 -- for web views in the long run.
65 CREATE TABLE exif_info (
66     image integer NOT NULL REFERENCES images (id) ON DELETE CASCADE,
67     key varchar NOT NULL,
68     value varchar NOT NULL,
69
70     PRIMARY KEY ( image, key )
71 );
72
73 CREATE INDEX exif_info_key ON exif_info ( key );
74 CLUSTER exif_info_key ON exif_info;
75
76 GRANT INSERT ON TABLE deleted_images TO pr0n;
77 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE events TO pr0n;
78 GRANT SELECT,UPDATE ON TABLE imageid_seq TO pr0n;
79 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE images TO pr0n;
80 GRANT SELECT,UPDATE ON TABLE users TO pr0n;
81 GRANT SELECT,INSERT,DELETE ON TABLE exif_info TO pr0n;
82 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE last_picture_cache TO pr0n;