2 |
id serial, |
id serial, |
3 |
email text not null, |
email text not null, |
4 |
full_name text not null, |
full_name text not null, |
5 |
date timestamp default now(), |
date timestamp not null default now(), |
6 |
|
active boolean not null default true, |
7 |
|
bounce_count int not null default 0, |
8 |
|
ext_id text, |
9 |
primary key(id) |
primary key(id) |
10 |
); |
); |
11 |
|
|
12 |
create table lists ( |
create table lists ( |
13 |
id serial, |
id serial, |
14 |
name text not null, |
name text not null, |
15 |
date timestamp default now(), |
bounce_limit int not null default 3, |
16 |
|
date timestamp not null default now(), |
17 |
primary key(id) |
primary key(id) |
18 |
); |
); |
19 |
|
|
20 |
create table user_list ( |
create table user_list ( |
21 |
user_id int not null references users(id), |
user_id int not null references users(id) on update cascade on delete cascade, |
22 |
list_id int not null references lists(id), |
list_id int not null references lists(id) on update cascade on delete cascade, |
23 |
date timestamp default now(), |
date timestamp not null default now(), |
24 |
primary key (user_id, list_id) |
primary key (user_id, list_id) |
25 |
); |
); |
26 |
|
|
27 |
create table messages ( |
create table messages ( |
28 |
id serial, |
id serial, |
29 |
|
from text not null, |
30 |
message text not null, |
message text not null, |
31 |
date timestamp default now(), |
date timestamp not null default now(), |
32 |
primary key(id) |
primary key(id) |
33 |
); |
); |
34 |
|
|
35 |
|
create table message_list ( |
36 |
|
message_id int not null references messages(id) on update cascade on delete cascade, |
37 |
|
list_id int not null references lists(id) on update cascade on delete cascade, |
38 |
|
date timestamp not null default now(), |
39 |
|
primary key(message_id, list_id) |
40 |
|
); |
41 |
|
|
42 |
|
create table sent ( |
43 |
|
message_id int not null references messages(id) on update cascade on delete cascade, |
44 |
|
user_id int not null references users(id) on update cascade on delete cascade, |
45 |
|
date timestamp not null default now(), |
46 |
|
primary key(message_id, user_id) |
47 |
|
); |
48 |
|
|
49 |
|
create table received ( |
50 |
|
user_id not null references users(id) on update cascade on delete cascade, |
51 |
|
message text not null, |
52 |
|
bounced boolean not null default false, |
53 |
|
date timestamp not null default now(), |
54 |
|
); |
55 |
|
|
56 |
|
|
57 |
insert into users (email, full_name) values ('dpavlin@rot13.org', 'DbP'); |
insert into users (email, full_name) values ('dpavlin@rot13.org', 'DbP'); |
58 |
insert into users (email, full_name) values ('dpavlin@gmail.com', 'DbP'); |
insert into users (email, full_name) values ('dpavlin@gmail.com', 'DbP'); |
59 |
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'); |