171 lines
4.8 KiB
SQL
171 lines
4.8 KiB
SQL
-- drop database if exists settlements;
|
|
-- create database settlements;
|
|
drop type if exists alert_types cascade;
|
|
|
|
create type alert_types as enum ('info', 'low', 'medium', 'high', 'ultra');
|
|
|
|
drop type if exists message_types cascade;
|
|
|
|
create type message_types as enum ('info', 'alert');
|
|
|
|
drop type if exists animal_sexs cascade;
|
|
|
|
create type animal_sexs as enum ('female', 'male', 'unknown');
|
|
|
|
drop table if exists users cascade;
|
|
|
|
drop table if exists user_accounts cascade;
|
|
|
|
drop table if exists permissions cascade;
|
|
|
|
drop table if exists groups cascade;
|
|
|
|
drop table if exists user_groups cascade;
|
|
|
|
drop table if exists user_permissions cascade;
|
|
|
|
drop table if exists group_permissions cascade;
|
|
|
|
drop table if exists user_groups cascade;
|
|
|
|
drop table if exists user_sessions cascade;
|
|
|
|
drop table if exists user_recover_requests cascade;
|
|
|
|
drop table if exists settlements cascade;
|
|
|
|
drop table if exists animals cascade;
|
|
|
|
drop table if exists animal_comments cascade;
|
|
|
|
drop table if exists animal_alerts cascade;
|
|
|
|
drop table if exists animal_images cascade;
|
|
|
|
drop table if exists animal_coats cascade;
|
|
|
|
create table users (
|
|
id bigint generated by default as identity primary key,
|
|
name varchar,
|
|
surnames varchar,
|
|
email varchar
|
|
);
|
|
|
|
create table user_accounts (
|
|
id bigint generated by default as identity primary key,
|
|
user_id bigint references users (id),
|
|
username varchar unique not null,
|
|
password varchar not null,
|
|
attempts smallint default 0,
|
|
locked bool default false,
|
|
active bool default true
|
|
);
|
|
|
|
create table permissions (
|
|
id bigint generated by default as identity primary key,
|
|
code varchar unique not null,
|
|
description varchar default null
|
|
);
|
|
|
|
create table groups (
|
|
id bigint generated by default as identity primary key,
|
|
code varchar unique not null,
|
|
description varchar default null
|
|
);
|
|
|
|
create table user_groups (
|
|
user_id bigint references users (id),
|
|
group_id bigint references groups (id)
|
|
);
|
|
|
|
create table user_permissions (
|
|
user_id bigint references users (id),
|
|
permission_id bigint references permissions (id)
|
|
);
|
|
|
|
create table group_permissions (
|
|
group_id bigint references groups (id),
|
|
permission_id bigint references permissions (id)
|
|
);
|
|
|
|
create table user_sessions (
|
|
id bigint generated by default as identity primary key,
|
|
user_id bigint not null references users (id),
|
|
token varchar not null unique,
|
|
created_at timestamp default current_timestamp,
|
|
active bool default true
|
|
);
|
|
|
|
create table user_recover_requests (
|
|
id bigint generated by default as identity primary key,
|
|
user_id bigint not null references users (id),
|
|
token varchar not null unique,
|
|
created_at timestamp default current_timestamp,
|
|
active bool default true
|
|
);
|
|
|
|
create table settlements (
|
|
id bigint generated by default as identity primary key,
|
|
name varchar not null unique,
|
|
address varchar not null unique,
|
|
created_at timestamp not null default current_timestamp,
|
|
last_done timestamp default null,
|
|
last_done_by bigint references users (id),
|
|
active bool default true
|
|
);
|
|
|
|
create table animal_coats (
|
|
id bigint generated by default as identity primary key,
|
|
code varchar unique not null,
|
|
description varchar default null
|
|
);
|
|
|
|
create table animals (
|
|
id bigint generated by default as identity primary key,
|
|
name varchar not null,
|
|
microchip varchar default null,
|
|
coat bigint not null references animal_coats (id),
|
|
sex animal_sexs default 'unknown',
|
|
settlement_id bigint references settlements (id),
|
|
has_ear_mark bool default false,
|
|
controlled bool default false,
|
|
castrated bool default false,
|
|
adopted bool default false,
|
|
friendly bool default null,
|
|
friendly_children bool default null,
|
|
friendly_dogs bool default null,
|
|
first_view timestamp default null,
|
|
last_view timestamp default null,
|
|
created_at timestamp not null default current_timestamp,
|
|
active bool default true
|
|
);
|
|
|
|
create table animal_comments (
|
|
id bigint generated by default as identity primary key,
|
|
animal_id bigint not null references animals (id),
|
|
type message_types default 'info',
|
|
message varchar not null,
|
|
created_at timestamp default current_timestamp,
|
|
public bool default false,
|
|
active bool default true
|
|
);
|
|
|
|
create table animal_alerts (
|
|
id bigint generated by default as identity primary key,
|
|
animal_id bigint not null references animals (id),
|
|
type alert_types default 'high',
|
|
comment varchar not null,
|
|
created_at timestamp default current_timestamp,
|
|
active bool default true
|
|
);
|
|
|
|
create table animal_images (
|
|
id bigint generated by default as identity primary key,
|
|
animal_id bigint not null references animals (id),
|
|
image varchar not null unique,
|
|
created_at timestamp default current_timestamp,
|
|
is_primary bool default false,
|
|
public bool default false,
|
|
active bool default true
|
|
);
|