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

Last change on this file since 8651 was 8651, checked in by plg, 13 years ago

feature 2108 added: user upload removed from core. It will come back as a
"new generation" user upload in the Community plugin.

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