2 DROP SEQUENCE IF EXISTS galette_adherents_id_seq
;
3 CREATE SEQUENCE galette_adherents_id_seq
10 DROP SEQUENCE IF EXISTS galette_cotisations_id_seq
;
11 CREATE SEQUENCE galette_cotisations_id_seq
18 -- sequence for statuts
19 DROP SEQUENCE IF EXISTS galette_statuts_id_seq
;
20 CREATE SEQUENCE galette_statuts_id_seq
27 DROP SEQUENCE IF EXISTS galette_transactions_id_seq
;
28 CREATE SEQUENCE galette_transactions_id_seq
35 DROP SEQUENCE IF EXISTS galette_preferences_id_seq
;
36 CREATE SEQUENCE galette_preferences_id_seq
43 DROP SEQUENCE IF EXISTS galette_logs_id_seq
;
44 CREATE SEQUENCE galette_logs_id_seq
51 -- Sequence for dynamic fields description;
52 DROP SEQUENCE IF EXISTS galette_field_types_id_seq
;
53 CREATE SEQUENCE galette_field_types_id_seq
60 -- sequence for contributions types
61 DROP SEQUENCE IF EXISTS galette_types_cotisation_id_seq
;
62 CREATE SEQUENCE galette_types_cotisation_id_seq
69 -- sequence for groups
70 DROP SEQUENCE IF EXISTS galette_groups_id_seq
;
71 CREATE SEQUENCE galette_groups_id_seq
78 -- sequence for mailing history
79 DROP SEQUENCE IF EXISTS galette_mailing_history_id_seq
;
80 CREATE SEQUENCE galette_mailing_history_id_seq
88 DROP SEQUENCE IF EXISTS galette_titles_id_seq
;
89 CREATE SEQUENCE galette_titles_id_seq
96 -- sequence for reminders
97 DROP SEQUENCE IF EXISTS galette_reminders_id_seq
;
98 CREATE SEQUENCE galette_reminders_id_seq
105 -- sequence for pdf models
106 DROP SEQUENCE IF EXISTS galette_pdfmodels_id_seq
;
107 CREATE SEQUENCE galette_pdfmodels_id_seq
114 -- sequence for import model
115 DROP SEQUENCE IF EXISTS galette_import_model_id_seq
;
116 CREATE SEQUENCE galette_import_model_id_seq
123 -- Table for payment types
124 DROP TABLE IF EXISTS galette_paymenttypes
;
125 CREATE TABLE galette_paymenttypes (
126 type_id
integer DEFAULT nextval('galette_paymenttypes_id_seq'::text) NOT NULL,
127 type_name
character varying(50) NOT NULL,
128 PRIMARY KEY (type_id
)
131 -- sequence for payment types
132 DROP SEQUENCE IF EXISTS galette_paymenttypes_id_seq
;
133 CREATE SEQUENCE galette_paymenttypes_id_seq
140 -- sequence for searches
141 DROP SEQUENCE IF EXISTS galette_searches_id_seq
;
142 CREATE SEQUENCE galette_searches_id_seq
149 -- sequence for texts
150 DROP SEQUENCE IF EXISTS galette_texts_id_seq
;
151 CREATE SEQUENCE galette_texts_id_seq
159 -- REMINDER: Create order IS important, dependencies first !!
160 DROP TABLE IF EXISTS galette_statuts
CASCADE;
161 CREATE TABLE galette_statuts (
162 id_statut
integer DEFAULT nextval('galette_statuts_id_seq'::text) NOT NULL,
163 libelle_statut
character varying(100) DEFAULT '' NOT NULL,
164 priorite_statut
smallint DEFAULT '0' NOT NULL,
165 PRIMARY KEY (id_statut
)
168 DROP TABLE IF EXISTS galette_titles
CASCADE;
169 CREATE TABLE galette_titles (
170 id_title
integer DEFAULT nextval('galette_titles_id_seq'::text) NOT NULL,
171 short_label
character varying(10) DEFAULT '' NOT NULL,
172 long_label
character varying(30) DEFAULT '',
173 PRIMARY KEY (id_title
)
176 DROP TABLE IF EXISTS galette_adherents
CASCADE;
177 CREATE TABLE galette_adherents (
178 id_adh
integer DEFAULT nextval('galette_adherents_id_seq'::text) NOT NULL,
179 id_statut
integer DEFAULT '4' REFERENCES galette_statuts(id_statut
) ON DELETE RESTRICT ON UPDATE CASCADE,
180 nom_adh
character varying(50) DEFAULT '' NOT NULL,
181 prenom_adh
character varying(50) DEFAULT '' NOT NULL,
182 societe_adh
character varying(200) DEFAULT NULL,
183 pseudo_adh
character varying(20) DEFAULT '' NOT NULL,
184 titre_adh
integer DEFAULT NULL REFERENCES galette_titles(id_title
) ON DELETE RESTRICT ON UPDATE CASCADE,
185 ddn_adh
date DEFAULT '19010101',
186 sexe_adh
smallint DEFAULT '0' NOT NULL,
187 adresse_adh
character varying(150) DEFAULT '' NOT NULL,
188 adresse2_adh
character varying(150) DEFAULT NULL,
189 cp_adh
character varying(10) DEFAULT '' NOT NULL,
190 ville_adh
character varying(50) DEFAULT '' NOT NULL,
191 pays_adh
character varying(50) DEFAULT NULL,
192 tel_adh
character varying(20),
193 gsm_adh
character varying(20),
194 email_adh
character varying(255),
195 url_adh
character varying(200),
196 icq_adh
character varying(20),
197 msn_adh
character varying(150),
198 jabber_adh
character varying(150),
200 info_public_adh
text,
201 prof_adh
character varying(150),
202 login_adh
character varying(20) DEFAULT '' NOT NULL,
203 mdp_adh
character varying(60) DEFAULT '' NOT NULL,
204 date_crea_adh
date DEFAULT '19010101' NOT NULL,
205 date_modif_adh
date DEFAULT '19010101' NOT NULL,
206 activite_adh
boolean DEFAULT FALSE,
207 bool_admin_adh
boolean DEFAULT FALSE,
208 bool_exempt_adh
boolean DEFAULT FALSE,
209 bool_display_info
boolean DEFAULT FALSE,
211 pref_lang
character varying(20) DEFAULT 'fr_FR',
212 lieu_naissance
text DEFAULT '',
213 gpgid
text DEFAULT NULL,
214 fingerprint
character varying(50) DEFAULT NULL,
215 parent_id
integer DEFAULT NULL REFERENCES galette_adherents(id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
218 -- add index for faster search on login_adh (auth)
219 CREATE UNIQUE INDEX galette_adherents_login_adh_idx
ON galette_adherents (login_adh
);
221 DROP TABLE IF EXISTS galette_types_cotisation
CASCADE;
222 CREATE TABLE galette_types_cotisation (
223 id_type_cotis
integer DEFAULT nextval('galette_types_cotisation_id_seq'::text) NOT NULL,
224 libelle_type_cotis
character varying(100) DEFAULT '' NOT NULL,
225 cotis_extension
boolean DEFAULT FALSE,
226 PRIMARY KEY (id_type_cotis
)
229 DROP TABLE IF EXISTS galette_transactions
CASCADE;
230 CREATE TABLE galette_transactions (
231 trans_id
integer DEFAULT nextval('galette_transactions_id_seq'::text) NOT NULL,
232 trans_date
date DEFAULT '19010101' NOT NULL,
233 trans_amount
real DEFAULT '0',
234 trans_desc
character varying(150) NOT NULL DEFAULT '',
235 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
236 PRIMARY KEY (trans_id
)
239 DROP TABLE IF EXISTS galette_cotisations
;
240 CREATE TABLE galette_cotisations (
241 id_cotis
integer DEFAULT nextval('galette_cotisations_id_seq'::text) NOT NULL,
242 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
243 id_type_cotis
integer REFERENCES galette_types_cotisation (id_type_cotis
) ON DELETE RESTRICT ON UPDATE CASCADE,
244 montant_cotis
real DEFAULT '0',
245 type_paiement_cotis
integer REFERENCES galette_paymenttypes (type_id
) ON DELETE RESTRICT ON UPDATE CASCADE NOT NULL,
247 date_enreg
date DEFAULT '19010101' NOT NULL,
248 date_debut_cotis
date DEFAULT '19010101' NOT NULL,
249 date_fin_cotis
date DEFAULT '19010101' NOT NULL,
250 trans_id
integer DEFAULT NULL REFERENCES galette_transactions (trans_id
) ON DELETE RESTRICT ON UPDATE CASCADE,
251 PRIMARY KEY (id_cotis
)
254 DROP TABLE IF EXISTS galette_preferences
;
255 CREATE TABLE galette_preferences (
256 id_pref
integer DEFAULT nextval('galette_preferences_id_seq'::text) NOT NULL,
257 nom_pref
character varying(100) DEFAULT '' NOT NULL,
258 val_pref
character varying(200) DEFAULT '' NOT NULL,
259 PRIMARY KEY (id_pref
)
261 -- add index, nom_pref is used as foreign key elsewhere
262 CREATE UNIQUE INDEX galette_preferences_nom_pref_idx
ON galette_preferences (nom_pref
);
264 DROP TABLE IF EXISTS galette_logs
;
265 CREATE TABLE galette_logs (
266 id_log
integer DEFAULT nextval('galette_logs_id_seq'::text) NOT NULL,
267 date_log
timestamp NOT NULL,
268 ip_log
character varying(46) DEFAULT '' NOT NULL,
269 adh_log
character varying(41) DEFAULT '' NOT NULL,
276 -- Table for dynamic fields description;
277 DROP TABLE IF EXISTS galette_field_types
CASCADE;
278 CREATE TABLE galette_field_types (
279 field_id
integer DEFAULT nextval('galette_field_types_id_seq'::text) NOT NULL,
280 field_form
character varying(10) NOT NULL,
281 field_index
integer DEFAULT '0' NOT NULL,
282 field_name
character varying(40) DEFAULT '' NOT NULL,
283 field_perm
integer DEFAULT '0' NOT NULL,
284 field_type
integer DEFAULT '0' NOT NULL,
285 field_required
boolean DEFAULT FALSE,
286 field_pos
integer DEFAULT '0' NOT NULL,
287 field_width
integer DEFAULT NULL,
288 field_height
integer DEFAULT NULL,
289 field_size
integer DEFAULT NULL,
290 field_repeat
integer DEFAULT NULL,
291 field_layout
integer DEFAULT NULL,
292 PRIMARY KEY (field_id
)
294 -- add index, field_form is used elsewhere
295 CREATE INDEX galette_field_types_field_form_idx
ON galette_field_types (field_form
);
297 -- Table for dynamic fields data;
298 DROP TABLE IF EXISTS galette_dynamic_fields
;
299 CREATE TABLE galette_dynamic_fields (
300 item_id
integer DEFAULT '0' NOT NULL, -- could be id_adh, trans_id, id_cotis
301 field_id
integer REFERENCES galette_field_types (field_id
) ON DELETE RESTRICT ON UPDATE CASCADE,
302 field_form
character varying(10) NOT NULL, -- not an fkey!
303 val_index
integer DEFAULT '0' NOT NULL,
304 field_val
text DEFAULT '',
305 PRIMARY KEY (item_id
, field_id
, field_form
, val_index
)
308 DROP TABLE IF EXISTS galette_pictures
;
309 CREATE TABLE galette_pictures (
310 id_adh
integer DEFAULT '0' NOT NULL,
311 picture bytea
NOT NULL,
312 format
character varying(30) DEFAULT '' NOT NULL,
316 -- Table for dynamic translation of strings;
317 DROP TABLE IF EXISTS galette_l10n
;
318 CREATE TABLE galette_l10n (
319 text_orig
character varying(100) NOT NULL,
320 text_locale
character varying(15) NOT NULL,
321 text_nref
integer DEFAULT '1' NOT NULL,
322 text_trans
character varying(100) DEFAULT '' NOT NULL,
323 PRIMARY KEY (text_orig
, text_locale
)
326 -- new table for temporary passwords 2006-02-18;
327 DROP TABLE IF EXISTS galette_tmppasswds
;
328 CREATE TABLE galette_tmppasswds (
329 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE CASCADE ON UPDATE CASCADE,
330 tmp_passwd
character varying(60) NOT NULL,
331 date_crea_tmp_passwd
timestamp NOT NULL,
335 -- Table for automatic mails and their translations 2007-10-22;
336 DROP TABLE IF EXISTS galette_texts
;
337 CREATE TABLE galette_texts (
338 tid
integer DEFAULT nextval('galette_texts_id_seq'::text) NOT NULL,
339 tref
character varying(20) NOT NULL,
340 tsubject
character varying(256) NOT NULL,
342 tlang
character varying(16) NOT NULL,
343 tcomment
character varying(64) NOT NULL,
347 DROP TABLE IF EXISTS galette_fields_categories
CASCADE;
348 CREATE TABLE galette_fields_categories (
349 id_field_category
integer DEFAULT nextval('galette_fields_categories_id_seq'::text) NOT NULL,
350 table_name character varying(30) NOT NULL,
351 category
character varying(50) NOT NULL,
352 position integer NOT NULL,
353 PRIMARY KEY (id_field_category
)
356 DROP TABLE IF EXISTS galette_fields_config
;
357 CREATE TABLE galette_fields_config (
358 table_name character varying(30) NOT NULL,
359 field_id
character varying(30) NOT NULL,
360 required
boolean NOT NULL,
361 visible
integer NOT NULL,
362 position integer NOT NULL,
363 id_field_category
integer REFERENCES galette_fields_categories
ON DELETE RESTRICT ON UPDATE CASCADE,
364 PRIMARY KEY (table_name, field_id
)
367 -- Table for mailing history storage
368 DROP TABLE IF EXISTS galette_mailing_history
;
369 CREATE TABLE galette_mailing_history (
370 mailing_id
integer DEFAULT nextval('galette_mailing_history_id_seq'::text) NOT NULL,
371 mailing_sender
integer REFERENCES galette_adherents (id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
372 mailing_subject
character varying(255) NOT NULL,
373 mailing_body
text NOT NULL,
374 mailing_date
timestamp NOT NULL,
375 mailing_recipients
text NOT NULL,
376 mailing_sent
boolean DEFAULT FALSE,
377 mailing_sender_name
character varying(100) DEFAULT NULL,
378 mailing_sender_address
character varying(255) DEFAULT NULL,
379 PRIMARY KEY (mailing_id
)
383 DROP TABLE IF EXISTS galette_groups
CASCADE;
384 CREATE TABLE galette_groups (
385 id_group
integer DEFAULT nextval('galette_groups_id_seq'::text) NOT NULL,
386 group_name
character varying(50) NOT NULL CONSTRAINT name UNIQUE,
387 creation_date
timestamp NOT NULL,
388 parent_group
integer DEFAULT NULL REFERENCES galette_groups(id_group
) ON DELETE RESTRICT ON UPDATE CASCADE,
389 PRIMARY KEY (id_group
)
392 -- table for groups managers
393 DROP TABLE IF EXISTS galette_groups_managers
CASCADE;
394 CREATE TABLE galette_groups_managers (
395 id_group
integer REFERENCES galette_groups(id_group
) ON DELETE RESTRICT ON UPDATE CASCADE,
396 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
397 PRIMARY KEY (id_group
,id_adh
)
400 -- table for groups members
401 DROP TABLE IF EXISTS galette_groups_members
CASCADE;
402 CREATE TABLE galette_groups_members (
403 id_group
integer REFERENCES galette_groups(id_group
) ON DELETE RESTRICT ON UPDATE CASCADE,
404 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE RESTRICT ON UPDATE CASCADE,
405 PRIMARY KEY (id_group
,id_adh
)
408 -- Table for reminders
409 DROP TABLE IF EXISTS galette_reminders
;
410 CREATE TABLE galette_reminders (
411 reminder_id
integer DEFAULT nextval('galette_reminders_id_seq'::text) NOT NULL,
412 reminder_type
integer NOT NULL,
413 reminder_dest
integer REFERENCES galette_adherents (id_adh
) ON DELETE CASCADE ON UPDATE CASCADE,
414 reminder_date
timestamp NOT NULL,
415 reminder_success
boolean DEFAULT FALSE,
416 reminder_nomail
boolean DEFAULT TRUE,
417 reminder_comment
text,
418 PRIMARY KEY (reminder_id
)
421 DROP TABLE IF EXISTS galette_pdfmodels
CASCADE;
422 CREATE TABLE galette_pdfmodels (
423 model_id
integer DEFAULT nextval('galette_pdfmodels_id_seq'::text) NOT NULL,
424 model_name
character varying(50) NOT NULL,
425 model_type
integer NOT NULL,
430 model_title
character varying(100),
431 model_subtitle
character varying(100),
432 model_parent
integer DEFAULT NULL REFERENCES galette_pdfmodels (model_id
) ON DELETE RESTRICT ON UPDATE CASCADE,
433 PRIMARY KEY (model_id
)
436 -- Table for import models
437 DROP TABLE IF EXISTS galette_import_model
;
438 CREATE TABLE galette_import_model (
439 model_id
integer DEFAULT nextval('galette_import_model_id_seq'::text) NOT NULL,
441 model_creation_date
timestamp NOT NULL,
442 PRIMARY KEY (model_id
)
445 -- Table for saved searches
446 DROP TABLE IF EXISTS galette_searches
;
447 CREATE TABLE galette_searches (
448 search_id
integer DEFAULT nextval('galette_searches_id_seq'::text) NOT NULL,
449 name character varying(100) DEFAULT NULL,
450 form
character varying(50) NOT NULL,
451 parameters jsonb
NOT NULL,
452 parameters_sum bytea
NOT NULL,
453 id_adh
integer REFERENCES galette_adherents (id_adh
) ON DELETE CASCADE ON UPDATE CASCADE,
454 creation_date
timestamp NOT NULL,
455 PRIMARY KEY (search_id
)
457 -- add index on table to look for existing searches
458 CREATE INDEX galette_searches_idx
ON galette_searches (form
, parameters_sum
, id_adh
);
461 -- table for database version
462 DROP TABLE IF EXISTS galette_database
;
463 CREATE TABLE galette_database (
464 version decimal NOT NULL
466 INSERT INTO galette_database (version) VALUES(0.931);