metis-desk/.artifacts/account-deletion/cleanup-test.mts
David 0e8e15c9c2 feat: Implement account deletion functionality with UI and API integration
- Added `removeAccessAccount` function to handle account deletion in the database, ensuring no external references exist.
- Created `deleteAccount` API function to facilitate account deletion requests from the client.
- Developed `AccountDeleteDialog` component for user confirmation before account deletion, integrating with the delete API.
- Introduced resource image handling with validation for PNG uploads, including UI components for image selection and preview.
- Implemented resource icon template evolution logic to maintain icon bindings without overwriting existing fields.
- Added scripts for auditing account deletion and usage checks, ensuring robust testing of the new features.
2026-10-27 11:39:53 +01:00

19 lines
1.7 KiB
TypeScript

import { createDatabase, readDatabaseEnvironment } from '../../apps/server/src/config/database';
const env=readDatabaseEnvironment(process.env);
if(env.DB_NAME!=='metis_desk_test'||env.NODE_ENV!=='test')throw Error('Solo pruebas');
const db=createDatabase(env);
const company='01a17cae-4bba-7070-a394-13f9009c5cfb';
try {
await db.transaction(async transaction=>{
const replacements={company};
const rows=await db.query('SELECT i.kind,i.id FROM access_items i JOIN access_workspaces w ON w.id=i.workspaceId WHERE w.companyId=:company',{replacements,transaction,type:'SELECT'});
console.info({fixtureCompany:company,items:rows});
for(const table of ['access_references','access_person_references']) await db.query(`DELETE r FROM ${table} r JOIN access_items i ON i.id=r.itemId JOIN access_workspaces w ON w.id=i.workspaceId WHERE w.companyId=:company`,{replacements,transaction});
await db.query('DELETE r FROM access_revisions r JOIN access_items i ON i.id=r.itemId JOIN access_workspaces w ON w.id=i.workspaceId WHERE w.companyId=:company',{replacements,transaction});
for(const table of ['access_account_values','access_system_values']) await db.query(`DELETE v FROM ${table} v JOIN access_items i ON i.id=v.ownerId JOIN access_workspaces w ON w.id=i.workspaceId WHERE w.companyId=:company`,{replacements,transaction});
await db.query('DELETE i FROM access_items i JOIN access_workspaces w ON w.id=i.workspaceId WHERE w.companyId=:company',{replacements,transaction});
await db.query('DELETE FROM access_workspaces WHERE companyId=:company',{replacements,transaction});
await db.query('DELETE FROM companies WHERE id=:company',{replacements,transaction});
});
}finally {await db.close();}