mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
/* MIGRATION TO CLEAN PRODUCTION DATA
|
|
*
|
|
* login_users and state_users are not in sync.
|
|
* Copy missing data from login_users to state_users.
|
|
*/
|
|
|
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
|
|
export async function upgrade(queryFn: (query: string, values?: any[]) => Promise<Array<any>>) {
|
|
// Copy data with intact private key
|
|
await queryFn(
|
|
`INSERT INTO state_users
|
|
(public_key, email, first_name, last_name, username, disabled)
|
|
(SELECT pubkey as public_key, email, first_name, last_name, username, disabled
|
|
FROM login_users
|
|
WHERE email NOT IN (SELECT email from state_users)
|
|
AND privkey IS NOT NULL
|
|
)`,
|
|
)
|
|
// Copy data without intact private key, generate random pubkey
|
|
await queryFn(
|
|
`INSERT INTO state_users
|
|
(public_key, email, first_name, last_name, username, disabled)
|
|
(SELECT UNHEX(SHA1(RAND())) as public_key, email, first_name, last_name, username, disabled
|
|
FROM login_users
|
|
WHERE email NOT IN (SELECT email from state_users)
|
|
AND privkey IS NULL
|
|
)`,
|
|
)
|
|
// Remove duplicate data from state_users with dead pubkeys
|
|
// 18 entries
|
|
await queryFn(
|
|
`DELETE FROM state_users
|
|
WHERE id IN
|
|
(SELECT state_users.id FROM state_users
|
|
WHERE public_key NOT IN
|
|
(SELECT pubkey FROM login_users
|
|
WHERE pubkey IS NOT NULL)
|
|
AND email IN (SELECT email FROM state_users GROUP BY email HAVING COUNT(*) > 1
|
|
)
|
|
)`,
|
|
)
|
|
}
|
|
|
|
export async function downgrade(/* queryFn: (query: string, values?: any[]) => Promise<Array<any>> */) {
|
|
// cannot undelete things
|
|
}
|