mirror of
https://github.com/monochrome-music/monochrome.git
synced 2026-10-19 01:30:46 -05:00
1180 lines
37 KiB
JSON
1180 lines
37 KiB
JSON
[
|
|
{
|
|
"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
|
|
}
|
|
]
|