photoprism/internal/entity/schema/mariadb.sql
Michael Mayer f5a8c5a45d Auth: Session and ACL enhancements #98 #1746
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-09-28 09:01:17 +02:00

821 lines
28 KiB
SQL

create table accounts
(
id int unsigned auto_increment
primary key,
acc_name varchar(160) null,
acc_owner varchar(160) null,
acc_url varchar(255) null,
acc_type varbinary(255) null,
acc_key varbinary(255) null,
acc_user varbinary(255) null,
acc_pass varbinary(255) null,
acc_timeout varbinary(16) null,
acc_error varbinary(512) null,
acc_errors int null,
acc_share tinyint(1) null,
acc_sync tinyint(1) null,
retry_limit int null,
share_path varbinary(500) null,
share_size varbinary(16) null,
share_expires int null,
sync_path varbinary(500) null,
sync_status varbinary(16) null,
sync_interval int null,
sync_date datetime null,
sync_upload tinyint(1) null,
sync_download tinyint(1) null,
sync_filenames tinyint(1) null,
sync_raw tinyint(1) null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null
);
create index idx_accounts_deleted_at
on accounts (deleted_at);
create table addresses
(
id int auto_increment
primary key,
cell_id varbinary(64) default 'zz' null,
address_src varbinary(8) null,
address_lat float null,
address_lng float null,
address_line1 varchar(255) null,
address_line2 varchar(255) null,
address_zip varchar(32) null,
address_city varchar(128) null,
address_state varchar(128) null,
address_country varbinary(2) default 'zz' null,
address_notes varchar(1024) null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null
);
create index idx_addresses_address_lat
on addresses (address_lat);
create index idx_addresses_address_lng
on addresses (address_lng);
create index idx_addresses_cell_id
on addresses (cell_id);
create index idx_addresses_deleted_at
on addresses (deleted_at);
create table albums
(
id int unsigned auto_increment
primary key,
album_uid varbinary(64) null,
parent_uid varbinary(64) default '' null,
album_slug varbinary(160) null,
album_path varbinary(500) null,
album_type varbinary(8) default 'album' null,
album_title varchar(160) null,
album_location varchar(160) null,
album_category varchar(100) null,
album_caption varchar(1024) null,
album_description varchar(2048) null,
album_notes varchar(1024) null,
album_filter varbinary(2048) default '' null,
album_order varbinary(32) null,
album_template varbinary(255) null,
album_state varchar(100) null,
album_country varbinary(2) default 'zz' null,
album_year int null,
album_month int null,
album_day int null,
album_favorite tinyint(1) null,
album_private tinyint(1) null,
thumb varbinary(128) default '' null,
thumb_src varbinary(8) default '' null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_albums_album_uid
unique (album_uid)
);
create index idx_albums_album_category
on albums (album_category);
create index idx_albums_album_filter
on albums (album_filter(512));
create index idx_albums_album_path
on albums (album_path);
create index idx_albums_album_slug
on albums (album_slug);
create index idx_albums_album_state
on albums (album_state);
create index idx_albums_album_title
on albums (album_title);
create index idx_albums_country_year_month
on albums (album_country, album_year, album_month);
create index idx_albums_deleted_at
on albums (deleted_at);
create index idx_albums_thumb
on albums (thumb);
create index idx_albums_ymd
on albums (album_day);
create table cameras
(
id int unsigned auto_increment
primary key,
camera_slug varbinary(160) null,
camera_name varchar(160) null,
camera_make varchar(160) null,
camera_model varchar(160) null,
camera_type varchar(100) null,
camera_description varchar(2048) null,
camera_notes varchar(1024) null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_cameras_camera_slug
unique (camera_slug)
);
create index idx_cameras_deleted_at
on cameras (deleted_at);
create table categories
(
label_id int unsigned not null,
category_id int unsigned not null,
primary key (label_id, category_id)
);
create table cells
(
id varbinary(64) not null
primary key,
cell_name varchar(200) null,
cell_street varchar(100) null,
cell_postcode varchar(50) null,
cell_category varchar(50) null,
place_id varbinary(64) default 'zz' null,
created_at datetime null,
updated_at datetime null
);
create table countries
(
id varbinary(2) not null
primary key,
country_slug varbinary(160) null,
country_name varchar(160) null,
country_description varchar(2048) null,
country_notes varchar(1024) null,
country_photo_id int unsigned null,
constraint uix_countries_country_slug
unique (country_slug)
);
create table details
(
photo_id int unsigned not null
primary key,
keywords varchar(2048) null,
keywords_src varbinary(8) null,
notes varchar(2048) null,
notes_src varbinary(8) null,
subject varchar(1024) null,
subject_src varbinary(8) null,
artist varchar(1024) null,
artist_src varbinary(8) null,
copyright varchar(1024) null,
copyright_src varbinary(8) null,
license varchar(1024) null,
license_src varbinary(8) null,
software varchar(1024) null,
software_src varbinary(8) null,
created_at datetime null,
updated_at datetime null
);
create table duplicates
(
file_name varbinary(755) not null,
file_root varbinary(16) default '/' not null,
file_hash varbinary(128) default '' null,
file_size bigint null,
mod_time bigint null,
primary key (file_name, file_root)
);
create index idx_duplicates_file_hash
on duplicates (file_hash);
create table errors
(
id int unsigned auto_increment
primary key,
error_time datetime null,
error_level varbinary(32) null,
error_message varbinary(2048) null
);
create index idx_errors_error_time
on errors (error_time);
create table faces
(
id varbinary(64) not null
primary key,
face_src varbinary(8) null,
face_kind int null,
face_hidden tinyint(1) null,
subj_uid varbinary(64) default '' null,
samples int null,
sample_radius double null,
collisions int null,
collision_radius double null,
embedding_json mediumblob null,
matched_at datetime null,
created_at datetime null,
updated_at datetime null
);
create index idx_faces_subj_uid
on faces (subj_uid);
create table files
(
id int unsigned auto_increment
primary key,
photo_id int unsigned null,
photo_uid varbinary(64) null,
photo_taken_at datetime null,
time_index varbinary(48) null,
media_id varbinary(32) null,
media_utc bigint null,
instance_id varbinary(64) null,
file_uid varbinary(64) null,
file_name varbinary(755) null,
file_root varbinary(16) default '/' null,
original_name varbinary(755) null,
file_hash varbinary(128) null,
file_size bigint null,
file_codec varbinary(32) null,
file_type varbinary(16) null,
media_type varbinary(16) null,
file_mime varbinary(64) null,
file_primary tinyint(1) null,
file_sidecar tinyint(1) null,
file_missing tinyint(1) null,
file_portrait tinyint(1) null,
file_video tinyint(1) null,
file_duration bigint null,
file_fps double null,
file_frames int null,
file_width int null,
file_height int null,
file_orientation int null,
file_projection varbinary(64) null,
file_aspect_ratio float null,
file_hdr tinyint(1) null,
file_watermark tinyint(1) null,
file_color_profile varbinary(64) null,
file_main_color varbinary(16) null,
file_colors varbinary(9) null,
file_luminance varbinary(9) null,
file_diff int default -1 null,
file_chroma smallint default -1 null,
file_software varchar(64) null,
file_error varbinary(512) null,
mod_time bigint null,
created_at datetime null,
created_in bigint null,
updated_at datetime null,
updated_in bigint null,
deleted_at datetime null,
constraint idx_files_name_root
unique (file_name, file_root),
constraint idx_files_search_media
unique (media_id),
constraint idx_files_search_timeline
unique (time_index),
constraint uix_files_file_uid
unique (file_uid)
);
create index idx_files_deleted_at
on files (deleted_at);
create index idx_files_file_hash
on files (file_hash);
create index idx_files_file_main_color
on files (file_main_color);
create index idx_files_instance_id
on files (instance_id);
create index idx_files_media_utc
on files (media_utc);
create index idx_files_missing_root
on files (file_missing, file_root);
create index idx_files_photo_id
on files (photo_id, file_primary);
create index idx_files_photo_taken_at
on files (photo_taken_at);
create index idx_files_photo_uid
on files (photo_uid);
create table files_share
(
file_id int unsigned not null,
account_id int unsigned not null,
remote_name varbinary(255) not null,
status varbinary(16) null,
error varbinary(512) null,
errors int null,
created_at datetime null,
updated_at datetime null,
primary key (file_id, account_id, remote_name)
);
create table files_sync
(
remote_name varbinary(255) not null,
account_id int unsigned not null,
file_id int unsigned null,
remote_date datetime null,
remote_size bigint null,
status varbinary(16) null,
error varbinary(512) null,
errors int null,
created_at datetime null,
updated_at datetime null,
primary key (remote_name, account_id)
);
create index idx_files_sync_file_id
on files_sync (file_id);
create table folders
(
path varbinary(500) null,
root varbinary(16) default '' null,
folder_uid varbinary(64) not null
primary key,
folder_type varbinary(16) null,
folder_title varchar(200) null,
folder_category varchar(100) null,
folder_description varchar(2048) null,
folder_order varbinary(32) null,
folder_country varbinary(2) default 'zz' null,
folder_year int null,
folder_month int null,
folder_day int null,
folder_favorite tinyint(1) null,
folder_private tinyint(1) null,
folder_ignore tinyint(1) null,
folder_watch tinyint(1) null,
created_at datetime null,
updated_at datetime null,
modified_at datetime null,
deleted_at datetime null,
constraint idx_folders_path_root
unique (path, root)
);
create index idx_folders_country_year_month
on folders (folder_country, folder_year, folder_month);
create index idx_folders_deleted_at
on folders (deleted_at);
create index idx_folders_folder_category
on folders (folder_category);
create table keywords
(
id int unsigned auto_increment
primary key,
keyword varchar(64) null,
skip tinyint(1) null
);
create index idx_keywords_keyword
on keywords (keyword);
create table labels
(
id int unsigned auto_increment
primary key,
label_uid varbinary(64) null,
label_slug varbinary(160) null,
custom_slug varbinary(160) null,
label_name varchar(160) null,
label_priority int null,
label_favorite tinyint(1) null,
label_description varchar(2048) null,
label_notes varchar(1024) null,
photo_count int default 1 null,
thumb varbinary(128) default '' null,
thumb_src varbinary(8) default '' null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_labels_label_slug
unique (label_slug),
constraint uix_labels_label_uid
unique (label_uid)
);
create index idx_labels_custom_slug
on labels (custom_slug);
create index idx_labels_deleted_at
on labels (deleted_at);
create index idx_labels_thumb
on labels (thumb);
create table lenses
(
id int unsigned auto_increment
primary key,
lens_slug varbinary(160) null,
lens_name varchar(160) null,
lens_make varchar(160) null,
lens_model varchar(160) null,
lens_type varchar(100) null,
lens_description varchar(2048) null,
lens_notes varchar(1024) null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_lenses_lens_slug
unique (lens_slug)
);
create index idx_lenses_deleted_at
on lenses (deleted_at);
create table links
(
link_uid varbinary(64) not null
primary key,
share_uid varbinary(64) null,
share_slug varbinary(160) null,
link_token varbinary(160) null,
link_expires int null,
link_views int unsigned null,
max_views int unsigned null,
has_password tinyint(1) null,
can_comment tinyint(1) null,
can_edit tinyint(1) null,
created_at datetime null,
modified_at datetime null,
constraint idx_links_uid_token
unique (share_uid, link_token)
);
create index idx_links_share_slug
on links (share_slug);
create table markers
(
marker_uid varbinary(64) not null
primary key,
file_uid varbinary(64) default '' null,
marker_type varbinary(8) default '' null,
marker_src varbinary(8) default '' null,
marker_name varchar(160) null,
marker_review tinyint(1) null,
marker_invalid tinyint(1) null,
subj_uid varbinary(64) null,
subj_src varbinary(8) default '' null,
face_id varbinary(64) null,
face_dist double default -1 null,
embeddings_json mediumblob null,
landmarks_json mediumblob null,
x float null,
y float null,
w float null,
h float null,
q int null,
size int default -1 null,
score smallint null,
thumb varbinary(128) default '' null,
matched_at datetime null,
created_at datetime null,
updated_at datetime null
);
create index idx_markers_face_id
on markers (face_id);
create index idx_markers_file_uid
on markers (file_uid);
create index idx_markers_matched_at
on markers (matched_at);
create index idx_markers_subj_uid_src
on markers (subj_uid, subj_src);
create index idx_markers_thumb
on markers (thumb);
create table migrations
(
id varchar(16) not null
primary key,
dialect varchar(16) null,
error varchar(255) null,
source varchar(16) null,
started_at datetime null,
finished_at datetime null
);
create table passwords
(
uid varbinary(255) not null
primary key,
hash varbinary(255) null,
created_at datetime null,
updated_at datetime null
);
create table photos
(
id int unsigned auto_increment
primary key,
uuid varbinary(64) null,
taken_at datetime null,
taken_at_local datetime null,
taken_src varbinary(8) null,
photo_uid varbinary(64) null,
photo_type varbinary(8) default 'image' null,
type_src varbinary(8) null,
photo_title varchar(200) null,
title_src varbinary(8) null,
photo_description varchar(4096) null,
description_src varbinary(8) null,
photo_path varbinary(500) null,
photo_name varbinary(255) null,
original_name varbinary(755) null,
photo_stack tinyint null,
photo_favorite tinyint(1) null,
photo_private tinyint(1) null,
photo_scan tinyint(1) null,
photo_panorama tinyint(1) null,
time_zone varbinary(64) null,
place_id varbinary(64) default 'zz' null,
place_src varbinary(8) null,
cell_id varbinary(42) default 'zz' null,
cell_accuracy int null,
photo_altitude int null,
photo_lat float null,
photo_lng float null,
photo_country varbinary(2) default 'zz' null,
photo_year int null,
photo_month int null,
photo_day int null,
photo_iso int null,
photo_exposure varbinary(64) null,
photo_f_number float null,
photo_focal_length int null,
photo_quality smallint null,
photo_faces int null,
photo_resolution smallint null,
photo_color smallint default -1 null,
camera_id int unsigned default 1 null,
camera_serial varbinary(160) null,
camera_src varbinary(8) null,
lens_id int unsigned default 1 null,
created_at datetime null,
updated_at datetime null,
edited_at datetime null,
checked_at datetime null,
estimated_at datetime null,
deleted_at datetime null,
constraint uix_photos_photo_uid
unique (photo_uid)
);
create index idx_photos_camera_lens
on photos (camera_id, lens_id);
create index idx_photos_cell_id
on photos (cell_id);
create index idx_photos_checked_at
on photos (checked_at);
create index idx_photos_country_year_month
on photos (photo_country, photo_year, photo_month);
create index idx_photos_deleted_at
on photos (deleted_at);
create index idx_photos_path_name
on photos (photo_path, photo_name);
create index idx_photos_photo_lat
on photos (photo_lat);
create index idx_photos_photo_lng
on photos (photo_lng);
create index idx_photos_place_id
on photos (place_id);
create index idx_photos_taken_uid
on photos (taken_at, photo_uid);
create index idx_photos_uuid
on photos (uuid);
create index idx_photos_ymd
on photos (photo_day);
create table photos_albums
(
photo_uid varbinary(42) not null,
album_uid varbinary(42) not null,
`order` int null,
hidden tinyint(1) null,
missing tinyint(1) null,
created_at datetime null,
updated_at datetime null,
primary key (photo_uid, album_uid)
);
create index idx_photos_albums_album_uid
on photos_albums (album_uid);
create table photos_keywords
(
photo_id int unsigned not null,
keyword_id int unsigned not null,
primary key (photo_id, keyword_id)
);
create index idx_photos_keywords_keyword_id
on photos_keywords (keyword_id);
create table photos_labels
(
photo_id int unsigned not null,
label_id int unsigned not null,
label_src varbinary(8) null,
uncertainty smallint null,
primary key (photo_id, label_id)
);
create index idx_photos_labels_label_id
on photos_labels (label_id);
create table places
(
id varbinary(42) not null
primary key,
place_label varchar(400) null,
place_district varchar(100) null,
place_city varchar(100) null,
place_state varchar(100) null,
place_country varbinary(2) null,
place_keywords varchar(300) null,
place_favorite tinyint(1) null,
photo_count int default 1 null,
created_at datetime null,
updated_at datetime null
);
create index idx_places_place_city
on places (place_city);
create index idx_places_place_district
on places (place_district);
create index idx_places_place_state
on places (place_state);
create table subjects
(
subj_uid varbinary(42) not null
primary key,
subj_type varbinary(8) default '' null,
subj_src varbinary(8) default '' null,
subj_slug varbinary(160) default '' null,
subj_name varchar(160) default '' null,
subj_alias varchar(160) default '' null,
subj_bio varchar(2048) null,
subj_notes varchar(1024) null,
subj_favorite tinyint(1) default 0 null,
subj_hidden tinyint(1) default 0 null,
subj_private tinyint(1) default 0 null,
subj_excluded tinyint(1) default 0 null,
file_count int default 0 null,
photo_count int default 0 null,
thumb varbinary(128) default '' null,
thumb_src varbinary(8) default '' null,
metadata_json mediumblob null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_subjects_subj_name
unique (subj_name)
);
create index idx_subjects_deleted_at
on subjects (deleted_at);
create index idx_subjects_subj_slug
on subjects (subj_slug);
create index idx_subjects_thumb
on subjects (thumb);
create table users
(
id int auto_increment
primary key,
address_id int default 1 null,
user_uid varbinary(42) null,
mother_uid varbinary(42) null,
father_uid varbinary(42) null,
global_uid varbinary(42) null,
full_name varchar(128) null,
nick_name varchar(64) null,
maiden_name varchar(64) null,
artist_name varchar(64) null,
user_name varchar(64) null,
user_status varchar(32) null,
user_disabled tinyint(1) null,
user_settings longtext null,
primary_email varchar(255) null,
email_confirmed tinyint(1) null,
backup_email varchar(255) null,
person_url varbinary(255) null,
person_phone varchar(32) null,
person_status varchar(32) null,
person_avatar varbinary(255) null,
person_location varchar(128) null,
person_bio text null,
person_accounts longtext null,
business_url varbinary(255) null,
business_phone varchar(32) null,
business_email varchar(255) null,
company_name varchar(128) null,
department_name varchar(128) null,
job_title varchar(64) null,
birth_year int null,
birth_month int null,
birth_day int null,
terms_accepted tinyint(1) null,
is_artist tinyint(1) null,
is_subject tinyint(1) null,
role_admin tinyint(1) null,
role_guest tinyint(1) null,
role_child tinyint(1) null,
role_family tinyint(1) null,
role_friend tinyint(1) null,
webdav tinyint(1) null,
storage_path varbinary(500) null,
can_invite tinyint(1) null,
invite_token varbinary(32) null,
invited_by varbinary(32) null,
confirm_token varbinary(64) null,
reset_token varbinary(64) null,
api_token varbinary(128) null,
api_secret varbinary(128) null,
login_attempts int null,
login_at datetime null,
created_at datetime null,
updated_at datetime null,
deleted_at datetime null,
constraint uix_users_user_uid
unique (user_uid)
);
create index idx_users_deleted_at
on users (deleted_at);
create index idx_users_global_uid
on users (global_uid);
create index idx_users_primary_email
on users (primary_email);