From 4b5bb49688dab2a7809044b8622ef79aa4cbc65e Mon Sep 17 00:00:00 2001 From: Pantelis Roditis Date: Wed, 6 Nov 2024 12:39:49 +0200 Subject: [PATCH] update player maintenance and add keys for expirations --- ...540_add_player_deletion_sysconfig_keys.php | 31 ++++++++++++ ...02_create_player_maintenance_procedure.php | 48 +++++++++++++++++++ ...082203_update_player_maintenance_event.php | 26 ++++++++++ docs/Sysconfig-Keys.md | 5 ++ 4 files changed, 110 insertions(+) create mode 100644 backend/migrations-init/m241106_101540_add_player_deletion_sysconfig_keys.php create mode 100644 backend/migrations/m241106_082202_create_player_maintenance_procedure.php create mode 100644 backend/migrations/m241106_082203_update_player_maintenance_event.php diff --git a/backend/migrations-init/m241106_101540_add_player_deletion_sysconfig_keys.php b/backend/migrations-init/m241106_101540_add_player_deletion_sysconfig_keys.php new file mode 100644 index 000000000..89d6a1225 --- /dev/null +++ b/backend/migrations-init/m241106_101540_add_player_deletion_sysconfig_keys.php @@ -0,0 +1,31 @@ +upsert('sysconfig', ['id' => 'player_delete_inactive_after', 'val' => 10]); + $this->upsert('sysconfig', ['id' => 'player_delete_deleted_after', 'val' => 30]); + $this->upsert('sysconfig', ['id' => 'player_changed_to_deleted_after', 'val' => 10]); + $this->upsert('sysconfig', ['id' => 'player_delete_rejected_after', 'val' => 5]); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->upsert('sysconfig', ['id' => 'player_delete_inactive_after']); + $this->upsert('sysconfig', ['id' => 'player_delete_deleted_after']); + $this->upsert('sysconfig', ['id' => 'player_changed_to_deleted_after']); + $this->upsert('sysconfig', ['id' => 'player_delete_rejected_after']); + } +} diff --git a/backend/migrations/m241106_082202_create_player_maintenance_procedure.php b/backend/migrations/m241106_082202_create_player_maintenance_procedure.php new file mode 100644 index 000000000..c394ee4f0 --- /dev/null +++ b/backend/migrations/m241106_082202_create_player_maintenance_procedure.php @@ -0,0 +1,48 @@ +0 AND player_delete_rejected_after IS NOT NULL AND player_delete_rejected_after>0 THEN + DELETE FROM `player` WHERE `ts` < NOW() - INTERVAL player_delete_rejected_after DAY AND `status`=9 AND approval=4; + END IF; + + IF player_delete_inactive_after IS NOT NULL AND player_delete_inactive_after > 0 THEN + DELETE FROM `player` WHERE `ts` < NOW() - INTERVAL player_delete_inactive_after DAY AND `status`=9; + END IF; + + IF player_delete_deleted_after IS NOT NULL AND player_delete_deleted_after > 0 THEN + DELETE FROM `player` WHERE `ts` < NOW() - INTERVAL player_delete_deleted_after DAY AND `status`=0; + END IF; + + IF player_changed_to_deleted_after IS NOT NULL AND player_changed_to_deleted_after > 0 THEN + UPDATE player SET status=0 WHERE status=8 AND ts < NOW() - INTERVAL player_changed_to_deleted_after DAY; + END IF; + END"; + +// Use up()/down() to run migration code without a transaction. + public function up() + { + $this->db->createCommand($this->DROP_SQL)->execute(); + $this->db->createCommand($this->CREATE_SQL)->execute(); + } + + public function down() + { + $this->db->createCommand($this->DROP_SQL)->execute(); + } +} diff --git a/backend/migrations/m241106_082203_update_player_maintenance_event.php b/backend/migrations/m241106_082203_update_player_maintenance_event.php new file mode 100644 index 000000000..41d4f802e --- /dev/null +++ b/backend/migrations/m241106_082203_update_player_maintenance_event.php @@ -0,0 +1,26 @@ +db->createCommand($this->DROP_SQL)->execute(); + $this->db->createCommand($this->CREATE_SQL)->execute(); + } + + public function down() + { + $this->db->createCommand($this->DROP_SQL)->execute(); + } +} diff --git a/docs/Sysconfig-Keys.md b/docs/Sysconfig-Keys.md index d9e4cfd32..aa264c7f6 100644 --- a/docs/Sysconfig-Keys.md +++ b/docs/Sysconfig-Keys.md @@ -88,6 +88,11 @@ * `api_target_spawn_timeout` set the rate limit for the given target operation endpoints. One request per `api_target_spawn_timeout`+1 seconds * `api_target_spawn_timeout` set the rate limit for the given target operation endpoints. One request per `api_target_spawn_timeout`+1 seconds +* `player_delete_inactive_after`: Delete players with status=9 (inactive) after X days +* `player_delete_deleted_after`: Delete players with status=0 (deleted) after X days +* `player_changed_to_deleted_after`: Update players with status=8 (changed) into status=0 (deleted) after X days +* `player_delete_rejected_after`: Delete players that their registration was rejected (status=9 and approval=4) after X days + ## mail configuration * `mail_from` Email address used to send registration and password reset mails from * `mail_fromName` The name appeared on the email send for registration and password resets