]> git.sesse.net Git - pr0n/blobdiff - sql/pr0n.sql
Add a field for hiding an event from the main listing.
[pr0n] / sql / pr0n.sql
index 5407ce812b1f043628044f760cdb8350dac15d79..f3f2087e6ce7b8d7db298c1d60841d4d655868a4 100644 (file)
@@ -1,62 +1,82 @@
 CREATE TABLE events (
-    id character varying NOT NULL PRIMARY KEY,
-    date character varying NOT NULL,
+    event character varying NOT NULL,
+    "date" character varying NOT NULL,
     name character varying NOT NULL,
     vhost character varying NOT NULL,
-    last_picture timestamp without time zone DEFAULT '1970-01-01 00:00:00'::timestamp without time zone NOT NULL
+    hidden boolean NOT NULL DEFAULT false,
+
+    PRIMARY KEY (vhost, event)
+);
+
+-- In a separate table to avoid deadlocks.
+CREATE TABLE last_picture_cache ( 
+   vhost varchar NOT NULL,
+   event varchar NOT NULL,
+   last_picture timestamp without time zone,
+   last_update timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+   PRIMARY KEY (vhost,event),
+   FOREIGN KEY (vhost,event) REFERENCES events(vhost,event)
 );
 
+CREATE SEQUENCE imageid_seq;
+
 CREATE TABLE images (
-    id integer serial NOT NULL PRIMARY KEY REFERENCES events(id),
+    id integer DEFAULT nextval('imageid_seq') NOT NULL PRIMARY KEY,
+    vhost character varying NOT NULL,
     event character varying NOT NULL,
     filename character varying NOT NULL,
-    width integer DEFAULT -1 NOT NULL,
-    height integer DEFAULT -1 NOT NULL,
+    width integer,
+    height integer,
     uploadedby character varying NOT NULL,
-    date timestamp without time zone,
+    "date" timestamp without time zone,
     takenby character varying NOT NULL,
-    selected boolean DEFAULT false
+    selected boolean DEFAULT false,
+    model character varying,
+    lens character varying,
+
+    FOREIGN KEY (vhost,event) REFERENCES events (vhost,event)
 );
-CREATE UNIQUE INDEX unique_filenames ON images USING btree (event, filename);
+CREATE UNIQUE INDEX unique_filenames ON images USING btree (vhost, event, filename);
 
 CREATE TABLE deleted_images (
     id integer NOT NULL,
-    event character varying(32) NOT NULL,
-    filename character varying(255) NOT NULL,
-    width integer DEFAULT -1 NOT NULL,
-    height integer DEFAULT -1 NOT NULL,
-    uploadedby character varying(32),
-    date timestamp without time zone,
-    takenby character varying(32) NOT NULL,
-    selected boolean
+    vhost character varying,
+    event character varying NOT NULL,
+    filename character varying NOT NULL,
+    width integer,
+    height integer,
+    uploadedby character varying,
+    "date" timestamp without time zone,
+    takenby character varying NOT NULL,
+    selected boolean,
+    model character varying,
+    lens character varying
 );
 
-CREATE TABLE fake_files (
-    event character varying(32) NOT NULL REFERENCES events(id),
-    filename character varying(255) NOT NULL,
-    expires_at timestamp without time zone NOT NULL,
-
-    PRIMARY KEY ( event, filename )
+CREATE TABLE users (
+    username character varying NOT NULL,
+    vhost character varying NOT NULL,
+    cryptpassword character varying NOT NULL
 );
 
-CREATE TABLE shadow_files (
-    event character varying(32) NOT NULL,
-    filename character varying(255) NOT NULL,
-    id integer NOT NULL,
-    expires_at timestamp without time zone NOT NULL
-);
+-- Mainly used for manual queries -- usually too slow to be very useful
+-- for web views in the long run.
+CREATE TABLE exif_info (
+    image integer NOT NULL REFERENCES images (id) ON DELETE CASCADE,
+    key varchar NOT NULL,
+    value varchar NOT NULL,
 
-CREATE TABLE users (
-    username character varying(32) NOT NULL,
-    sha1password character(28) NOT NULL,
-    vhost character varying(32) NOT NULL
+    PRIMARY KEY ( image, key )
 );
 
+CREATE INDEX exif_info_key ON exif_info ( key );
+CLUSTER exif_info_key ON exif_info;
+
 GRANT INSERT ON TABLE deleted_images TO pr0n;
 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE events TO pr0n;
-GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE fake_files TO pr0n;
-GRANT INSERT,SELECT,UPDATE ON TABLE imageid_seq TO pr0n;
+GRANT SELECT,UPDATE ON TABLE imageid_seq TO pr0n;
 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE images TO pr0n;
-GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE shadow_files TO pr0n;
-GRANT SELECT ON TABLE users TO pr0n;
-
+GRANT SELECT,UPDATE ON TABLE users TO pr0n;
+GRANT SELECT,INSERT,DELETE ON TABLE exif_info TO pr0n;
+GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE last_picture_cache TO pr0n;