alecpl
2011-09-20 7bf3ce72e56aff9b9b05d450a58eef79d66fb238
commit | author | age
e019f2 1 -- Roundcube Webmail initial database structure
798ad5 2
977a29 3 --
T 4 -- Sequence "user_ids"
5 -- Name: user_ids; Type: SEQUENCE; Schema: public; Owner: postgres
6 --
7
8 CREATE SEQUENCE user_ids
9     INCREMENT BY 1
10     NO MAXVALUE
11     NO MINVALUE
12     CACHE 1;
13
f5dc2a 14 --
1cded8 15 -- Table "users"
f5dc2a 16 -- Name: users; Type: TABLE; Schema: public; Owner: postgres
S 17 --
18
19 CREATE TABLE users (
15a9d1 20     user_id integer DEFAULT nextval('user_ids'::text) PRIMARY KEY,
22d6b5 21     username varchar(128) DEFAULT '' NOT NULL,
A 22     mail_host varchar(128) DEFAULT '' NOT NULL,
23     alias varchar(128) DEFAULT '' NOT NULL,
f5dc2a 24     created timestamp with time zone DEFAULT now() NOT NULL,
e2402e 25     last_login timestamp with time zone DEFAULT NULL,
22d6b5 26     "language" varchar(5),
ace511 27     preferences text DEFAULT ''::text NOT NULL,
8381ec 28     CONSTRAINT users_username_key UNIQUE (username, mail_host)
f5dc2a 29 );
S 30
6cb778 31 CREATE INDEX users_alias_id_idx ON users (alias);
f5dc2a 32
b59474 33   
f5dc2a 34 --
1cded8 35 -- Table "session"
T 36 -- Name: session; Type: TABLE; Schema: public; Owner: postgres
37 --
38
39 CREATE TABLE "session" (
22d6b5 40     sess_id varchar(40) DEFAULT '' PRIMARY KEY,
1cded8 41     created timestamp with time zone DEFAULT now() NOT NULL,
T 42     changed timestamp with time zone DEFAULT now() NOT NULL,
22d6b5 43     ip varchar(41) NOT NULL,
1cded8 44     vars text NOT NULL
T 45 );
46
3e48d2 47 CREATE INDEX session_changed_idx ON session (changed);
1cded8 48
b59474 49
T 50 --
51 -- Sequence "identity_ids"
52 -- Name: identity_ids; Type: SEQUENCE; Schema: public; Owner: postgres
53 --
54
55 CREATE SEQUENCE identity_ids
56     START WITH 1
57     INCREMENT BY 1
58     NO MAXVALUE
59     NO MINVALUE
60     CACHE 1;
1cded8 61
T 62 --
63 -- Table "identities"
64 -- Name: identities; Type: TABLE; Schema: public; Owner: postgres
65 --
66
67 CREATE TABLE identities (
15a9d1 68     identity_id integer DEFAULT nextval('identity_ids'::text) PRIMARY KEY,
22d6b5 69     user_id integer NOT NULL
80152b 70         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
a35062 71     changed timestamp with time zone DEFAULT now() NOT NULL,
a493ea 72     del smallint DEFAULT 0 NOT NULL,
A 73     standard smallint DEFAULT 0 NOT NULL,
22d6b5 74     name varchar(128) NOT NULL,
A 75     organization varchar(128),
76     email varchar(128) NOT NULL,
77     "reply-to" varchar(128),
78     bcc varchar(128),
a0109c 79     signature text,
S 80     html_signature integer DEFAULT 0 NOT NULL
1cded8 81 );
T 82
94fe9c 83 CREATE INDEX identities_user_id_idx ON identities (user_id, del);
b59474 84
T 85
86 --
87 -- Sequence "contact_ids"
88 -- Name: contact_ids; Type: SEQUENCE; Schema: public; Owner: postgres
89 --
90
91 CREATE SEQUENCE contact_ids
92     START WITH 1
93     INCREMENT BY 1
94     NO MAXVALUE
95     NO MINVALUE
96     CACHE 1;
1cded8 97
T 98 --
99 -- Table "contacts"
100 -- Name: contacts; Type: TABLE; Schema: public; Owner: postgres
101 --
102
103 CREATE TABLE contacts (
15a9d1 104     contact_id integer DEFAULT nextval('contact_ids'::text) PRIMARY KEY,
22d6b5 105     user_id integer NOT NULL
3e2637 106         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
1cded8 107     changed timestamp with time zone DEFAULT now() NOT NULL,
a493ea 108     del smallint DEFAULT 0 NOT NULL,
22d6b5 109     name varchar(128) DEFAULT '' NOT NULL,
6f0968 110     email varchar(255) DEFAULT '' NOT NULL,
22d6b5 111     firstname varchar(128) DEFAULT '' NOT NULL,
A 112     surname varchar(128) DEFAULT '' NOT NULL,
3e2637 113     vcard text,
T 114     words text
1cded8 115 );
T 116
23b765 117 CREATE INDEX contacts_user_id_idx ON contacts (user_id, email);
22d6b5 118
A 119 --
120 -- Sequence "contactgroups_ids"
121 -- Name: contactgroups_ids; Type: SEQUENCE; Schema: public; Owner: postgres
122 --
123
124 CREATE SEQUENCE contactgroups_ids
125     INCREMENT BY 1
126     NO MAXVALUE
127     NO MINVALUE
128     CACHE 1;
129
130 --
131 -- Table "contactgroups"
132 -- Name: contactgroups; Type: TABLE; Schema: public; Owner: postgres
133 --
134
135 CREATE TABLE contactgroups (
136     contactgroup_id integer DEFAULT nextval('contactgroups_ids'::text) PRIMARY KEY,
137     user_id integer NOT NULL
138         REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
139     changed timestamp with time zone DEFAULT now() NOT NULL,
140     del smallint NOT NULL DEFAULT 0,
141     name varchar(128) NOT NULL DEFAULT ''
142 );
143
144 CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del);
145
146 --
147 -- Table "contactgroupmembers"
148 -- Name: contactgroupmembers; Type: TABLE; Schema: public; Owner: postgres
149 --
ace511 150
22d6b5 151 CREATE TABLE contactgroupmembers (
A 152     contactgroup_id integer NOT NULL
153         REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
154     contact_id integer NOT NULL
155         REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
156     created timestamp with time zone DEFAULT now() NOT NULL,
157     PRIMARY KEY (contactgroup_id, contact_id)
158 );
1cded8 159
3a5476 160 CREATE INDEX contactgroupmembers_contact_id_idx ON contactgroupmembers (contact_id);
A 161
1cded8 162 --
b59474 163 -- Sequence "cache_ids"
T 164 -- Name: cache_ids; Type: SEQUENCE; Schema: public; Owner: postgres
165 --
166
167 CREATE SEQUENCE cache_ids
168     INCREMENT BY 1
169     NO MAXVALUE
170     NO MINVALUE
171     CACHE 1;
172
173 --
1cded8 174 -- Table "cache"
T 175 -- Name: cache; Type: TABLE; Schema: public; Owner: postgres
176 --
177
178 CREATE TABLE "cache" (
15a9d1 179     cache_id integer DEFAULT nextval('cache_ids'::text) PRIMARY KEY,
22d6b5 180     user_id integer NOT NULL
80152b 181         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
22d6b5 182     cache_key varchar(128) DEFAULT '' NOT NULL,
1cded8 183     created timestamp with time zone DEFAULT now() NOT NULL,
T 184     data text NOT NULL
185 );
186
edc63c 187 CREATE INDEX cache_user_id_idx ON "cache" (user_id, cache_key);
e4d9f0 188 CREATE INDEX cache_created_idx ON "cache" (created);
1cded8 189
T 190 --
80152b 191 -- Table "cache_index"
A 192 -- Name: cache_index; Type: TABLE; Schema: public; Owner: postgres
b59474 193 --
T 194
80152b 195 CREATE TABLE cache_index (
22d6b5 196     user_id integer NOT NULL
80152b 197         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
A 198     mailbox varchar(255) NOT NULL,
199     changed timestamp with time zone DEFAULT now() NOT NULL,
609d39 200     valid smallint NOT NULL DEFAULT 0,
80152b 201     data text NOT NULL,
A 202     PRIMARY KEY (user_id, mailbox)
1cded8 203 );
T 204
80152b 205 CREATE INDEX cache_index_changed_idx ON cache_index (changed);
A 206
207 --
208 -- Table "cache_thread"
209 -- Name: cache_thread; Type: TABLE; Schema: public; Owner: postgres
210 --
211
212 CREATE TABLE cache_thread (
213     user_id integer NOT NULL
214         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
215     mailbox varchar(255) NOT NULL,
216     changed timestamp with time zone DEFAULT now() NOT NULL,
217     data text NOT NULL,
218     PRIMARY KEY (user_id, mailbox)
219 );
220
221 CREATE INDEX cache_thread_changed_idx ON cache_thread (changed);
222
223 --
224 -- Table "cache_messages"
225 -- Name: cache_messages; Type: TABLE; Schema: public; Owner: postgres
226 --
227
228 CREATE TABLE cache_messages (
229     user_id integer NOT NULL
230         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
231     mailbox varchar(255) NOT NULL,
232     uid integer NOT NULL,
233     changed timestamp with time zone DEFAULT now() NOT NULL,
234     data text NOT NULL,
609d39 235     flags integer NOT NULL DEFAULT 0,
80152b 236     PRIMARY KEY (user_id, mailbox, uid)
A 237 );
238
239 CREATE INDEX cache_messages_changed_idx ON cache_messages (changed);
66df08 240
A 241 --
242 -- Table "dictionary"
243 -- Name: dictionary; Type: TABLE; Schema: public; Owner: postgres
244 --
245
246 CREATE TABLE dictionary (
247     user_id integer DEFAULT NULL
248         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
249    "language" varchar(5) NOT NULL,
250     data text NOT NULL,
251     CONSTRAINT dictionary_user_id_language_key UNIQUE (user_id, "language")
252 );
f8e48d 253
A 254 --
255 -- Sequence "searches_ids"
256 -- Name: searches_ids; Type: SEQUENCE; Schema: public; Owner: postgres
257 --
258
259 CREATE SEQUENCE search_ids
260     INCREMENT BY 1
261     NO MAXVALUE
262     NO MINVALUE
263     CACHE 1;
264
265 --
266 -- Table "searches"
267 -- Name: searches; Type: TABLE; Schema: public; Owner: postgres
268 --
269
270 CREATE TABLE searches (
271     search_id integer DEFAULT nextval('search_ids'::text) PRIMARY KEY,
272     user_id integer NOT NULL
273         REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
274     "type" smallint DEFAULT 0 NOT NULL,
275     name varchar(128) NOT NULL,
276     data text NOT NULL,
277     CONSTRAINT searches_user_id_key UNIQUE (user_id, "type", name)
278 );