nxy/files/schema.sql

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 text 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();