source: trunk/install/piwigo_structure-pgsql.sql @ 5192

Last change on this file since 5192 was 5192, checked in by nikrou, 14 years ago

Fix some sql issues :

  • permalink that use if() syntax
  • add tables themes for other database engines that mysql
File size: 18.9 KB
Line 
1-----------------------------------------------------------------------------
2-- piwigo_caddie
3-----------------------------------------------------------------------------
4
5DROP TABLE IF EXISTS piwigo_caddie;
6CREATE TABLE "piwigo_caddie"
7(
8  "user_id" INTEGER default 0 NOT NULL,
9  "element_id" INTEGER default 0 NOT NULL,
10  PRIMARY KEY ("user_id","element_id")
11);
12
13COMMENT ON TABLE "piwigo_caddie" IS '';
14
15
16SET search_path TO public;
17-----------------------------------------------------------------------------
18-- piwigo_categories
19-----------------------------------------------------------------------------
20
21DROP TYPE IF EXISTS CATEGORIES_STATUS;
22CREATE TYPE CATEGORIES_STATUS AS ENUM('public', 'private');
23
24DROP TABLE IF EXISTS "piwigo_categories" CASCADE;
25CREATE TABLE "piwigo_categories"
26(
27  "id" serial  NOT NULL,
28  "name" VARCHAR(255) default '' NOT NULL,
29  "id_uppercat" INTEGER,
30  "comment" TEXT,
31  "dir" VARCHAR(255),
32  "rank" INTEGER,
33  "status" CATEGORIES_STATUS default 'public'::CATEGORIES_STATUS,
34  "site_id" INTEGER default 1,
35  "visible" BOOLEAN default true,
36  "uploadable" BOOLEAN default false,
37  "representative_picture_id" INTEGER,
38  "uppercats" TEXT,
39  "commentable" BOOLEAN default true,
40  "global_rank" VARCHAR(255),
41  "image_order" VARCHAR(128),
42  "permalink" VARCHAR(64),
43  PRIMARY KEY ("id"),
44  CONSTRAINT "categories_i3" UNIQUE ("permalink")
45);
46
47COMMENT ON TABLE "piwigo_categories" IS '';
48
49
50SET search_path TO public;
51CREATE INDEX "categories_i2" ON "piwigo_categories" ("id_uppercat");
52
53-----------------------------------------------------------------------------
54-- piwigo_config
55-----------------------------------------------------------------------------
56
57DROP TABLE IF EXISTS "piwigo_config" CASCADE;
58CREATE TABLE "piwigo_config"
59(
60  "param" VARCHAR(40) default '' NOT NULL,
61  "value" TEXT,
62  "comment" VARCHAR(255),
63  PRIMARY KEY ("param")
64);
65
66COMMENT ON TABLE "piwigo_config" IS '';
67
68
69SET search_path TO public;
70-----------------------------------------------------------------------------
71-- piwigo_favorites
72-----------------------------------------------------------------------------
73
74DROP TABLE IF EXISTS "piwigo_favorites" CASCADE;
75CREATE TABLE "piwigo_favorites"
76(
77  "user_id" INTEGER default 0 NOT NULL,
78  "image_id" INTEGER default 0 NOT NULL,
79  PRIMARY KEY ("user_id","image_id")
80);
81
82COMMENT ON TABLE "piwigo_favorites" IS '';
83
84
85SET search_path TO public;
86-----------------------------------------------------------------------------
87-- piwigo_group_access
88-----------------------------------------------------------------------------
89
90DROP TABLE IF EXISTS "piwigo_group_access" CASCADE;
91CREATE TABLE "piwigo_group_access"
92(
93  "group_id" INTEGER default 0 NOT NULL,
94  "cat_id" INTEGER default 0 NOT NULL,
95  PRIMARY KEY ("group_id","cat_id")
96);
97
98COMMENT ON TABLE "piwigo_group_access" IS '';
99
100
101SET search_path TO public;
102-----------------------------------------------------------------------------
103-- piwigo_groups
104-----------------------------------------------------------------------------
105
106DROP TABLE IF EXISTS "piwigo_groups" CASCADE;
107CREATE TABLE "piwigo_groups"
108(
109  "id" serial  NOT NULL,
110  "name" VARCHAR(255) default '' NOT NULL,
111  "is_default" BOOLEAN default false,
112  PRIMARY KEY ("id"),
113  CONSTRAINT "groups_ui1" UNIQUE ("name")
114);
115
116COMMENT ON TABLE "piwigo_groups" IS '';
117
118
119SET search_path TO public;
120-----------------------------------------------------------------------------
121-- piwigo_history
122-----------------------------------------------------------------------------
123
124DROP TYPE IF EXISTS HISTORY_SECTION;
125CREATE TYPE HISTORY_SECTION AS ENUM('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats');
126DROP TYPE IF EXISTS HISTORY_IMAGE_TYPE;
127CREATE TYPE HISTORY_IMAGE_TYPE AS ENUM('picture','high','other');
128
129DROP TABLE IF EXISTS "piwigo_history" CASCADE;
130CREATE TABLE "piwigo_history"
131(
132  "id" serial  NOT NULL,
133  "date" DATE NOT NULL,
134  "time" TIME NOT NULL,
135  "user_id" INTEGER default 0 NOT NULL,
136  "ip" VARCHAR(15) default '' NOT NULL,
137  "section" HISTORY_SECTION default NULL,
138  "category_id" INTEGER,
139  "tag_ids" VARCHAR(50),
140  "image_id" INTEGER,
141  "summarized" BOOLEAN default false,
142  "image_type" HISTORY_IMAGE_TYPE default NULL,
143  PRIMARY KEY ("id")
144);
145
146COMMENT ON TABLE "piwigo_history" IS '';
147
148
149SET search_path TO public;
150CREATE INDEX "history_i1" ON "piwigo_history" ("summarized");
151
152-----------------------------------------------------------------------------
153-- piwigo_history_summary
154-----------------------------------------------------------------------------
155
156DROP TABLE IF EXISTS "piwigo_history_summary" CASCADE;
157CREATE TABLE "piwigo_history_summary"
158(
159  "year" INTEGER default 0 NOT NULL,
160  "month" INTEGER,
161  "day" INTEGER,
162  "hour" INTEGER,
163  "nb_pages" INTEGER,
164  "id" serial  NOT NULL,
165  PRIMARY KEY ("id"),
166  CONSTRAINT "history_summary_ymdh" UNIQUE ("year","month","day","hour")
167);
168
169COMMENT ON TABLE "piwigo_history_summary" IS '';
170
171
172SET search_path TO public;
173-----------------------------------------------------------------------------
174-- piwigo_image_category
175-----------------------------------------------------------------------------
176
177DROP TABLE IF EXISTS "piwigo_image_category" CASCADE;
178CREATE TABLE "piwigo_image_category"
179(
180  "image_id" INTEGER default 0 NOT NULL,
181  "category_id" INTEGER default 0 NOT NULL,
182  "rank" INTEGER,
183  PRIMARY KEY ("image_id","category_id")
184);
185
186COMMENT ON TABLE "piwigo_image_category" IS '';
187
188
189SET search_path TO public;
190CREATE INDEX "image_category_i1" ON "piwigo_image_category" ("category_id");
191
192-----------------------------------------------------------------------------
193-- piwigo_image_tag
194-----------------------------------------------------------------------------
195
196DROP TABLE IF EXISTS "piwigo_image_tag" CASCADE;
197CREATE TABLE "piwigo_image_tag"
198(
199  "image_id" INTEGER default 0 NOT NULL,
200  "tag_id" INTEGER default 0 NOT NULL,
201  PRIMARY KEY ("image_id","tag_id")
202);
203
204COMMENT ON TABLE "piwigo_image_tag" IS '';
205
206
207SET search_path TO public;
208CREATE INDEX "image_tag_i1" ON "piwigo_image_tag" ("tag_id");
209
210-----------------------------------------------------------------------------
211-- piwigo_images
212-----------------------------------------------------------------------------
213
214DROP TABLE IF EXISTS "piwigo_images" CASCADE;
215CREATE TABLE "piwigo_images"
216(
217  "id" serial  NOT NULL,
218  "file" VARCHAR(255) default '' NOT NULL,
219  "date_available" TIMESTAMP NOT NULL,
220  "date_creation" TIMESTAMP,
221  "tn_ext" VARCHAR(4) default '',
222  "name" VARCHAR(255),
223  "comment" TEXT,
224  "author" VARCHAR(255),
225  "hit" INTEGER default 0 NOT NULL,
226  "filesize" INTEGER,
227  "width" INTEGER,
228  "height" INTEGER,
229  "representative_ext" VARCHAR(4),
230  "date_metadata_update" DATE,
231  "average_rate" FLOAT,
232  "has_high" BOOLEAN default false,
233  "path" VARCHAR(255) default '' NOT NULL,
234  "storage_category_id" INTEGER,
235  "high_filesize" INTEGER,
236  "level" INTEGER default 0 NOT NULL,
237  "md5sum" CHAR(32),
238  PRIMARY KEY ("id")
239);
240
241COMMENT ON TABLE "piwigo_images" IS '';
242
243
244SET search_path TO public;
245CREATE INDEX "images_i2" ON "piwigo_images" ("date_available");
246
247CREATE INDEX "images_i3" ON "piwigo_images" ("average_rate");
248
249CREATE INDEX "images_i4" ON "piwigo_images" ("hit");
250
251CREATE INDEX "images_i5" ON "piwigo_images" ("date_creation");
252
253CREATE INDEX "images_i1" ON "piwigo_images" ("storage_category_id");
254
255-----------------------------------------------------------------------------
256-- piwigo_old_permalinks
257-----------------------------------------------------------------------------
258
259DROP TABLE IF EXISTS "piwigo_old_permalinks" CASCADE;
260CREATE TABLE "piwigo_old_permalinks"
261(
262  "cat_id" INTEGER default 0 NOT NULL,
263  "permalink" VARCHAR(64) default '' NOT NULL,
264  "date_deleted" TIMESTAMP NOT NULL,
265  "last_hit" TIMESTAMP,
266  "hit" INTEGER default 0 NOT NULL,
267  PRIMARY KEY ("permalink")
268);
269
270COMMENT ON TABLE "piwigo_old_permalinks" IS '';
271
272
273SET search_path TO public;
274-----------------------------------------------------------------------------
275-- piwigo_plugins
276-----------------------------------------------------------------------------
277
278DROP TYPE IF EXISTS PLUGINS_STATE;
279CREATE TYPE PLUGINS_STATE AS ENUM('active', 'inactive');
280
281DROP TABLE IF EXISTS "piwigo_plugins" CASCADE;
282CREATE TABLE "piwigo_plugins"
283(
284  "id" VARCHAR(64) default '' NOT NULL,
285  "state" PLUGINS_STATE default 'inactive'::PLUGINS_STATE,
286  "version" VARCHAR(64) default '0' NOT NULL,
287  PRIMARY KEY ("id")
288);
289
290COMMENT ON TABLE "piwigo_plugins" IS '';
291
292
293SET search_path TO public;
294-----------------------------------------------------------------------------
295-- piwigo_rate
296-----------------------------------------------------------------------------
297
298DROP TABLE IF EXISTS "piwigo_rate" CASCADE;
299CREATE TABLE "piwigo_rate"
300(
301  "user_id" INTEGER default 0 NOT NULL,
302  "element_id" INTEGER default 0 NOT NULL,
303  "anonymous_id" VARCHAR(45) default '' NOT NULL,
304  "rate" INTEGER default 0 NOT NULL,
305  "date" DATE  NOT NULL,
306  PRIMARY KEY ("user_id","element_id","anonymous_id")
307);
308
309COMMENT ON TABLE "piwigo_rate" IS '';
310
311
312SET search_path TO public;
313-----------------------------------------------------------------------------
314-- piwigo_search
315-----------------------------------------------------------------------------
316
317DROP TABLE IF EXISTS "piwigo_search" CASCADE;
318CREATE TABLE "piwigo_search"
319(
320  "id" serial  NOT NULL,
321  "last_seen" DATE,
322  "rules" TEXT,
323  PRIMARY KEY ("id")
324);
325
326COMMENT ON TABLE "piwigo_search" IS '';
327
328
329SET search_path TO public;
330-----------------------------------------------------------------------------
331-- piwigo_sessions
332-----------------------------------------------------------------------------
333
334DROP TABLE IF EXISTS "piwigo_sessions" CASCADE;
335CREATE TABLE "piwigo_sessions"
336(
337  "id" VARCHAR(255) default '' NOT NULL,
338  "data" TEXT  NOT NULL,
339  "expiration" TIMESTAMP NOT NULL,
340  PRIMARY KEY ("id")
341);
342
343COMMENT ON TABLE "piwigo_sessions" IS '';
344
345
346SET search_path TO public;
347-----------------------------------------------------------------------------
348-- piwigo_sites
349-----------------------------------------------------------------------------
350
351DROP TABLE IF EXISTS "piwigo_sites" CASCADE;
352CREATE TABLE "piwigo_sites"
353(
354  "id" serial  NOT NULL,
355  "galleries_url" VARCHAR(255) default '' NOT NULL,
356  PRIMARY KEY ("id"),
357  CONSTRAINT "sites_ui1" UNIQUE ("galleries_url")
358);
359
360COMMENT ON TABLE "piwigo_sites" IS '';
361
362
363SET search_path TO public;
364-----------------------------------------------------------------------------
365-- piwigo_stuffs
366-----------------------------------------------------------------------------
367
368DROP TABLE IF EXISTS "piwigo_stuffs" CASCADE;
369CREATE TABLE "piwigo_stuffs"
370(
371  "id" INTEGER  NOT NULL,
372  "pos" INTEGER  NOT NULL,
373  "name" TEXT  NOT NULL,
374  "descr" VARCHAR(255),
375  "type" VARCHAR(255)  NOT NULL,
376  "datas" TEXT,
377  "users" VARCHAR(255),
378  "groups" VARCHAR(255),
379  "show_title" CHAR  NOT NULL,
380  "on_home" CHAR  NOT NULL,
381  "on_cats" CHAR  NOT NULL,
382  "on_picture" CHAR  NOT NULL,
383  "id_line" VARCHAR(1),
384  "width" INTEGER,
385  PRIMARY KEY ("id")
386);
387
388COMMENT ON TABLE "piwigo_stuffs" IS '';
389
390
391SET search_path TO public;
392CREATE INDEX "on_home" ON "piwigo_stuffs" ("on_home");
393
394CREATE INDEX "on_cats" ON "piwigo_stuffs" ("on_cats");
395
396CREATE INDEX "on_picture" ON "piwigo_stuffs" ("on_picture");
397
398-----------------------------------------------------------------------------
399-- piwigo_tags
400-----------------------------------------------------------------------------
401
402DROP TABLE IF EXISTS "piwigo_tags" CASCADE;
403CREATE TABLE "piwigo_tags"
404(
405  "id" serial  NOT NULL,
406  "name" VARCHAR(255) default '' NOT NULL,
407  "url_name" VARCHAR(255) default '' NOT NULL,
408  PRIMARY KEY ("id")
409);
410
411COMMENT ON TABLE "piwigo_tags" IS '';
412
413
414SET search_path TO public;
415CREATE INDEX "tags_i1" ON "piwigo_tags" ("url_name");
416
417-----------------------------------------------------------------------------
418-- piwigo_themes
419-----------------------------------------------------------------------------
420
421DROP TABLE IF EXISTS "piwigo_themes" CASCADE;
422CREATE TABLE "piwigo_themes"
423(
424  "id" varchar(64) default '' NOT NULL,
425  "version" varchar(64) NOT NULL default '0',
426  "name" varchar(64) default NULL,
427  PRIMARY KEY  ("id")
428);
429
430COMMENT ON TABLE "piwigo_themes" IS '';
431
432-----------------------------------------------------------------------------
433-- piwigo_upgrade
434-----------------------------------------------------------------------------
435
436DROP TABLE IF EXISTS "piwigo_upgrade" CASCADE;
437CREATE TABLE "piwigo_upgrade"
438(
439  "id" VARCHAR(20) default '' NOT NULL,
440  "applied" TIMESTAMP NOT NULL,
441  "description" VARCHAR(255),
442  PRIMARY KEY ("id")
443);
444
445COMMENT ON TABLE "piwigo_upgrade" IS '';
446
447
448SET search_path TO public;
449-----------------------------------------------------------------------------
450-- piwigo_user_access
451-----------------------------------------------------------------------------
452
453DROP TABLE IF EXISTS "piwigo_user_access" CASCADE;
454CREATE TABLE "piwigo_user_access"
455(
456  "user_id" INTEGER default 0 NOT NULL,
457  "cat_id" INTEGER default 0 NOT NULL,
458  PRIMARY KEY ("user_id","cat_id")
459);
460
461COMMENT ON TABLE "piwigo_user_access" IS '';
462
463
464SET search_path TO public;
465-----------------------------------------------------------------------------
466-- piwigo_user_cache
467-----------------------------------------------------------------------------
468
469DROP TYPE IF EXISTS USER_CACHE_IMAGE_ACCESS_TYPE;
470CREATE TYPE USER_CACHE_IMAGE_ACCESS_TYPE AS ENUM('NOT IN','IN');
471
472DROP TABLE IF EXISTS "piwigo_user_cache" CASCADE;
473CREATE TABLE "piwigo_user_cache"
474(
475  "user_id" INTEGER default 0 NOT NULL,
476  "need_update" BOOLEAN default true,
477  "cache_update_time" INTEGER default 0 NOT NULL,
478  "forbidden_categories" TEXT,
479  "nb_total_images" INTEGER,
480  "image_access_type" USER_CACHE_IMAGE_ACCESS_TYPE default 'NOT IN'::USER_CACHE_IMAGE_ACCESS_TYPE,
481  "image_access_list" TEXT,
482  PRIMARY KEY ("user_id")
483);
484
485COMMENT ON TABLE "piwigo_user_cache" IS '';
486
487
488SET search_path TO public;
489-----------------------------------------------------------------------------
490-- piwigo_user_cache_categories
491-----------------------------------------------------------------------------
492
493DROP TABLE IF EXISTS "piwigo_user_cache_categories" CASCADE;
494CREATE TABLE "piwigo_user_cache_categories"
495(
496  "user_id" INTEGER default 0 NOT NULL,
497  "cat_id" INTEGER default 0 NOT NULL,
498  "date_last" TIMESTAMP,
499  "max_date_last" TIMESTAMP,
500  "nb_images" INTEGER default 0 NOT NULL,
501  "count_images" INTEGER default 0,
502  "count_categories" INTEGER default 0,
503  PRIMARY KEY ("user_id","cat_id")
504);
505
506COMMENT ON TABLE "piwigo_user_cache_categories" IS '';
507
508
509SET search_path TO public;
510-----------------------------------------------------------------------------
511-- piwigo_user_feed
512-----------------------------------------------------------------------------
513
514DROP TABLE IF EXISTS "piwigo_user_feed" CASCADE;
515CREATE TABLE "piwigo_user_feed"
516(
517  "id" VARCHAR(50) default '' NOT NULL,
518  "user_id" INTEGER default 0 NOT NULL,
519  "last_check" TIMESTAMP,
520  PRIMARY KEY ("id")
521);
522
523COMMENT ON TABLE "piwigo_user_feed" IS '';
524
525
526SET search_path TO public;
527-----------------------------------------------------------------------------
528-- piwigo_user_group
529-----------------------------------------------------------------------------
530
531DROP TABLE IF EXISTS "piwigo_user_group" CASCADE;
532CREATE TABLE "piwigo_user_group"
533(
534  "user_id" INTEGER default 0 NOT NULL,
535  "group_id" INTEGER default 0 NOT NULL,
536  PRIMARY KEY ("user_id","group_id")
537);
538
539COMMENT ON TABLE "piwigo_user_group" IS '';
540
541
542SET search_path TO public;
543-----------------------------------------------------------------------------
544-- piwigo_user_infos
545-----------------------------------------------------------------------------
546
547DROP TYPE IF EXISTS USER_INFOS_STATUS;
548CREATE TYPE USER_INFOS_STATUS AS ENUM('webmaster','admin','normal','generic','guest');
549
550DROP TABLE IF EXISTS "piwigo_user_infos" CASCADE;
551CREATE TABLE "piwigo_user_infos"
552(
553  "user_id" INTEGER default 0 NOT NULL,
554  "nb_image_line" INTEGER default 5 NOT NULL,
555  "nb_line_page" INTEGER default 3 NOT NULL,
556  "status" USER_INFOS_STATUS default 'guest'::USER_INFOS_STATUS,
557  "adviser" BOOLEAN default false,
558  "language" VARCHAR(50) default 'en_UK' NOT NULL,
559  "maxwidth" INTEGER,
560  "maxheight" INTEGER,
561  "expand" BOOLEAN default false,
562  "show_nb_comments" BOOLEAN default false,
563  "show_nb_hits" BOOLEAN default false,
564  "recent_period" INTEGER default 7 NOT NULL,
565  "theme" VARCHAR(255) default 'Sylvia' NOT NULL,
566  "registration_date" TIMESTAMP NOT NULL,
567  "enabled_high" BOOLEAN default true,
568  "level" INTEGER default 0 NOT NULL,
569  PRIMARY KEY ("user_id"),
570  CONSTRAINT "user_infos_ui1" UNIQUE ("user_id")
571);
572
573COMMENT ON TABLE "piwigo_user_infos" IS '';
574
575
576SET search_path TO public;
577-----------------------------------------------------------------------------
578-- piwigo_user_mail_notification
579-----------------------------------------------------------------------------
580
581DROP TABLE IF EXISTS "piwigo_user_mail_notification" CASCADE;
582CREATE TABLE "piwigo_user_mail_notification"
583(
584  "user_id" INTEGER default 0 NOT NULL,
585  "check_key" VARCHAR(16) default '' NOT NULL,
586  "enabled" BOOLEAN default false,
587  "last_send" TIMESTAMP,
588  PRIMARY KEY ("user_id"),
589  CONSTRAINT "user_mail_notification_ui1" UNIQUE ("check_key")
590);
591
592COMMENT ON TABLE "piwigo_user_mail_notification" IS '';
593
594
595SET search_path TO public;
596-----------------------------------------------------------------------------
597-- piwigo_users
598-----------------------------------------------------------------------------
599
600DROP TABLE IF EXISTS "piwigo_users" CASCADE;
601CREATE TABLE "piwigo_users"
602(
603  "id" serial  NOT NULL,
604  "username" VARCHAR(100) default '' NOT NULL,
605  "password" VARCHAR(32),
606  "mail_address" VARCHAR(255),
607  PRIMARY KEY ("id"),
608  CONSTRAINT "users_ui1" UNIQUE ("username")
609);
610
611COMMENT ON TABLE "piwigo_users" IS '';
612
613
614SET search_path TO public;
615
616-----------------------------------------------------------------------------
617-- piwigo_comments
618-----------------------------------------------------------------------------
619
620DROP TABLE IF EXISTS "piwigo_comments" CASCADE;
621CREATE TABLE "piwigo_comments"
622(
623  "id" serial  NOT NULL,
624  "image_id" INTEGER default 0 NOT NULL,
625  "date" TIMESTAMP  NOT NULL,
626  "author" VARCHAR(255),
627  "content" TEXT,
628  "validated" BOOLEAN default false,
629  "validation_date" TIMESTAMP,
630  "author_id" INTEGER REFERENCES "piwigo_users" (id),
631  PRIMARY KEY ("id")
632);
633
634COMMENT ON TABLE "piwigo_comments" IS '';
635
636
637SET search_path TO public;
638CREATE INDEX "comments_i2" ON "piwigo_comments" ("validation_date");
639
640CREATE INDEX "comments_i1" ON "piwigo_comments" ("image_id");
641
642-----------------------------------------------------------------------------
643-- piwigo_waiting
644-----------------------------------------------------------------------------
645
646DROP TABLE IF EXISTS "piwigo_waiting" CASCADE;
647CREATE TABLE "piwigo_waiting"
648(
649  "id" serial  NOT NULL,
650  "storage_category_id" INTEGER default 0 NOT NULL,
651  "file" VARCHAR(255) default '' NOT NULL,
652  "username" VARCHAR(255) default '' NOT NULL,
653  "mail_address" VARCHAR(255) default '' NOT NULL,
654  "date" INTEGER default 0 NOT NULL,
655  "tn_ext" CHAR(3),
656  "validated" BOOLEAN default false,
657  "infos" TEXT,
658  PRIMARY KEY ("id")
659);
660
661COMMENT ON TABLE "piwigo_waiting" IS '';
662
663
664SET search_path TO public;
Note: See TracBrowser for help on using the repository browser.