38 lines
1.1 KiB
SQL
38 lines
1.1 KiB
SQL
create table exercise (
|
|
id smallserial primary key,
|
|
name varchar not null
|
|
);
|
|
create table shorthand (
|
|
exercise smallint not null,
|
|
name varchar unique not null,
|
|
constraint fk_exercise foreign key (exercise) references exercise(id)
|
|
);
|
|
create table account (
|
|
id serial primary key,
|
|
name varchar not null,
|
|
login varchar not null,
|
|
birthdate date not null
|
|
);
|
|
create table training (
|
|
id serial primary key,
|
|
account integer not null,
|
|
time timestamptz not null default timezone('utc', now()),
|
|
exercise smallint not null,
|
|
runs smallint not null,
|
|
reps smallint not null,
|
|
kilos numeric(4,1) not null,
|
|
constraint fk_exercise foreign key (exercise) references exercise(id),
|
|
constraint fk_account foreign key (account) references account(id)
|
|
);
|
|
create view dailylift as select
|
|
date(time) as time, account, exercise, sum(runs * reps * kilos) as lift
|
|
from training group by 1, 2, 3;
|
|
|
|
create role training_user;
|
|
grant select on account to create_user;
|
|
grant select on exercise to create_user;
|
|
grant select on shorthand to create_user;
|
|
grant insert on training to create_user;
|
|
grant select on training to create_user;
|
|
grant usage on training_id_seq to create_user;
|