From 3c9050340ea93012d755edc72ed021cc120afd90 Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Wed, 11 Dec 2019 01:29:57 +0300 Subject: [PATCH] Add console command to migrate all oauth sessions scopes data from redis to db --- .../controllers/ManualMigrateController.php | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 console/controllers/ManualMigrateController.php diff --git a/console/controllers/ManualMigrateController.php b/console/controllers/ManualMigrateController.php new file mode 100644 index 0000000..00960ed --- /dev/null +++ b/console/controllers/ManualMigrateController.php @@ -0,0 +1,51 @@ +redis->scan($cursor, 'MATCH', 'oauth:sessions:*:scopes', 'COUNT', 500); + $cursor = (int)$response[0]; + $keys = $response[1]; + if (!empty($keys)) { + $sessionsIds = array_map(function(string $key): int { + return (int)explode(':', $key)[2]; + }, $keys); + /** @var OauthSession[] $sessions */ + $sessions = OauthSession::find()->andWhere(['legacy_id' => $sessionsIds]); + foreach ($sessions as $session) { + if (!empty($session->scopes)) { + $session->scopes = Yii::$app->redis->smembers("oauth:sessions:{$session->legacy_id}:scopes"); + Assert::true($session->save()); + } + } + + if ($removeKeys) { + Yii::$app->redis->del(...$keys); + } + } + + $totalCount += count($keys); + Console::output("Processed {$totalCount} keys."); + + if ($cursor === 0) { + break; + } + } + + return ExitCode::OK; + } + +}