Table for server-side configuration settings. Will be used to store location of...
authorrich <rich>
Thu, 23 Sep 2004 11:51:17 +0000 (11:51 +0000)
committerrich <rich>
Thu, 23 Sep 2004 11:51:17 +0000 (11:51 +0000)
cocanwiki.sql
scripts/cocanwiki.ml

index 119ba0f..99b8127 100644 (file)
@@ -54,7 +54,7 @@ GRANT ALL ON TABLE pages TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 31 (OID 536004)
+-- TOC entry 34 (OID 536004)
 -- Name: pages_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -91,7 +91,7 @@ GRANT ALL ON TABLE contents TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 32 (OID 536021)
+-- TOC entry 35 (OID 536021)
 -- Name: contents_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -129,7 +129,7 @@ GRANT ALL ON TABLE hosts TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 33 (OID 536371)
+-- TOC entry 36 (OID 536371)
 -- Name: hosts_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -222,7 +222,7 @@ GRANT ALL ON TABLE images TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 34 (OID 537151)
+-- TOC entry 37 (OID 537151)
 -- Name: images_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -261,7 +261,7 @@ GRANT ALL ON TABLE files TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 35 (OID 537166)
+-- TOC entry 38 (OID 537166)
 -- Name: files_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -303,7 +303,7 @@ GRANT ALL ON TABLE users TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 36 (OID 540816)
+-- TOC entry 39 (OID 540816)
 -- Name: users_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -384,7 +384,7 @@ GRANT ALL ON TABLE contacts TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 37 (OID 542605)
+-- TOC entry 40 (OID 542605)
 -- Name: contacts_id_seq; Type: ACL; Schema: public; Owner: rich
 --
 
@@ -440,7 +440,28 @@ GRANT SELECT ON TABLE themes TO "www-data";
 SET SESSION AUTHORIZATION 'rich';
 
 --
--- TOC entry 42 (OID 536388)
+-- TOC entry 31 (OID 543592)
+-- Name: server_settings; Type: TABLE; Schema: public; Owner: rich
+--
+
+CREATE TABLE server_settings (
+    "version" integer NOT NULL
+);
+
+
+--
+-- TOC entry 33 (OID 543592)
+-- Name: server_settings; Type: ACL; Schema: public; Owner: rich
+--
+
+REVOKE ALL ON TABLE server_settings FROM PUBLIC;
+GRANT SELECT ON TABLE server_settings TO "www-data";
+
+
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 45 (OID 536388)
 -- Name: hostnames_hostid_name_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -448,7 +469,7 @@ CREATE UNIQUE INDEX hostnames_hostid_name_uq ON hostnames USING btree (hostid, n
 
 
 --
--- TOC entry 43 (OID 536389)
+-- TOC entry 46 (OID 536389)
 -- Name: hostnams_name_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -456,7 +477,7 @@ CREATE UNIQUE INDEX hostnams_name_uq ON hostnames USING btree (name);
 
 
 --
--- TOC entry 39 (OID 536419)
+-- TOC entry 42 (OID 536419)
 -- Name: pages_url_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -464,7 +485,7 @@ CREATE UNIQUE INDEX pages_url_uq ON pages USING btree (hostid, url);
 
 
 --
--- TOC entry 44 (OID 536924)
+-- TOC entry 47 (OID 536924)
 -- Name: email_notify_email_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -472,7 +493,7 @@ CREATE UNIQUE INDEX email_notify_email_uq ON email_notify USING btree (hostid, e
 
 
 --
--- TOC entry 45 (OID 540251)
+-- TOC entry 48 (OID 540251)
 -- Name: images_name_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -480,7 +501,7 @@ CREATE UNIQUE INDEX images_name_uq ON images USING btree (hostid, name);
 
 
 --
--- TOC entry 47 (OID 540252)
+-- TOC entry 50 (OID 540252)
 -- Name: files_name_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -488,7 +509,7 @@ CREATE UNIQUE INDEX files_name_uq ON files USING btree (hostid, name);
 
 
 --
--- TOC entry 50 (OID 540831)
+-- TOC entry 53 (OID 540831)
 -- Name: users_name_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -496,7 +517,7 @@ CREATE UNIQUE INDEX users_name_uq ON users USING btree (hostid, name);
 
 
 --
--- TOC entry 49 (OID 540946)
+-- TOC entry 52 (OID 540946)
 -- Name: users_id_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -504,7 +525,7 @@ CREATE UNIQUE INDEX users_id_uq ON users USING btree (hostid, id);
 
 
 --
--- TOC entry 52 (OID 540970)
+-- TOC entry 55 (OID 540970)
 -- Name: sitemenu_ordering_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -512,7 +533,7 @@ CREATE UNIQUE INDEX sitemenu_ordering_uq ON sitemenu USING btree (hostid, orderi
 
 
 --
--- TOC entry 53 (OID 540971)
+-- TOC entry 56 (OID 540971)
 -- Name: sitemenu_url_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -520,7 +541,7 @@ CREATE UNIQUE INDEX sitemenu_url_uq ON sitemenu USING btree (hostid, url);
 
 
 --
--- TOC entry 55 (OID 542626)
+-- TOC entry 58 (OID 542626)
 -- Name: contact_emails_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -528,7 +549,7 @@ CREATE UNIQUE INDEX contact_emails_uq ON contact_emails USING btree (contactid,
 
 
 --
--- TOC entry 56 (OID 543505)
+-- TOC entry 59 (OID 543505)
 -- Name: themes_theme_css_uq; Type: INDEX; Schema: public; Owner: rich
 --
 
@@ -536,7 +557,7 @@ CREATE UNIQUE INDEX themes_theme_css_uq ON themes USING btree (theme_css);
 
 
 --
--- TOC entry 38 (OID 536012)
+-- TOC entry 41 (OID 536012)
 -- Name: pages_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -545,7 +566,7 @@ ALTER TABLE ONLY pages
 
 
 --
--- TOC entry 40 (OID 536027)
+-- TOC entry 43 (OID 536027)
 -- Name: contents_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -554,7 +575,7 @@ ALTER TABLE ONLY contents
 
 
 --
--- TOC entry 41 (OID 536377)
+-- TOC entry 44 (OID 536377)
 -- Name: hosts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -563,7 +584,7 @@ ALTER TABLE ONLY hosts
 
 
 --
--- TOC entry 46 (OID 537158)
+-- TOC entry 49 (OID 537158)
 -- Name: images_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -572,7 +593,7 @@ ALTER TABLE ONLY images
 
 
 --
--- TOC entry 48 (OID 537173)
+-- TOC entry 51 (OID 537173)
 -- Name: files_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -581,7 +602,7 @@ ALTER TABLE ONLY files
 
 
 --
--- TOC entry 51 (OID 540825)
+-- TOC entry 54 (OID 540825)
 -- Name: users_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -590,7 +611,7 @@ ALTER TABLE ONLY users
 
 
 --
--- TOC entry 54 (OID 542611)
+-- TOC entry 57 (OID 542611)
 -- Name: contacts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -599,7 +620,7 @@ ALTER TABLE ONLY contacts
 
 
 --
--- TOC entry 61 (OID 536029)
+-- TOC entry 64 (OID 536029)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -608,7 +629,7 @@ ALTER TABLE ONLY contents
 
 
 --
--- TOC entry 64 (OID 536384)
+-- TOC entry 67 (OID 536384)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -617,7 +638,7 @@ ALTER TABLE ONLY hostnames
 
 
 --
--- TOC entry 62 (OID 536394)
+-- TOC entry 65 (OID 536394)
 -- Name: hosts_hostname_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -626,7 +647,7 @@ ALTER TABLE ONLY hosts
 
 
 --
--- TOC entry 57 (OID 536404)
+-- TOC entry 60 (OID 536404)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -635,7 +656,7 @@ ALTER TABLE ONLY pages
 
 
 --
--- TOC entry 65 (OID 536920)
+-- TOC entry 68 (OID 536920)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -644,7 +665,7 @@ ALTER TABLE ONLY email_notify
 
 
 --
--- TOC entry 66 (OID 537160)
+-- TOC entry 69 (OID 537160)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -653,7 +674,7 @@ ALTER TABLE ONLY images
 
 
 --
--- TOC entry 67 (OID 537175)
+-- TOC entry 70 (OID 537175)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -662,7 +683,7 @@ ALTER TABLE ONLY files
 
 
 --
--- TOC entry 58 (OID 539155)
+-- TOC entry 61 (OID 539155)
 -- Name: pages_redirect_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -671,7 +692,7 @@ ALTER TABLE ONLY pages
 
 
 --
--- TOC entry 68 (OID 540827)
+-- TOC entry 71 (OID 540827)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -680,7 +701,7 @@ ALTER TABLE ONLY users
 
 
 --
--- TOC entry 69 (OID 540837)
+-- TOC entry 72 (OID 540837)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -689,7 +710,7 @@ ALTER TABLE ONLY usercookies
 
 
 --
--- TOC entry 59 (OID 540942)
+-- TOC entry 62 (OID 540942)
 -- Name: $2; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -698,7 +719,7 @@ ALTER TABLE ONLY pages
 
 
 --
--- TOC entry 60 (OID 540947)
+-- TOC entry 63 (OID 540947)
 -- Name: pages_user_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -707,7 +728,7 @@ ALTER TABLE ONLY pages
 
 
 --
--- TOC entry 70 (OID 540966)
+-- TOC entry 73 (OID 540966)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -716,7 +737,7 @@ ALTER TABLE ONLY sitemenu
 
 
 --
--- TOC entry 71 (OID 540972)
+-- TOC entry 74 (OID 540972)
 -- Name: sitemenu_url_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -725,7 +746,7 @@ ALTER TABLE ONLY sitemenu
 
 
 --
--- TOC entry 72 (OID 542613)
+-- TOC entry 75 (OID 542613)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -734,7 +755,7 @@ ALTER TABLE ONLY contacts
 
 
 --
--- TOC entry 73 (OID 542622)
+-- TOC entry 76 (OID 542622)
 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -743,7 +764,7 @@ ALTER TABLE ONLY contact_emails
 
 
 --
--- TOC entry 63 (OID 543506)
+-- TOC entry 66 (OID 543506)
 -- Name: hosts_theme_css_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
 --
 
@@ -761,3 +782,13 @@ SET SESSION AUTHORIZATION 'postgres';
 COMMENT ON SCHEMA public IS 'Standard public namespace';
 
 
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 32 (OID 543592)
+-- Name: TABLE server_settings; Type: COMMENT; Schema: public; Owner: rich
+--
+
+COMMENT ON TABLE server_settings IS 'This table contains global settings for the server.  There should be only one row in this table.  If you modify any setting, you must restart the webserver for the change to take effect.  The "version" field is intended to be some sort of database version, but is currently unused.';
+
+
index 55097e4..96cef37 100644 (file)
@@ -1,7 +1,7 @@
 (* COCANWIKI - a wiki written in Objective CAML.
  * Written by Richard W.M. Jones <rich@merjis.com>.
  * Copyright (C) 2004 Merjis Ltd.
- * $Id: cocanwiki.ml,v 1.9 2004/09/22 10:19:26 rich Exp $
+ * $Id: cocanwiki.ml,v 1.10 2004/09/23 11:51:17 rich Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -34,6 +34,41 @@ module Pool = DbiPool (Dbi_postgres)
  *)
 let _get_dbh r = Pool.get r "cocanwiki"
 
+(* Server-wide settings.
+ *
+ * These are stored in a single row in the database in the table
+ * 'server_settings'.  You must restart the server if you change
+ * this row.
+ *
+ * It's not possible to read these at server start-up time because the
+ * Apache server is still running as 'root' and will not normally be
+ * allowed to access the database.  We thus read them at the earliest
+ * opportunity, in a request context, and cache the results.
+ *)
+let server_settings_version =
+  let settings = ref None in
+  let get_settings (dbh : Dbi.connection) =
+    let sth = dbh#prepare "select version from server_settings" in
+    sth#execute [];
+    let s =
+      match sth#fetch1 () with
+       | [ `Int version ] -> version
+       | _ -> assert false in
+    sth#finish ();
+    settings := Some s;
+    s
+  in
+
+  let server_settings_version dbh =
+    let (version) =
+      match !settings with
+         None -> get_settings dbh
+       | Some settings -> settings in
+    version
+  in
+
+  server_settings_version
+
 (* The [CgiExit] exception should be folded back into the base
  * mod_caml code at some point.  It just causes the 'run' function to
  * return at that point safely.  (XXX)