Files
homebox/backend/internal/data/migrations/sqlite3/20220929052825_init.sql
Matt Kilgore 1ac86d9c04 Real Migrations System (#645)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-05-01 15:03:08 -04:00

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);