/// migrate((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" }, { "hidden": false, "id": "json4231605813", "maxSize": 1, "name": "player_name", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "number103159226", "max": null, "min": null, "name": "matches", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "number3837590211", "max": null, "min": null, "name": "tournaments", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "json2732118329", "maxSize": 1, "name": "wins", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json724428801", "maxSize": 1, "name": "losses", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3154249934", "maxSize": 1, "name": "total_cups_made", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3227208027", "maxSize": 1, "name": "total_cups_against", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2379943496", "maxSize": 1, "name": "win_percentage", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3165107022", "maxSize": 1, "name": "avg_cups_per_match", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3041953980", "maxSize": 1, "name": "margin_of_victory", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json1531431708", "maxSize": 1, "name": "margin_of_loss", "presentable": false, "required": false, "system": false, "type": "json" } ], "id": "pbc_4086490894", "indexes": [], "listRule": null, "name": "player_regional_stats", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT\n p.id as id,\n p.id as player_id,\n (p.first_name || ' ' || p.last_name) as player_name,\n COUNT(m.id) as matches,\n COUNT(DISTINCT m.tournament) as tournaments,\n SUM(CASE\n WHEN (m.home = t.id AND m.home_cups > m.away_cups) OR\n (m.away = t.id AND m.away_cups > m.home_cups)\n THEN 1 ELSE 0\n END) as wins,\n SUM(CASE\n WHEN (m.home = t.id AND m.home_cups < m.away_cups) OR\n (m.away = t.id AND m.away_cups < m.home_cups)\n THEN 1 ELSE 0\n END) as losses,\n SUM(CASE\n WHEN m.home = t.id THEN m.home_cups\n WHEN m.away = t.id THEN m.away_cups\n ELSE 0\n END) as total_cups_made,\n SUM(CASE\n WHEN m.home = t.id THEN m.away_cups\n WHEN m.away = t.id THEN m.home_cups\n ELSE 0\n END) as total_cups_against,\n -- Win percentage\n ROUND((CAST(SUM(CASE\n WHEN (m.home = t.id AND m.home_cups > m.away_cups) OR\n (m.away = t.id AND m.away_cups > m.home_cups)\n THEN 1 ELSE 0\n END) AS REAL) / COUNT(m.id)) * 100, 2) as win_percentage,\n -- Average cups per match\n ROUND(CAST(SUM(CASE\n WHEN m.home = t.id THEN m.home_cups\n WHEN m.away = t.id THEN m.away_cups\n ELSE 0\n END) AS REAL) / COUNT(m.id), 2) as avg_cups_per_match,\n -- Margin of Victory\n ROUND(AVG(CASE\n WHEN m.home = t.id AND m.home_cups > m.away_cups\n THEN m.home_cups - m.away_cups\n WHEN m.away = t.id AND m.away_cups > m.home_cups\n THEN m.away_cups - m.home_cups\n ELSE NULL\n END), 2) as margin_of_victory,\n -- Margin of Loss\n ROUND(AVG(CASE\n WHEN m.home = t.id AND m.home_cups < m.away_cups\n THEN m.away_cups - m.home_cups\n WHEN m.away = t.id AND m.away_cups < m.home_cups\n THEN m.home_cups - m.away_cups\n ELSE NULL\n END), 2) as margin_of_loss\n FROM players p, teams t, matches m, tournaments tour\n WHERE\n t.players LIKE '%\"' || p.id || '\"%' AND\n (m.home = t.id OR m.away = t.id) AND\n m.tournament = tour.id AND\n m.status = 'ended' AND\n tour.regional = true\n GROUP BY p.id", "viewRule": null }); return app.save(collection); }, (app) => { const collection = app.findCollectionByNameOrId("pbc_4086490894"); return app.delete(collection); })