[ { "id": "pbc_app_users", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "app_users", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_app_users", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "text_better_auth_id", "max": 0, "min": 0, "name": "better_auth_id", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "email_app_users", "name": "email", "onlyDomains": null, "presentable": false, "required": true, "system": false, "type": "email" }, { "hidden": false, "id": "text_app_user_name", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "autodate_app_users_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_app_users_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_app_users_better_auth_id` ON `app_users` (`better_auth_id`)", "CREATE UNIQUE INDEX `idx_app_users_email` ON `app_users` (`email`)" ], "system": false }, { "id": "pbc_profiles", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "profiles", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_profiles", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_profiles_user", "maxSelect": 1, "minSelect": 0, "name": "user", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "text_profiles_username", "max": 0, "min": 0, "name": "username", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_profiles_display", "max": 0, "min": 0, "name": "display_name", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "url_profiles_avatar", "name": "avatar_url", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "exceptDomains": null, "hidden": false, "id": "url_profiles_banner", "name": "banner_url", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "hidden": false, "id": "text_profiles_status", "max": 0, "min": 0, "name": "status", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_profiles_about", "max": 0, "min": 0, "name": "about", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "url_profiles_website", "name": "website", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "hidden": false, "id": "select_profiles_privacy_playlists", "maxSelect": 1, "name": "privacy_playlists", "presentable": false, "required": false, "system": false, "type": "select", "values": ["public", "private"] }, { "hidden": false, "id": "select_profiles_privacy_lastfm", "maxSelect": 1, "name": "privacy_lastfm", "presentable": false, "required": false, "system": false, "type": "select", "values": ["public", "private"] }, { "hidden": false, "id": "text_profiles_lastfm", "max": 0, "min": 0, "name": "lastfm_username", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_profiles_librefm", "max": 0, "min": 0, "name": "librefm_username", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "select_profiles_source", "maxSelect": 1, "name": "profile_data_source", "presentable": false, "required": false, "system": false, "type": "select", "values": ["manual", "lastfm", "librefm"] }, { "hidden": false, "id": "autodate_profiles_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_profiles_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_profiles_user` ON `profiles` (`user`)", "CREATE UNIQUE INDEX `idx_profiles_username` ON `profiles` (`username`) WHERE `username` != ''" ], "system": false }, { "id": "pbc_library_items", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "library_items", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_library", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_library_owner", "maxSelect": 1, "minSelect": 0, "name": "owner", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "select_library_type", "maxSelect": 1, "name": "item_type", "presentable": false, "required": true, "system": false, "type": "select", "values": ["track", "video", "album", "artist", "playlist", "mix"] }, { "hidden": false, "id": "text_library_item_id", "max": 0, "min": 0, "name": "item_id", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "json_library_metadata", "maxSize": 0, "name": "metadata", "presentable": false, "required": true, "system": false, "type": "json" }, { "hidden": false, "id": "date_library_added", "max": "", "min": "", "name": "added_at", "presentable": false, "required": false, "system": false, "type": "date" }, { "hidden": false, "id": "autodate_library_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_library_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_library_owner_type_item` ON `library_items` (`owner`, `item_type`, `item_id`)" ], "system": false }, { "id": "pbc_history_items", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "history_items", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_history", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_history_owner", "maxSelect": 1, "minSelect": 0, "name": "owner", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "select_history_type", "maxSelect": 1, "name": "item_type", "presentable": false, "required": true, "system": false, "type": "select", "values": ["track", "video", "podcast"] }, { "hidden": false, "id": "text_history_item_id", "max": 0, "min": 0, "name": "item_id", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "json_history_metadata", "maxSize": 0, "name": "metadata", "presentable": false, "required": true, "system": false, "type": "json" }, { "hidden": false, "id": "date_history_played", "max": "", "min": "", "name": "played_at", "presentable": false, "required": true, "system": false, "type": "date" }, { "hidden": false, "id": "autodate_history_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_history_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": ["CREATE INDEX `idx_history_owner_played_at` ON `history_items` (`owner`, `played_at` DESC)"], "system": false }, { "id": "pbc_playlists", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "playlists", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_playlists", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_playlists_owner", "maxSelect": 1, "minSelect": 0, "name": "owner", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "text_playlists_client_id", "max": 0, "min": 0, "name": "client_id", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_playlists_name", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "text_playlists_description", "max": 0, "min": 0, "name": "description", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "url_playlists_cover", "name": "cover_url", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "hidden": false, "id": "bool_playlists_public", "name": "is_public", "presentable": false, "required": false, "system": false, "type": "bool" }, { "hidden": false, "id": "autodate_playlists_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_playlists_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_playlists_owner_client_id` ON `playlists` (`owner`, `client_id`) WHERE `client_id` != ''", "CREATE INDEX `idx_playlists_owner_updated` ON `playlists` (`owner`, `updated`)", "CREATE INDEX `idx_playlists_public_updated` ON `playlists` (`is_public`, `updated`)" ], "system": false }, { "id": "pbc_playlist_tracks", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "playlist_tracks", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_playlist_tracks", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_playlists", "hidden": false, "id": "rel_tracks_playlist", "maxSelect": 1, "minSelect": 0, "name": "playlist", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "select_tracks_type", "maxSelect": 1, "name": "item_type", "presentable": false, "required": true, "system": false, "type": "select", "values": ["track", "video", "podcast"] }, { "hidden": false, "id": "text_tracks_item_id", "max": 0, "min": 0, "name": "item_id", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "json_tracks_metadata", "maxSize": 0, "name": "metadata", "presentable": false, "required": true, "system": false, "type": "json" }, { "hidden": false, "id": "num_tracks_position", "max": null, "min": null, "name": "position", "onlyInt": false, "presentable": false, "required": true, "system": false, "type": "number" }, { "hidden": false, "id": "date_tracks_added", "max": "", "min": "", "name": "added_at", "presentable": false, "required": false, "system": false, "type": "date" }, { "hidden": false, "id": "autodate_tracks_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_tracks_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_playlist_tracks_playlist_position` ON `playlist_tracks` (`playlist`, `position`)", "CREATE INDEX `idx_playlist_tracks_playlist_item` ON `playlist_tracks` (`playlist`, `item_id`)" ], "system": false }, { "id": "pbc_folders", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "folders", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_folders", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_folders_owner", "maxSelect": 1, "minSelect": 0, "name": "owner", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "text_folders_client_id", "max": 0, "min": 0, "name": "client_id", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_folders_name", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "url_folders_cover", "name": "cover_url", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "hidden": false, "id": "autodate_folders_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_folders_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_folders_owner_client_id` ON `folders` (`owner`, `client_id`) WHERE `client_id` != ''", "CREATE INDEX `idx_folders_owner_updated` ON `folders` (`owner`, `updated`)" ], "system": false }, { "id": "pbc_folder_playlists", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "folder_playlists", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_folder_playlists", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_folders", "hidden": false, "id": "rel_folder_playlists_folder", "maxSelect": 1, "minSelect": 0, "name": "folder", "presentable": false, "required": true, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "pbc_playlists", "hidden": false, "id": "rel_folder_playlists_playlist", "maxSelect": 1, "minSelect": 0, "name": "playlist", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "num_folder_playlists_position", "max": null, "min": null, "name": "position", "onlyInt": false, "presentable": false, "required": true, "system": false, "type": "number" }, { "hidden": false, "id": "autodate_folder_playlists_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_folder_playlists_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": [ "CREATE UNIQUE INDEX `idx_folder_playlists_folder_playlist` ON `folder_playlists` (`folder`, `playlist`)", "CREATE UNIQUE INDEX `idx_folder_playlists_folder_position` ON `folder_playlists` (`folder`, `position`)" ], "system": false }, { "id": "pbc_favorite_albums", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "favorite_albums", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_favorite_albums", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_favorite_albums_owner", "maxSelect": 1, "minSelect": 0, "name": "owner", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "text_favorite_album_id", "max": 0, "min": 0, "name": "album_id", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "json_favorite_albums_metadata", "maxSize": 0, "name": "metadata", "presentable": false, "required": true, "system": false, "type": "json" }, { "hidden": false, "id": "num_favorite_albums_position", "max": null, "min": null, "name": "position", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "autodate_favorite_albums_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_favorite_albums_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": ["CREATE UNIQUE INDEX `idx_favorite_albums_owner_album` ON `favorite_albums` (`owner`, `album_id`)"], "system": false }, { "id": "pbc_themes", "listRule": null, "viewRule": null, "createRule": null, "updateRule": null, "deleteRule": null, "name": "themes", "type": "base", "fields": [ { "autogeneratePattern": "[a-z0-9]{15}", "hidden": false, "id": "text_id_themes", "max": 15, "min": 15, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": true, "collectionId": "pbc_app_users", "hidden": false, "id": "rel_themes_author", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "text_themes_name", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "text_themes_description", "max": 0, "min": 0, "name": "description", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "text_themes_css", "max": 0, "min": 0, "name": "css", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "text_themes_author_snapshot", "max": 0, "min": 0, "name": "author_name_snapshot", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "url_themes_author_url", "name": "author_url", "onlyDomains": null, "presentable": false, "required": false, "system": false, "type": "url" }, { "hidden": false, "id": "num_themes_installs", "max": null, "min": 0, "name": "installs", "onlyInt": true, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "autodate_themes_created", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate_themes_updated", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "indexes": ["CREATE INDEX `idx_themes_author_updated` ON `themes` (`author`, `updated`)"], "system": false } ]