mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-25 06:49:18 +01:00
290 lines
8.8 KiB
SQL
290 lines
8.8 KiB
SQL
-- +goose Up
|
|
create table if not exists groups
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
currency text default 'usd' not null
|
|
);
|
|
|
|
create table if not exists documents
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
title text not null,
|
|
path text not null,
|
|
group_documents uuid not null
|
|
constraint documents_groups_documents
|
|
references groups
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists group_invitation_tokens
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
token blob not null,
|
|
expires_at datetime not null,
|
|
uses integer default 0 not null,
|
|
group_invitation_tokens uuid
|
|
constraint group_invitation_tokens_groups_invitation_tokens
|
|
references groups
|
|
on delete cascade
|
|
);
|
|
|
|
create unique index if not exists group_invitation_tokens_token_key
|
|
on group_invitation_tokens (token);
|
|
|
|
create table if not exists labels
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
description text,
|
|
color text,
|
|
group_labels uuid not null
|
|
constraint labels_groups_labels
|
|
references groups
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists locations
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
description text,
|
|
group_locations uuid not null
|
|
constraint locations_groups_locations
|
|
references groups
|
|
on delete cascade,
|
|
location_children uuid
|
|
constraint locations_locations_children
|
|
references locations
|
|
on delete set null
|
|
);
|
|
|
|
create table if not exists items
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
description text,
|
|
import_ref text,
|
|
notes text,
|
|
quantity integer default 1 not null,
|
|
insured bool default false not null,
|
|
archived bool default false not null,
|
|
asset_id integer default 0 not null,
|
|
serial_number text,
|
|
model_number text,
|
|
manufacturer text,
|
|
lifetime_warranty bool default false not null,
|
|
warranty_expires datetime,
|
|
warranty_details text,
|
|
purchase_time datetime,
|
|
purchase_from text,
|
|
purchase_price real default 0 not null,
|
|
sold_time datetime,
|
|
sold_to text,
|
|
sold_price real default 0 not null,
|
|
sold_notes text,
|
|
group_items uuid not null
|
|
constraint items_groups_items
|
|
references groups
|
|
on delete cascade,
|
|
item_children uuid
|
|
constraint items_items_children
|
|
references items
|
|
on delete set null,
|
|
location_items uuid
|
|
constraint items_locations_items
|
|
references locations
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists attachments
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
type text default 'attachment' not null,
|
|
"primary" bool default false not null,
|
|
document_attachments uuid not null
|
|
constraint attachments_documents_attachments
|
|
references documents
|
|
on delete cascade,
|
|
item_attachments uuid not null
|
|
constraint attachments_items_attachments
|
|
references items
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists item_fields
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
description text,
|
|
type text not null,
|
|
text_value text,
|
|
number_value integer,
|
|
boolean_value bool default false not null,
|
|
time_value datetime not null,
|
|
item_fields uuid
|
|
constraint item_fields_items_fields
|
|
references items
|
|
on delete cascade
|
|
);
|
|
|
|
create index if not exists item_archived
|
|
on items (archived);
|
|
|
|
create index if not exists item_asset_id
|
|
on items (asset_id);
|
|
|
|
create index if not exists item_manufacturer
|
|
on items (manufacturer);
|
|
|
|
create index if not exists item_model_number
|
|
on items (model_number);
|
|
|
|
create index if not exists item_name
|
|
on items (name);
|
|
|
|
create index if not exists item_serial_number
|
|
on items (serial_number);
|
|
|
|
create table if not exists label_items
|
|
(
|
|
label_id uuid not null
|
|
constraint label_items_label_id
|
|
references labels
|
|
on delete cascade,
|
|
item_id uuid not null
|
|
constraint label_items_item_id
|
|
references items
|
|
on delete cascade,
|
|
primary key (label_id, item_id)
|
|
);
|
|
|
|
create table if not exists maintenance_entries
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
date datetime,
|
|
scheduled_date datetime,
|
|
name text not null,
|
|
description text,
|
|
cost real default 0 not null,
|
|
item_id uuid not null
|
|
constraint maintenance_entries_items_maintenance_entries
|
|
references items
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists users
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
email text not null,
|
|
password text not null,
|
|
is_superuser bool default false not null,
|
|
superuser bool default false not null,
|
|
role text default 'user' not null,
|
|
activated_on datetime,
|
|
group_users uuid not null
|
|
constraint users_groups_users
|
|
references groups
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists auth_tokens
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
token blob not null,
|
|
expires_at datetime not null,
|
|
user_auth_tokens uuid
|
|
constraint auth_tokens_users_auth_tokens
|
|
references users
|
|
on delete cascade
|
|
);
|
|
|
|
create table if not exists auth_roles
|
|
(
|
|
id integer not null
|
|
primary key autoincrement,
|
|
role text default 'user' not null,
|
|
auth_tokens_roles uuid
|
|
constraint auth_roles_auth_tokens_roles
|
|
references auth_tokens
|
|
on delete cascade
|
|
);
|
|
|
|
create unique index if not exists auth_roles_auth_tokens_roles_key
|
|
on auth_roles (auth_tokens_roles);
|
|
|
|
create unique index if not exists auth_tokens_token_key
|
|
on auth_tokens (token);
|
|
|
|
create index if not exists authtokens_token
|
|
on auth_tokens (token);
|
|
|
|
create table if not exists notifiers
|
|
(
|
|
id uuid not null
|
|
primary key,
|
|
created_at datetime not null,
|
|
updated_at datetime not null,
|
|
name text not null,
|
|
url text not null,
|
|
is_active bool default true not null,
|
|
group_id uuid not null
|
|
constraint notifiers_groups_notifiers
|
|
references groups
|
|
on delete cascade,
|
|
user_id uuid not null
|
|
constraint notifiers_users_notifiers
|
|
references users
|
|
on delete cascade
|
|
);
|
|
|
|
create index if not exists notifier_group_id
|
|
on notifiers (group_id);
|
|
|
|
create index if not exists notifier_group_id_is_active
|
|
on notifiers (group_id, is_active);
|
|
|
|
create index if not exists notifier_user_id
|
|
on notifiers (user_id);
|
|
|
|
create index if not exists notifier_user_id_is_active
|
|
on notifiers (user_id, is_active);
|
|
|
|
create unique index if not exists users_email_key
|
|
on users (email);
|
|
|