169 lines
6 KiB
PHP
169 lines
6 KiB
PHP
<?php
|
|
use Index\Db\DbConnection;
|
|
use Index\Db\Migration\DbMigration;
|
|
|
|
final class MakeOauthStuffBigint_20250423_224653 implements DbMigration {
|
|
public function migrate(DbConnection $conn): void {
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_scopes
|
|
DROP FOREIGN KEY apps_scopes_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_scopes
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_uris
|
|
DROP FOREIGN KEY apps_uris_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_uris
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER uri_id;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_access
|
|
DROP FOREIGN KEY oauth2_access_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_access
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER acc_id;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
DROP FOREIGN KEY oauth2_authorise_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
DROP FOREIGN KEY oauth2_authorise_uri_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER auth_id,
|
|
CHANGE COLUMN uri_id uri_id BIGINT UNSIGNED NOT NULL AFTER user_id;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_device
|
|
DROP FOREIGN KEY oauth2_device_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_device
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER dev_id;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_refresh
|
|
DROP FOREIGN KEY oauth2_refresh_app_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_refresh
|
|
DROP FOREIGN KEY oauth2_refresh_access_foreign;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_refresh
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER ref_id,
|
|
CHANGE COLUMN acc_id acc_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER user_id;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps
|
|
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL FIRST,
|
|
DROP COLUMN app_client_id,
|
|
DROP INDEX apps_client_id_unique;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_uris
|
|
CHANGE COLUMN uri_id uri_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_access
|
|
CHANGE COLUMN acc_id acc_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
CHANGE COLUMN auth_id auth_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_device
|
|
CHANGE COLUMN dev_id dev_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_refresh
|
|
CHANGE COLUMN ref_id ref_id BIGINT UNSIGNED NOT NULL FIRST;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_scopes
|
|
ADD CONSTRAINT apps_scopes_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_apps_uris
|
|
ADD CONSTRAINT apps_uris_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_access
|
|
ADD CONSTRAINT oauth2_access_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
ADD CONSTRAINT oauth2_authorise_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_authorise
|
|
ADD CONSTRAINT oauth2_authorise_uri_foreign
|
|
FOREIGN KEY (uri_id)
|
|
REFERENCES msz_apps_uris (uri_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_device
|
|
ADD CONSTRAINT oauth2_device_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$conn->execute(<<<SQL
|
|
ALTER TABLE msz_oauth2_refresh
|
|
ADD CONSTRAINT oauth2_refresh_app_foreign
|
|
FOREIGN KEY (app_id)
|
|
REFERENCES msz_apps (app_id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE;
|
|
SQL);
|
|
|
|
$snowflake = new \Index\Snowflake\RandomSnowflake;
|
|
$stmt = $conn->prepare('UPDATE msz_apps SET app_id = ? WHERE app_id = ?');
|
|
$result = $conn->query('SELECT app_id, UNIX_TIMESTAMP(app_created) FROM msz_apps');
|
|
while($result->next()) {
|
|
$stmt->addParameter(1, (string)$snowflake->next(at: $result->getInteger(1) * 1000));
|
|
$stmt->addParameter(2, $result->getString(0));
|
|
$stmt->execute();
|
|
}
|
|
}
|
|
}
|