1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-31 00:16:47 +01:00

chore: add another migration that remigrates the proper way (#3719)

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

Adds a migration that renames `token_name` back to `username`, then adds
a new optional column named `token_name`

## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

I've added fallbacks for resolving username/tokenname on insert and on
making rows from results.
But this adds another column renaming, which is worth discussing
properly
This commit is contained in:
David Leek 2023-05-11 15:33:04 +02:00 committed by GitHub
parent 9943179393
commit 534e1f1378
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 22 deletions

View File

@ -39,7 +39,7 @@ const tokenRowReducer = (acc, tokenRow) => {
if (!acc[tokenRow.secret]) {
acc[tokenRow.secret] = {
secret: token.secret,
tokenName: token.token_name,
tokenName: token.token_name ? token.token_name : token.username,
type: token.type.toLowerCase(),
project: ALL,
projects: [ALL],
@ -48,7 +48,7 @@ const tokenRowReducer = (acc, tokenRow) => {
createdAt: token.created_at,
alias: token.alias,
seenAt: token.seen_at,
username: token.token_name,
username: token.token_name ? token.token_name : token.username,
};
}
const currentToken = acc[tokenRow.secret];
@ -63,6 +63,7 @@ const tokenRowReducer = (acc, tokenRow) => {
};
const toRow = (newToken: IApiTokenCreate) => ({
username: newToken.tokenName ?? newToken.username,
token_name: newToken.tokenName ?? newToken.username,
secret: newToken.secret,
type: newToken.type,
@ -125,6 +126,7 @@ export class ApiTokenStore implements IApiTokenStore {
)
.select(
'tokens.secret',
'username',
'token_name',
'type',
'expires_at',

View File

@ -1,20 +0,0 @@
/* eslint camelcase: "off" */
'use strict';
exports.up = function (db, cb) {
db.runSql(
`
ALTER TABLE api_tokens RENAME COLUMN username TO token_name;
`,
cb,
);
};
exports.down = function (db, cb) {
db.runSql(
`
ALTER TABLE api_tokens RENAME COLUMN token_name TO username;
`,
cb,
);
};

View File

@ -0,0 +1,36 @@
'use strict';
exports.up = function (db, callback) {
db.runSql(
`
SELECT * FROM migrations WHERE name = '/20230426110026-rename-api-token-username-field';
`,
(err, results) => {
if (results.rows.length > 0) {
db.runSql(
`
ALTER TABLE api_tokens RENAME COLUMN token_name TO username;
ALTER TABLE api_tokens ADD COLUMN "token_name" text;
UPDATE api_tokens SET token_name = username;
DELETE FROM migrations WHERE name = '/20230426110026-rename-api-token-username-field';
`,
);
} else {
db.runSql(
`
ALTER TABLE api_tokens ADD COLUMN "token_name" text;
UPDATE api_tokens SET token_name = username;
`,
);
}
callback();
},
);
};
exports.down = function (db, callback) {
db.runSql(
`ALTER TABLE api_tokens DROP COLUMN IF EXISTS "token_name";`,
callback,
);
};