mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 16:35:42 +00:00
fix: ( iam ) resolve post-merge type errors and apply IAM column migrations
This commit is contained in:
@@ -195,8 +195,35 @@ export class PassengerAuthService {
|
||||
|
||||
private async compensateIamSignup(email: string): Promise<void> {
|
||||
try {
|
||||
await this.dataSource.query(`DELETE FROM iam.sessions WHERE email = $1`, [email]);
|
||||
await this.dataSource.query(`DELETE FROM iam.users WHERE email = $1`, [email]);
|
||||
const rows = await this.dataSource.query<{ id: string }[]>(
|
||||
`SELECT id FROM iam.users WHERE email = $1 LIMIT 1`,
|
||||
[email],
|
||||
);
|
||||
if (!rows.length) return;
|
||||
const iamUserId = rows[0].id;
|
||||
|
||||
// Discover every table in the iam schema that has a FK pointing at iam.users.id
|
||||
const fkDeps = await this.dataSource.query<{ table_name: string; column_name: string }[]>(`
|
||||
SELECT kcu.table_name, kcu.column_name
|
||||
FROM information_schema.table_constraints tc
|
||||
JOIN information_schema.key_column_usage kcu
|
||||
ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
|
||||
JOIN information_schema.referential_constraints rc
|
||||
ON tc.constraint_name = rc.constraint_name
|
||||
JOIN information_schema.key_column_usage ccu
|
||||
ON rc.unique_constraint_name = ccu.constraint_name
|
||||
WHERE ccu.table_schema = 'iam' AND ccu.table_name = 'users' AND ccu.column_name = 'id'
|
||||
AND tc.table_schema = 'iam' AND tc.constraint_type = 'FOREIGN KEY'
|
||||
`);
|
||||
|
||||
for (const { table_name, column_name } of fkDeps) {
|
||||
await this.dataSource.query(
|
||||
`DELETE FROM iam.${table_name} WHERE ${column_name} = $1`,
|
||||
[iamUserId],
|
||||
);
|
||||
}
|
||||
|
||||
await this.dataSource.query(`DELETE FROM iam.users WHERE id = $1`, [iamUserId]);
|
||||
} catch (err) {
|
||||
console.error('[PassengerAuthService] IAM compensating cleanup failed for', email, (err as Error).message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user