41 lines
1020 B
PL/PgSQL
41 lines
1020 B
PL/PgSQL
create table if not exists users (
|
|
id integer primary key generated always as identity,
|
|
email varchar(256) unique not null,
|
|
secret varchar(256) not null,
|
|
full_name varchar(256) not null,
|
|
email_verified boolean not null default false,
|
|
created_at timestamp,
|
|
updated_at timestamp
|
|
);
|
|
|
|
create index if not exists users_email_idx on users(email);
|
|
|
|
create or replace function set_created_at()
|
|
returns trigger as $$
|
|
begin
|
|
new.created_at = now();
|
|
new.updated_at = now();
|
|
return new;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
create or replace trigger on_user_created
|
|
before insert on users
|
|
for each row
|
|
execute function set_created_at();
|
|
|
|
create or replace function set_updated_at()
|
|
returns trigger as $$
|
|
begin
|
|
if new is distinct from old then
|
|
new.updated_at = now();
|
|
end if;
|
|
return new;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
create or replace trigger on_user_updated
|
|
before update on users
|
|
for each row
|
|
when(new is distinct from old)
|
|
execute function set_updated_at(); |