Initial commit

This commit is contained in:
2026-11-05 08:28:15 +00:00
commit 08582a4f70
65 changed files with 1886 additions and 0 deletions
+170
View File
@@ -0,0 +1,170 @@
-- 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
);