+BEGIN;
+
CREATE LANGUAGE plpgsql;
);
---
---- Alias addresses to local boxes.
----
-CREATE TABLE "alias" (
- domain varchar(64) NOT NULL,
- pattern varchar(64) NOT NULL,
- box varchar(64) NOT NULL
- REFERENCES box (address)
- ON DELETE CASCADE,
- created timestamp NOT NULL
- DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (domain, pattern, box),
-);
-
----
--- Domains that are considered local (hosted by this server)
---
CREATE TABLE "relaylocal" (
---
CREATE TABLE "box" (
address varchar(64) NOT NULL,
- user varchar(32) NOT NULL
- REFERENCES user (id)
+ "user" varchar(32) NOT NULL
+ REFERENCES "user" (id)
ON DELETE CASCADE,
max_size bigint NOT NULL,
size bigint NOT NULL
max_msgs bigint NOT NULL,
msgs bigint NOT NULL
DEFAULT 0,
- created timestamp NOT NULL
+ time_created timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
- in timestamp NOT NULL
+ time_in timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
- out timestamp NOT NULL
+ time_out timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
- delete timestamp NOT NULL
+ time_delete timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
filter boolean NOT NULL
DEFAULT 'f',
PRIMARY KEY (address)
);
-CREATE FUNCTION box_delete RETURNS trigger AS $box_delete$
+CREATE FUNCTION box_delete() RETURNS trigger AS $box_delete$
BEGIN
INSERT INTO box_deleted VALUES(OLD.address);
RETURN NULL;
created timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
size bigint NOT NULL,
- PRIMARY KEY (id),
+ PRIMARY KEY (id)
);
CREATE INDEX mail_box_index ON mail (box);
-CREATE FUNCTION mail_add RETURNS trigger AS $mail_add$
+CREATE FUNCTION mail_add() RETURNS trigger AS $mail_add$
BEGIN
UPDATE box SET
size = size + NEW.size,
msgs = msgs + 1,
- in = CURRENT_TIMESTAMP
+ time_in = CURRENT_TIMESTAMP
WHERE address = NEW.box;
RETURN NEW;
END;
BEFORE INSERT ON mail FOR EACH ROW
EXECUTE PROCEDURE mail_add();
-CREATE FUNCTION mail_delete RETURNS trigger AS $mail_delete$
+CREATE FUNCTION mail_delete() RETURNS trigger AS $mail_delete$
BEGIN
UPDATE box SET
size = size - OLD.size,
msgs = msgs - 1,
- delete = CURRENT_TIMESTAMP
+ time_delete = CURRENT_TIMESTAMP
WHERE address = OLD.box;
INSERT INTO mail_deleted VALUES(OLD.file);
RETURN NULL;
---
+--- Alias addresses to local boxes.
+---
+CREATE TABLE "alias" (
+ domain varchar(64) NOT NULL,
+ pattern varchar(64) NOT NULL,
+ box varchar(64) NOT NULL
+ REFERENCES box (address)
+ ON DELETE CASCADE,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (domain, pattern, box)
+);
+
+
+
+---
--- Queue of mail to be relayed out
---
CREATE TABLE "relayqueue" (
id bigserial NOT NULL,
- from varchar(64) NOT NULL,
+ "from" varchar(64) NOT NULL,
ipaddr inet NOT NULL,
todomain varchar(64) NOT NULL,
touser varchar(64) NOT NULL,
);
CREATE INDEX relayqueue_todomain_index ON relayqueue (todomain);
-CREATE FUNCTION relayqueue_delete RETURNS trigger AS $relayqueue_delete$
+CREATE FUNCTION relayqueue_delete() RETURNS trigger AS $relayqueue_delete$
BEGIN
INSERT INTO mail_deleted VALUES(OLD.file);
RETURN NULL;
---
CREATE TABLE "session" (
id char(64) NOT NULL,
- expires bigint NOT NULL,
+ expires timestamp NOT NULL,
data text NOT NULL,
PRIMARY KEY (id)
);
+
+COMMIT;