12 |
create table lists ( |
create table lists ( |
13 |
id serial, |
id serial, |
14 |
name text not null, |
name text not null, |
15 |
|
email text not null, |
16 |
bounce_limit int not null default 3, |
bounce_limit int not null default 3, |
17 |
date timestamp not null default now(), |
date timestamp not null default now(), |
18 |
primary key(id) |
primary key(id) |
36 |
|
|
37 |
create index messages_md5_ind on messages(md5); |
create index messages_md5_ind on messages(md5); |
38 |
|
|
39 |
create table message_list ( |
create table queue ( |
40 |
message_id int not null references messages(id) on update cascade on delete cascade, |
message_id int not null references messages(id) on update cascade on delete cascade, |
41 |
list_id int not null references lists(id) on update cascade on delete cascade, |
list_id int not null references lists(id) on update cascade on delete cascade, |
42 |
date timestamp not null default now(), |
date timestamp not null default now(), |
43 |
|
all_sent boolean default false, |
44 |
primary key(message_id, list_id) |
primary key(message_id, list_id) |
45 |
); |
); |
46 |
|
|
48 |
message_id int not null references messages(id) on update cascade on delete cascade, |
message_id int not null references messages(id) on update cascade on delete cascade, |
49 |
user_id int not null references users(id) on update cascade on delete cascade, |
user_id int not null references users(id) on update cascade on delete cascade, |
50 |
date timestamp not null default now(), |
date timestamp not null default now(), |
|
sent boolean not null default false, |
|
51 |
primary key(message_id, user_id) |
primary key(message_id, user_id) |
52 |
); |
); |
53 |
|
|
54 |
create table received ( |
create table received ( |
55 |
user_id not null references users(id) on update cascade on delete cascade, |
id serial, |
56 |
|
user_id int not null references users(id) on update cascade on delete cascade, |
57 |
message text not null, |
message text not null, |
58 |
bounced boolean not null default false, |
bounced boolean not null default false, |
59 |
date timestamp not null default now(), |
date timestamp not null default now(), |
60 |
|
primary key (id) |
61 |
); |
); |
62 |
|
|
63 |
|
|
65 |
insert into users (email, full_name) values ('dpavlin@gmail.com', 'DbP'); |
insert into users (email, full_name) values ('dpavlin@gmail.com', 'DbP'); |
66 |
insert into users (email, full_name) values ('xxx_doesnt_exist_xxx@gmail.com', 'fake'); |
insert into users (email, full_name) values ('xxx_doesnt_exist_xxx@gmail.com', 'fake'); |
67 |
|
|
68 |
insert into lists (name) values ('Just me'); |
insert into lists (name, email) values ('Just me','my-alter-ego@rot13.org'); |
69 |
insert into lists (name) values ('All users'); |
insert into lists (name, email) values ('All users','announce@example.com'); |
70 |
|
|
71 |
insert into user_list (user_id, list_id) select users.id,1 from users limit 1; |
insert into user_list (user_id, list_id) select users.id,1 from users limit 1; |
72 |
insert into user_list (user_id, list_id) select users.id,2 from users; |
insert into user_list (user_id, list_id) select users.id,2 from users; |