Dotclear

source: inc/dbschema/db-schema.php @ 3606:bacbc979195e

Revision 3606:bacbc979195e, 10.6 KB checked in by franck <carnet.franck.paul@…>, 8 years ago (diff)

Revert back from 191 to 255 chars (as utf8mb4 MySQL is only available with 5.7+ server, assuming large-prefix and barracuda), addresses #1278

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
14if (!($_s instanceof dbStruct)) {
15     throw new Exception('No valid schema object');
16}
17
18/* Tables
19-------------------------------------------------------- */
20$_s->blog
21     ->blog_id                ('varchar',         32,       false)
22     ->blog_uid                    ('varchar',         32,       false)
23     ->blog_creadt            ('timestamp',  0,        false,    'now()')
24     ->blog_upddt             ('timestamp',  0,        false,    'now()')
25     ->blog_url                    ('varchar',         255, false)
26     ->blog_name                   ('varchar',         255, false)
27     ->blog_desc                   ('text',       0,        true)
28     ->blog_status            ('smallint',   0,        false,    1)
29
30     ->primary('pk_blog','blog_id')
31     ;
32
33$_s->category
34     ->cat_id                 ('bigint',          0,        false)
35     ->blog_id                ('varchar',         32,       false)
36     ->cat_title                   ('varchar',         255, false)
37     ->cat_url                ('varchar',         255, false)
38     ->cat_desc                    ('text',       0,        true)
39     ->cat_position           ('integer',         0,        true,     0)
40     ->cat_lft                ('integer',         0,        true)
41     ->cat_rgt                ('integer',         0,        true)
42
43     ->primary('pk_category','cat_id')
44
45     ->unique('uk_cat_url','cat_url','blog_id')
46     ;
47
48$_s->session
49     ->ses_id                 ('varchar',         40,       false)
50     ->ses_time                    ('integer',         0,        false,    0)
51     ->ses_start                   ('integer',         0,        false,    0)
52     ->ses_value                   ('text',       0,        false)
53
54     ->primary('pk_session','ses_id')
55     ;
56
57$_s->setting
58     ->setting_id             ('varchar',         255, false)
59     ->blog_id                ('varchar',         32,       true)
60     ->setting_ns             ('varchar',         32,       false,    "'system'")
61     ->setting_value               ('text',       0,        true,     null)
62     ->setting_type           ('varchar',         8,        false,    "'string'")
63     ->setting_label               ('text',       0,        true)
64
65     ->unique('uk_setting','setting_ns','setting_id','blog_id')
66     ;
67
68$_s->user
69     ->user_id                ('varchar',         32,       false)
70     ->user_super             ('smallint',   0,        true)
71     ->user_status            ('smallint',   0,        false,    1)
72     ->user_pwd                    ('varchar',         255, false)
73     ->user_change_pwd        ('smallint',   0,        false,    0)
74     ->user_recover_key       ('varchar',         32,       true,     null)
75     ->user_name                   ('varchar',         255, true,     null)
76     ->user_firstname         ('varchar',         255, true,     null)
77     ->user_displayname       ('varchar',         255, true,     null)
78     ->user_email             ('varchar',         255, true,     null)
79     ->user_url                    ('varchar',         255, true,     null)
80     ->user_desc                   ('text',       0,        true)
81     ->user_default_blog      ('varchar',         32,       true,     null)
82     ->user_options           ('text',       0,        true)
83     ->user_lang                   ('varchar',         5,        true,     null)
84     ->user_tz                ('varchar',         128, false,    "'UTC'")
85     ->user_post_status       ('smallint',   0,        false,    -2)
86     ->user_creadt            ('timestamp',  0,        false,    'now()')
87     ->user_upddt             ('timestamp',  0,        false,    'now()')
88
89     ->primary('pk_user','user_id')
90     ;
91
92$_s->permissions
93     ->user_id                ('varchar',         32,       false)
94     ->blog_id                ('varchar',         32,       false)
95     ->permissions            ('text',       0,        true)
96
97     ->primary('pk_permissions','user_id','blog_id')
98     ;
99
100$_s->post
101     ->post_id                ('bigint',          0,        false)
102     ->blog_id                ('varchar',         32,       false)
103     ->user_id                ('varchar',         32,       false)
104     ->cat_id                 ('bigint',          0,        true)
105     ->post_dt                ('timestamp',  0,        false,    'now()')
106     ->post_tz                ('varchar',         128, false,    "'UTC'")
107     ->post_creadt            ('timestamp',  0,        false,    'now()')
108     ->post_upddt             ('timestamp',  0,        false,    'now()')
109     ->post_password               ('varchar',         32,       true,     null)
110     ->post_type                   ('varchar',         32,       false,    "'post'")
111     ->post_format            ('varchar',         32,       false,    "'xhtml'")
112     ->post_url                    ('varchar',         255, false)
113     ->post_lang                   ('varchar',         5,        true,     null)
114     ->post_title             ('varchar',         255, true,     null)
115     ->post_excerpt           ('text',       0,        true,     null)
116     ->post_excerpt_xhtml     ('text',       0,        true,     null)
117     ->post_content           ('text',       0,        true,     null)
118     ->post_content_xhtml     ('text',       0,        false)
119     ->post_notes             ('text',       0,        true,     null)
120     ->post_meta                   ('text',       0,        true,     null)
121     ->post_words             ('text',       0,        true,     null)
122     ->post_status            ('smallint',   0,        false,    0)
123     ->post_firstpub               ('smallint',   0,        false,    0)
124     ->post_selected               ('smallint',   0,        false,    0)
125     ->post_position               ('integer',         0,        false,    0)
126     ->post_open_comment      ('smallint',   0,        false,    0)
127     ->post_open_tb           ('smallint',   0,        false,    0)
128     ->nb_comment             ('integer',         0,        false,    0)
129     ->nb_trackback           ('integer',         0,        false,    0)
130
131     ->primary('pk_post','post_id')
132
133     ->unique('uk_post_url','post_url','post_type','blog_id')
134     ;
135
136$_s->media
137     ->media_id                    ('bigint',          0,        false)
138     ->user_id                ('varchar',         32,       false)
139     ->media_path             ('varchar',         255, false)
140     ->media_title            ('varchar',         255, false)
141     ->media_file             ('varchar',         255, false)
142     ->media_dir                   ('varchar',         255, false,    "'.'")
143     ->media_meta             ('text',       0,        true,     null)
144     ->media_dt                    ('timestamp',  0,        false,    'now()')
145     ->media_creadt           ('timestamp',  0,        false,    'now()')
146     ->media_upddt            ('timestamp',  0,        false,    'now()')
147     ->media_private               ('smallint',   0,        false,    0)
148
149     ->primary('pk_media','media_id')
150     ;
151
152$_s->post_media
153     ->media_id                    ('bigint',          0,        false)
154     ->post_id                ('bigint',          0,        false)
155     ->link_type                   ('varchar',         32,       false,    "'attachment'")
156
157     ->primary('pk_post_media','media_id','post_id','link_type')
158     ;
159
160$_s->log
161     ->log_id                 ('bigint',          0,        false)
162     ->user_id                ('varchar',         32,       true)
163     ->blog_id                ('varchar',         32,       true)
164     ->log_table                   ('varchar',         255, false)
165     ->log_dt                 ('timestamp',  0,        false,    'now()')
166     ->log_ip                 ('varchar',         39,       false)
167     ->log_msg                ('text',       0,        true,     null)
168
169     ->primary('pk_log','log_id')
170     ;
171
172$_s->version
173     ->module                 ('varchar',         64,       false)
174     ->version                ('varchar',         32,       false)
175
176     ->primary('pk_version','module')
177     ;
178
179$_s->ping
180     ->post_id                ('bigint',          0,        false)
181     ->ping_url                    ('varchar',         255, false)
182     ->ping_dt                ('timestamp',  0,        false,    'now()')
183
184     ->primary('pk_ping','post_id','ping_url')
185     ;
186
187$_s->comment
188     ->comment_id             ('bigint',          0,        false)
189     ->post_id                ('bigint',          0,        false)
190     ->comment_dt             ('timestamp',  0,        false,    'now()')
191     ->comment_tz             ('varchar',         128, false,    "'UTC'")
192     ->comment_upddt               ('timestamp',  0,        false,    'now()')
193     ->comment_author         ('varchar',         255, true,     null)
194     ->comment_email               ('varchar',         255, true,     null)
195     ->comment_site           ('varchar',         255, true,     null)
196     ->comment_content        ('text',       0,        true)
197     ->comment_words               ('text',       0,        true,     null)
198     ->comment_ip             ('varchar',         39,       true,     null)
199     ->comment_status         ('smallint',   0,        true,     0)
200     ->comment_spam_status    ('varchar',         128, true,     0)
201     ->comment_spam_filter    ('varchar',         32,       true,     null)
202     ->comment_trackback      ('smallint',   0,        false,    0)
203
204     ->primary('pk_comment','comment_id')
205     ;
206
207$_s->meta
208     ->meta_id                ('varchar',         255, false)
209     ->meta_type                   ('varchar',         64,       false)
210     ->post_id                ('bigint',          0,        false)
211
212     ->primary('pk_meta','meta_id','meta_type','post_id')
213     ;
214
215$_s->pref
216     ->pref_id                ('varchar',         255, false)
217     ->user_id                ('varchar',         32,       true)
218     ->pref_ws                ('varchar',         32,       false,    "'system'")
219     ->pref_value             ('text',       0,        true,     null)
220     ->pref_type                   ('varchar',         8,        false,    "'string'")
221     ->pref_label             ('text',       0,        true)
222
223     ->unique('uk_pref','pref_ws','pref_id','user_id')
224     ;
225
226/* References indexes
227-------------------------------------------------------- */
228$_s->category->index     ('idx_category_blog_id',           'btree',  'blog_id');
229$_s->category->index     ('idx_category_cat_lft_blog_id',   'btree',  'blog_id', 'cat_lft');
230$_s->category->index     ('idx_category_cat_rgt_blog_id',   'btree',  'blog_id', 'cat_rgt');
231$_s->setting->index      ('idx_setting_blog_id',                 'btree',  'blog_id');
232$_s->user->index         ('idx_user_user_default_blog',          'btree',  'user_default_blog');
233$_s->permissions->index  ('idx_permissions_blog_id',             'btree',  'blog_id');
234$_s->post->index         ('idx_post_cat_id',                     'btree',  'cat_id');
235$_s->post->index         ('idx_post_user_id',                    'btree',  'user_id');
236$_s->post->index         ('idx_post_blog_id',                    'btree',  'blog_id');
237$_s->media->index        ('idx_media_user_id',                   'btree',  'user_id');
238$_s->post_media->index   ('idx_post_media_post_id',              'btree',  'post_id');
239$_s->post_media->index   ('idx_post_media_media_id',             'btree',  'media_id');
240$_s->log->index               ('idx_log_user_id',                     'btree',  'user_id');
241$_s->comment->index      ('idx_comment_post_id',                 'btree',  'post_id');
242$_s->meta->index         ('idx_meta_post_id',                    'btree',  'post_id');
243$_s->meta->index         ('idx_meta_meta_type',                  'btree',  'meta_type');
244$_s->pref->index         ('idx_pref_user_id',                    'btree',  'user_id');
245
246/* Performance indexes
247-------------------------------------------------------- */
248$_s->comment->index      ('idx_comment_post_id_dt_status',  'btree',  'post_id', 'comment_dt', 'comment_status');
249$_s->post->index         ('idx_post_post_dt',                    'btree',  'post_dt');
250$_s->post->index         ('idx_post_post_dt_post_id',       'btree',  'post_dt', 'post_id');
251$_s->post->index         ('idx_blog_post_post_dt_post_id',  'btree',  'blog_id', 'post_dt', 'post_id');
252$_s->post->index         ('idx_blog_post_post_status',      'btree',  'blog_id', 'post_status');
253$_s->blog->index         ('idx_blog_blog_upddt',                 'btree',  'blog_upddt');
254$_s->user->index         ('idx_user_user_super',                 'btree',  'user_super');
255
256/* Foreign keys
257-------------------------------------------------------- */
258$_s->category->reference('fk_category_blog','blog_id','blog','blog_id','cascade','cascade');
259$_s->setting->reference('fk_setting_blog','blog_id','blog','blog_id','cascade','cascade');
260$_s->user->reference('fk_user_default_blog','user_default_blog','blog','blog_id','cascade','set null');
261$_s->permissions->reference('fk_permissions_blog','blog_id','blog','blog_id','cascade','cascade');
262$_s->permissions->reference('fk_permissions_user','user_id','user','user_id','cascade','cascade');
263$_s->post->reference('fk_post_category','cat_id','category','cat_id','cascade','set null');
264$_s->post->reference('fk_post_user','user_id','user','user_id','cascade','cascade');
265$_s->post->reference('fk_post_blog','blog_id','blog','blog_id','cascade','cascade');
266$_s->media->reference('fk_media_user','user_id','user','user_id','cascade','cascade');
267$_s->post_media->reference('fk_media','media_id','media','media_id','cascade','cascade');
268$_s->post_media->reference('fk_media_post','post_id','post','post_id','cascade','cascade');
269$_s->ping->reference('fk_ping_post','post_id','post','post_id','cascade','cascade');
270$_s->comment->reference('fk_comment_post','post_id','post','post_id','cascade','cascade');
271$_s->log->reference('fk_log_blog','blog_id','blog','blog_id','cascade','set null');
272$_s->meta->reference('fk_meta_post','post_id','post','post_id','cascade','cascade');
273$_s->pref->reference('fk_pref_user','user_id','user','user_id','cascade','cascade');
274
275/* PostgreSQL specific indexes
276-------------------------------------------------------- */
277if ($_s->driver() == 'pgsql')
278{
279     $_s->setting->index      ('idx_setting_blog_id_null',  'btree',  '(blog_id IS NULL)');
280     $_s->media->index        ('idx_media_media_path',      'btree',  'media_path', 'media_dir');
281     $_s->pref->index         ('idx_pref_user_id_null',          'btree',  '(user_id IS NULL)');
282}
Note: See TracBrowser for help on using the repository browser.

Sites map