89 lines
2.5 KiB
PL/PgSQL
89 lines
2.5 KiB
PL/PgSQL
create table if not exists quotes (
|
|
id serial primary key,
|
|
nick citext not null,
|
|
item text not null,
|
|
channel varchar(32) not null,
|
|
created_by varchar(30) not null,
|
|
created_at timestamp not null default current_timestamp,
|
|
unique (nick, item)
|
|
);
|
|
|
|
create table if not exists mcmaniacs (
|
|
id serial primary key,
|
|
item citext not null,
|
|
unique (item)
|
|
);
|
|
|
|
create table if not exists timers (
|
|
id serial primary key,
|
|
mask varchar(255) not null,
|
|
target varchar(32) not null,
|
|
message text not null,
|
|
delay varchar(10) not null,
|
|
ends_at timestamp not null,
|
|
created_at timestamp not null default current_timestamp
|
|
);
|
|
|
|
create table if not exists tells (
|
|
id serial primary key,
|
|
from_nick varchar(30) not null,
|
|
to_nick varchar(30) not null,
|
|
message text not null,
|
|
created_at timestamp not null default current_timestamp,
|
|
unique (to_nick, message)
|
|
);
|
|
|
|
create table if not exists seens (
|
|
id serial primary key,
|
|
nick varchar(30) not null,
|
|
host varchar(255) not null,
|
|
channel varchar(32) not null,
|
|
message text not null,
|
|
seen_at timestamp not null default current_timestamp,
|
|
unique (nick)
|
|
);
|
|
|
|
create table if not exists users (
|
|
id serial primary key,
|
|
nick varchar(30) not null,
|
|
husbando varchar(255) null,
|
|
waifu varchar(255) null,
|
|
fines integer default 0,
|
|
unique (nick)
|
|
);
|
|
|
|
create table if not exists kills (
|
|
id serial primary key,
|
|
item text not null,
|
|
unique (item)
|
|
);
|
|
|
|
create table if not exists yiffs (
|
|
id serial primary key,
|
|
item text not null,
|
|
unique (item)
|
|
);
|
|
|
|
create table if not exists last_messages (
|
|
id serial primary key,
|
|
nick varchar(30) not null,
|
|
host varchar(255) not null,
|
|
channel varchar(32) not null,
|
|
item text not null,
|
|
unique (nick, channel)
|
|
);
|
|
|
|
create or replace function quotes_ci_nick_insert_fnc()
|
|
returns trigger as $$
|
|
begin
|
|
NEW.nick = coalesce((select nick from quotes where nick = NEW.nick limit 1), NEW.nick);
|
|
return NEW;
|
|
end $$ language 'plpgsql';
|
|
|
|
drop trigger if exists quotes_ci_nick_trigger on quotes;
|
|
|
|
create trigger quotes_ci_nick_trigger
|
|
before insert on quotes
|
|
for each row
|
|
execute procedure quotes_ci_nick_insert_fnc();
|