/// migrate((app) => { const collection = app.findCollectionByNameOrId("pbc_5062686152"); return app.delete(collection); }, (app) => { const collection = new Collection({ "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "cascadeDelete": false, "collectionId": "pbc_3072146508", "hidden": false, "id": "relation2582050271", "maxSelect": 1, "minSelect": 0, "name": "player_id", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": false, "collectionId": "pbc_1340419796", "hidden": false, "id": "relation4154639100", "maxSelect": 1, "minSelect": 0, "name": "badge_id", "presentable": false, "required": false, "system": false, "type": "relation" }, { "autogeneratePattern": "", "hidden": false, "id": "_clone_bzlv", "max": 0, "min": 0, "name": "badge_name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "_clone_CXA6", "max": 0, "min": 0, "name": "badge_description", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "_clone_kZTN", "maxSelect": 1, "name": "badge_type", "presentable": false, "required": true, "system": false, "type": "select", "values": [ "tournament_participation", "tournament_placement", "performance", "overtime", "match_milestone" ] }, { "autogeneratePattern": "", "hidden": false, "id": "_clone_AgrF", "max": 50, "min": 0, "name": "badge_icon", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "_clone_m5vn", "max": 50, "min": 0, "name": "badge_color", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "_clone_MAib", "name": "is_progressive", "presentable": false, "required": false, "system": false, "type": "bool" }, { "hidden": false, "id": "json3212413036", "maxSize": 1, "name": "current_progress", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json4171899439", "maxSize": 1, "name": "target_progress", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3435813110", "maxSize": 1, "name": "is_earned", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "_clone_g8UU", "max": "", "min": "", "name": "earned_at", "presentable": false, "required": false, "system": false, "type": "date" } ], "id": "pbc_5062686152", "indexes": [], "listRule": null, "name": "player_badges_view", "system": false, "type": "view", "updateRule": null, "viewQuery": "\n SELECT\n (p.id || '_' || b.id) as id,\n p.id as player_id,\n b.id as badge_id,\n b.name as badge_name,\n b.description as badge_description,\n b.type as badge_type,\n b.icon as badge_icon,\n b.color as badge_color,\n b.is_progressive,\n COALESCE(pbp.current_progress, 0) as current_progress,\n COALESCE(pbp.target_progress, b.progress_target, 1) as target_progress,\n COALESCE(pbp.is_earned, false) as is_earned,\n pbp.earned_at\n FROM players p\n CROSS JOIN badges b\n LEFT JOIN player_badge_progress pbp ON pbp.player_id = p.id AND pbp.badge_id = b.id\n ", "viewRule": null }); return app.save(collection); })