diff --git a/pb_migrations/1759344923_updated_players.js b/pb_migrations/1759344923_updated_players.js
new file mode 100644
index 0000000..c877350
--- /dev/null
+++ b/pb_migrations/1759344923_updated_players.js
@@ -0,0 +1,46 @@
+///
+migrate((app) => {
+ const collection = app.findCollectionByNameOrId("pbc_3072146508")
+
+ // remove field
+ collection.fields.removeById("relation2029409178")
+
+ // remove field
+ collection.fields.removeById("relation2813965191")
+
+ return app.save(collection)
+}, (app) => {
+ const collection = app.findCollectionByNameOrId("pbc_3072146508")
+
+ // add field
+ collection.fields.addAt(5, new Field({
+ "cascadeDelete": false,
+ "collectionId": "pbc_1340419796",
+ "hidden": false,
+ "id": "relation2029409178",
+ "maxSelect": 999,
+ "minSelect": 0,
+ "name": "badges",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "relation"
+ }))
+
+ // add field
+ collection.fields.addAt(6, new Field({
+ "cascadeDelete": false,
+ "collectionId": "pbc_1340419796",
+ "hidden": false,
+ "id": "relation2813965191",
+ "maxSelect": 1,
+ "minSelect": 0,
+ "name": "featured_badge",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "relation"
+ }))
+
+ return app.save(collection)
+})
diff --git a/pb_migrations/1759344931_deleted_player_badges_view.js b/pb_migrations/1759344931_deleted_player_badges_view.js
new file mode 100644
index 0000000..de1bd90
--- /dev/null
+++ b/pb_migrations/1759344931_deleted_player_badges_view.js
@@ -0,0 +1,187 @@
+///
+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_GhrR",
+ "max": 0,
+ "min": 0,
+ "name": "badge_name",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "_clone_DEaW",
+ "max": 0,
+ "min": 0,
+ "name": "badge_description",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "_clone_MHmw",
+ "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_11YE",
+ "max": 50,
+ "min": 0,
+ "name": "badge_icon",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "_clone_qAJu",
+ "max": 50,
+ "min": 0,
+ "name": "badge_color",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "_clone_giOf",
+ "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_Q7lC",
+ "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);
+})
diff --git a/pb_migrations/1759344938_deleted_player_badge_progress.js b/pb_migrations/1759344938_deleted_player_badge_progress.js
new file mode 100644
index 0000000..5d3a4df
--- /dev/null
+++ b/pb_migrations/1759344938_deleted_player_badge_progress.js
@@ -0,0 +1,129 @@
+///
+migrate((app) => {
+ const collection = app.findCollectionByNameOrId("pbc_4251874343");
+
+ return app.delete(collection);
+}, (app) => {
+ const collection = new Collection({
+ "createRule": null,
+ "deleteRule": null,
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "cascadeDelete": true,
+ "collectionId": "pbc_3072146508",
+ "hidden": false,
+ "id": "relation2847519201",
+ "maxSelect": 1,
+ "minSelect": 1,
+ "name": "player_id",
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "relation"
+ },
+ {
+ "cascadeDelete": true,
+ "collectionId": "pbc_1340419796",
+ "hidden": false,
+ "id": "relation3948571039",
+ "maxSelect": 1,
+ "minSelect": 1,
+ "name": "badge_id",
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "relation"
+ },
+ {
+ "hidden": false,
+ "id": "number1847293057",
+ "max": null,
+ "min": 0,
+ "name": "current_progress",
+ "onlyInt": false,
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "number2948571040",
+ "max": null,
+ "min": 1,
+ "name": "target_progress",
+ "onlyInt": false,
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "bool3049672141",
+ "name": "is_earned",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "bool"
+ },
+ {
+ "hidden": false,
+ "id": "date1150773242",
+ "max": "",
+ "min": "",
+ "name": "earned_at",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "date"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ }
+ ],
+ "id": "pbc_4251874343",
+ "indexes": [
+ "CREATE UNIQUE INDEX `idx_unique_player_badge` ON `player_badge_progress` (`player_id`, `badge_id`)"
+ ],
+ "listRule": null,
+ "name": "player_badge_progress",
+ "system": false,
+ "type": "base",
+ "updateRule": null,
+ "viewRule": null
+ });
+
+ return app.save(collection);
+})
diff --git a/pb_migrations/1759344944_deleted_badges.js b/pb_migrations/1759344944_deleted_badges.js
new file mode 100644
index 0000000..d987c7a
--- /dev/null
+++ b/pb_migrations/1759344944_deleted_badges.js
@@ -0,0 +1,173 @@
+///
+migrate((app) => {
+ const collection = app.findCollectionByNameOrId("pbc_1340419796");
+
+ return app.delete(collection);
+}, (app) => {
+ const collection = new Collection({
+ "createRule": null,
+ "deleteRule": null,
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1579384326",
+ "max": 0,
+ "min": 0,
+ "name": "name",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1843675174",
+ "max": 0,
+ "min": 0,
+ "name": "description",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "select4029814376",
+ "maxSelect": 1,
+ "name": "type",
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "select",
+ "values": [
+ "tournament_participation",
+ "tournament_placement",
+ "performance",
+ "overtime",
+ "match_milestone"
+ ]
+ },
+ {
+ "hidden": false,
+ "id": "json1578432567",
+ "maxSize": 2000000,
+ "name": "criteria",
+ "presentable": false,
+ "required": true,
+ "system": false,
+ "type": "json"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text3928475610",
+ "max": 50,
+ "min": 0,
+ "name": "icon",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1847293056",
+ "max": 50,
+ "min": 0,
+ "name": "color",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "number4113142680",
+ "max": null,
+ "min": null,
+ "name": "order",
+ "onlyInt": false,
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "bool2847519203",
+ "name": "is_progressive",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "bool"
+ },
+ {
+ "hidden": false,
+ "id": "number2948571038",
+ "max": null,
+ "min": null,
+ "name": "progress_target",
+ "onlyInt": false,
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ }
+ ],
+ "id": "pbc_1340419796",
+ "indexes": [],
+ "listRule": null,
+ "name": "badges",
+ "system": false,
+ "type": "base",
+ "updateRule": null,
+ "viewRule": null
+ });
+
+ return app.save(collection);
+})