This commit is contained in:
Ahmed Bouhuolia
2025-11-19 23:42:06 +02:00
parent 5eafd23bf8
commit d90b6ffbe7
52 changed files with 161 additions and 261 deletions

View File

@@ -7,8 +7,6 @@ import {
Get,
Query,
ParseIntPipe,
DefaultValuePipe,
ParseBoolPipe,
} from '@nestjs/common';
import { AccountsApplication } from './AccountsApplication.service';
import { CreateAccountDTO } from './CreateAccount.dto';
@@ -66,24 +64,15 @@ export class AccountsController {
@Post('bulk-delete')
@ApiOperation({ summary: 'Deletes multiple accounts in bulk.' })
@ApiQuery({
name: 'skip_undeletable',
required: false,
type: Boolean,
description:
'When true, undeletable accounts will be skipped and only deletable ones will be removed.',
})
@ApiResponse({
status: 200,
description: 'The accounts have been successfully deleted.',
})
async bulkDeleteAccounts(
@Body() bulkDeleteDto: BulkDeleteDto,
@Query('skip_undeletable', new DefaultValuePipe(false), ParseBoolPipe)
skipUndeletable: boolean,
): Promise<void> {
return this.accountsApplication.bulkDeleteAccounts(bulkDeleteDto.ids, {
skipUndeletable,
skipUndeletable: bulkDeleteDto.skipUndeletable ?? false,
});
}

View File

@@ -50,8 +50,12 @@ export class DeleteAccount {
/**
* Deletes the account from the storage.
* @param {number} accountId
* @param {Knex.Transaction} trx - Database transaction instance.
*/
public deleteAccount = async (accountId: number): Promise<void> => {
public deleteAccount = async (
accountId: number,
trx?: Knex.Transaction,
): Promise<void> => {
// Retrieve account or not found service error.
const oldAccount = await this.accountModel().query().findById(accountId);
@@ -82,6 +86,6 @@ export class DeleteAccount {
oldAccount,
trx,
} as IAccountEventDeletedPayload);
});
}, trx);
};
}

View File

@@ -35,7 +35,7 @@ export class ValidateBulkDeleteAccountsService {
for (const accountId of accountIds) {
try {
await this.deleteAccountService.deleteAccount(accountId);
await this.deleteAccountService.deleteAccount(accountId, trx);
deletableIds.push(accountId);
} catch (error) {
if (error instanceof ModelHasRelationsError) {