classDiagram class albums { varbinary(42) album_uid varbinary(42) parent_uid varbinary(160) album_slug varbinary(500) album_path varbinary(8) album_type varchar(160) album_title varchar(160) album_location varchar(100) album_category varchar(1024) album_caption varchar(2048) album_description varchar(1024) album_notes varbinary(2048) album_filter varbinary(32) album_order varbinary(255) album_template varchar(100) album_state varbinary(2) album_country int(11) album_year int(11) album_month int(11) album_day tinyint(1) album_favorite tinyint(1) album_private varbinary(128) thumb varbinary(8) thumb_src datetime created_at datetime updated_at datetime deleted_at varbinary(42) created_by datetime published_at int(10) unsigned id } class albums_users { varbinary(42) team_uid int(10) unsigned perm varbinary(42) uid varbinary(42) user_uid } class auth_sessions { varchar(64) client_ip varbinary(42) user_uid varchar(64) user_name varbinary(128) auth_provider varbinary(128) auth_method varbinary(255) auth_domain varbinary(128) auth_id varchar(1024) auth_scope bigint(20) last_active bigint(20) sess_expires bigint(20) sess_timeout varbinary(64) preview_token varbinary(64) download_token varbinary(4096) access_token varbinary(512) refresh_token varbinary(1024) id_token varchar(512) user_agent varbinary(4096) data_json varbinary(16) ref_id varchar(64) login_ip datetime login_at datetime created_at datetime updated_at varbinary(2048) id } class auth_users { varbinary(64) user_uuid varbinary(42) user_uid varbinary(128) auth_provider varbinary(128) auth_id varchar(64) user_name varchar(200) display_name varchar(255) user_email varchar(255) backup_email varchar(64) user_role varchar(1024) user_attr tinyint(1) super_admin tinyint(1) can_login datetime login_at datetime expires_at tinyint(1) webdav varbinary(1024) base_path varbinary(1024) upload_path tinyint(1) can_invite varbinary(64) invite_token varchar(64) invited_by varbinary(64) verify_token datetime verified_at datetime consent_at datetime born_at varbinary(64) reset_token varbinary(64) preview_token varbinary(64) download_token varbinary(128) thumb varbinary(8) thumb_src varbinary(16) ref_id datetime created_at datetime updated_at datetime deleted_at int(11) id } class auth_users_details { varbinary(42) subj_uid varbinary(8) subj_src varbinary(42) place_id varbinary(8) place_src varbinary(42) cell_id int(11) birth_year int(11) birth_month int(11) birth_day varchar(512) user_bio varchar(512) user_location varbinary(2) user_country varchar(32) user_phone varbinary(512) site_url varbinary(512) profile_url varbinary(512) feed_url varbinary(512) avatar_url varchar(16) user_gender varchar(32) name_title varchar(64) given_name varchar(64) middle_name varchar(64) family_name varchar(32) name_suffix varchar(64) nick_name varchar(64) org_title varchar(128) org_name varbinary(512) org_url varbinary(512) id_url datetime created_at datetime updated_at varbinary(42) user_uid } class auth_users_settings { varbinary(32) ui_theme varbinary(32) ui_language varbinary(64) ui_time_zone varbinary(32) maps_style int(11) maps_animate varbinary(1024) index_path int(11) index_rescan varbinary(1024) import_path int(11) import_move varbinary(1024) upload_path varbinary(128) default_page datetime created_at datetime updated_at varbinary(42) user_uid } class auth_users_shares { varbinary(42) link_uid datetime expires_at varchar(512) comment int(10) unsigned perm varbinary(16) ref_id datetime created_at datetime updated_at varbinary(42) user_uid varbinary(42) share_uid } class cameras { varbinary(160) camera_slug varchar(160) camera_name varchar(160) camera_make varchar(160) camera_model varchar(100) camera_type varchar(2048) camera_description varchar(1024) camera_notes datetime created_at datetime updated_at datetime deleted_at int(10) unsigned id } class categories { int(10) unsigned label_id int(10) unsigned category_id } class cells { varchar(200) cell_name varchar(100) cell_street varchar(50) cell_postcode varchar(50) cell_category varbinary(42) place_id datetime created_at datetime updated_at varbinary(42) id } class countries { varbinary(160) country_slug varchar(160) country_name varchar(2048) country_description varchar(1024) country_notes int(10) unsigned country_photo_id varbinary(2) id } class details { varchar(2048) keywords varbinary(8) keywords_src varchar(2048) notes varbinary(8) notes_src varchar(1024) subject varbinary(8) subject_src varchar(1024) artist varbinary(8) artist_src varchar(1024) copyright varbinary(8) copyright_src varchar(1024) license varbinary(8) license_src varchar(1024) software varbinary(8) software_src datetime created_at datetime updated_at int(10) unsigned photo_id } class duplicates { varbinary(128) file_hash bigint(20) file_size bigint(20) mod_time varbinary(755) file_name varbinary(16) file_root } class errors { datetime error_time varbinary(32) error_level varbinary(2048) error_message int(10) unsigned id } class faces { varbinary(8) face_src int(11) face_kind tinyint(1) face_hidden varbinary(42) subj_uid int(11) samples double sample_radius int(11) collisions double collision_radius mediumblob embedding_json datetime matched_at datetime created_at datetime updated_at varbinary(42) id } class files { int(10) unsigned photo_id varbinary(42) photo_uid datetime photo_taken_at varbinary(64) time_index varbinary(32) media_id bigint(20) media_utc varbinary(42) instance_id varbinary(42) file_uid varbinary(755) file_name varbinary(16) file_root varbinary(755) original_name varbinary(128) file_hash bigint(20) file_size varbinary(32) file_codec varbinary(16) file_type varbinary(16) media_type varbinary(64) file_mime tinyint(1) file_primary tinyint(1) file_sidecar tinyint(1) file_missing tinyint(1) file_portrait tinyint(1) file_video bigint(20) file_duration double file_fps int(11) file_frames int(11) file_width int(11) file_height int(11) file_orientation varbinary(64) file_projection float file_aspect_ratio tinyint(1) file_hdr tinyint(1) file_watermark varbinary(64) file_color_profile varbinary(16) file_main_color varbinary(9) file_colors varbinary(9) file_luminance int(11) file_diff smallint(6) file_chroma varchar(64) file_software varbinary(512) file_error bigint(20) mod_time datetime created_at bigint(20) created_in datetime updated_at bigint(20) updated_in datetime deleted_at datetime published_at int(10) unsigned id } class files_share { varbinary(16) status varbinary(512) error int(11) errors datetime created_at datetime updated_at int(10) unsigned file_id int(10) unsigned service_id varbinary(255) remote_name } class files_sync { int(10) unsigned file_id datetime remote_date bigint(20) remote_size varbinary(16) status varbinary(512) error int(11) errors datetime created_at datetime updated_at varbinary(255) remote_name int(10) unsigned service_id } class folders { varbinary(500) path varbinary(16) root varbinary(16) folder_type varchar(200) folder_title varchar(100) folder_category varchar(2048) folder_description varbinary(32) folder_order varbinary(2) folder_country int(11) folder_year int(11) folder_month int(11) folder_day tinyint(1) folder_favorite tinyint(1) folder_private tinyint(1) folder_ignore tinyint(1) folder_watch datetime created_at datetime updated_at datetime modified_at datetime deleted_at datetime published_at varbinary(42) folder_uid } class keywords { varchar(64) keyword tinyint(1) skip int(10) unsigned id } class labels { varbinary(42) label_uid varbinary(160) label_slug varbinary(160) custom_slug varchar(160) label_name int(11) label_priority tinyint(1) label_favorite varchar(2048) label_description varchar(1024) label_notes int(11) photo_count varbinary(128) thumb varbinary(8) thumb_src datetime created_at datetime updated_at datetime deleted_at datetime published_at int(10) unsigned id } class lenses { varbinary(160) lens_slug varchar(160) lens_name varchar(160) lens_make varchar(160) lens_model varchar(100) lens_type varchar(2048) lens_description varchar(1024) lens_notes datetime created_at datetime updated_at datetime deleted_at int(10) unsigned id } class links { varbinary(42) share_uid varbinary(160) share_slug varbinary(160) link_token int(11) link_expires int(10) unsigned link_views int(10) unsigned max_views tinyint(1) has_password datetime created_at datetime modified_at varchar(512) comment int(10) unsigned perm varbinary(16) ref_id varbinary(42) created_by varbinary(42) link_uid } class markers { varbinary(42) file_uid varbinary(8) marker_type varbinary(8) marker_src varchar(160) marker_name tinyint(1) marker_review tinyint(1) marker_invalid varbinary(42) subj_uid varbinary(8) subj_src varbinary(42) face_id double face_dist mediumblob embeddings_json mediumblob landmarks_json float x float y float w float h int(11) q int(11) size smallint(6) score varbinary(128) thumb datetime matched_at datetime created_at datetime updated_at varbinary(42) marker_uid } class migrations { varchar(16) dialect varchar(255) error varchar(16) source datetime started_at datetime finished_at varchar(16) stage varchar(16) id } class passwords { varbinary(255) hash datetime created_at datetime updated_at varbinary(255) uid } class photos { varbinary(42) uuid datetime taken_at datetime taken_at_local varbinary(8) taken_src varbinary(42) photo_uid varbinary(8) photo_type varbinary(8) type_src varchar(200) photo_title varbinary(8) title_src varchar(4096) photo_description varbinary(8) description_src varbinary(500) photo_path varbinary(255) photo_name varbinary(755) original_name tinyint(4) photo_stack tinyint(1) photo_favorite tinyint(1) photo_private tinyint(1) photo_scan tinyint(1) photo_panorama varbinary(64) time_zone varbinary(42) place_id varbinary(8) place_src varbinary(42) cell_id int(11) cell_accuracy int(11) photo_altitude float photo_lat float photo_lng varbinary(2) photo_country int(11) photo_year int(11) photo_month int(11) photo_day int(11) photo_iso varbinary(64) photo_exposure float photo_f_number int(11) photo_focal_length smallint(6) photo_quality int(11) photo_faces smallint(6) photo_resolution smallint(6) photo_color int(10) unsigned camera_id varbinary(160) camera_serial varbinary(8) camera_src int(10) unsigned lens_id datetime created_at datetime updated_at datetime edited_at datetime checked_at datetime estimated_at datetime deleted_at bigint(20) photo_duration varbinary(42) created_by datetime published_at int(10) unsigned id } class photos_albums { int(11) order tinyint(1) hidden tinyint(1) missing datetime created_at datetime updated_at varbinary(42) photo_uid varbinary(42) album_uid } class photos_keywords { int(10) unsigned photo_id int(10) unsigned keyword_id } class photos_labels { varbinary(8) label_src smallint(6) uncertainty int(10) unsigned photo_id int(10) unsigned label_id } class photos_users { varbinary(42) team_uid int(10) unsigned perm varbinary(42) uid varbinary(42) user_uid } class places { varchar(400) place_label varchar(100) place_district varchar(100) place_city varchar(100) place_state varbinary(2) place_country varchar(300) place_keywords tinyint(1) place_favorite int(11) photo_count datetime created_at datetime updated_at varbinary(42) id } class reactions { int(11) reacted datetime reacted_at varbinary(42) uid varbinary(42) user_uid varbinary(64) reaction } class services { varchar(160) acc_name varchar(160) acc_owner varchar(255) acc_url varbinary(255) acc_type varbinary(255) acc_key varbinary(255) acc_user varbinary(255) acc_pass varbinary(16) acc_timeout varbinary(512) acc_error int(11) acc_errors tinyint(1) acc_share tinyint(1) acc_sync int(11) retry_limit varbinary(500) share_path varbinary(16) share_size int(11) share_expires varbinary(500) sync_path varbinary(16) sync_status int(11) sync_interval datetime sync_date tinyint(1) sync_upload tinyint(1) sync_download tinyint(1) sync_filenames tinyint(1) sync_raw datetime created_at datetime updated_at datetime deleted_at int(10) unsigned id } class subjects { varbinary(8) subj_type varbinary(8) subj_src varbinary(160) subj_slug varchar(160) subj_name varchar(160) subj_alias varchar(2048) subj_bio varchar(1024) subj_notes tinyint(1) subj_favorite tinyint(1) subj_hidden tinyint(1) subj_private tinyint(1) subj_excluded int(11) file_count int(11) photo_count varbinary(128) thumb varbinary(8) thumb_src mediumblob metadata_json datetime created_at datetime updated_at datetime deleted_at varbinary(42) subj_uid } auth_sessions --> auth_users : user_uid auth_users_details --> auth_users : user_uid auth_users_settings --> auth_users : user_uid auth_users_shares --> auth_users : user_uid auth_users_details --> cells : cell_id auth_users_details --> places : place_id categories --> labels : label_id categories --> labels : category_id cells --> places : place_id details --> photos : photo_id files --> photos : photo_id files_share --> files : file_id files_share --> services : service_id files_sync --> files : file_id files_sync --> services : service_id markers --> faces : face_id markers --> subjects : subject_uid faces --> subjects : subject_uid photos --> cameras : camera_id photos --> cells : cell_id photos --> lenses : lens_id photos --> places : place_id photos --> countries : photo_country albums --> countries : album_country albums --> folders : path albums --> users : created_by albums_users --> auth_users : user_uid places --> countries : place_country photos_keywords --> keywords : keyword_id photos_keywords --> photos : photo_id photos_labels --> labels : label_id photos_labels --> photos : photo_id photos_albums --> albums : album_uid photos_albums --> photos : photo_uid photos_users --> auth_users : user_uid photos --> users : created_by links --> albums : uid duplicates -- files