- 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.
19 lines
1.7 KiB
TypeScript
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();}
|