feat: linking relation with id in importing

This commit is contained in:
Ahmed Bouhuolia
2024-04-01 01:13:31 +02:00
parent 22a016b56e
commit 74da28b464
21 changed files with 394 additions and 84 deletions

View File

@@ -88,7 +88,11 @@ export class CreateItem {
* @param {IItemDTO} item
* @return {Promise<IItem>}
*/
public async createItem(tenantId: number, itemDTO: IItemDTO): Promise<IItem> {
public async createItem(
tenantId: number,
itemDTO: IItemDTO,
trx?: Knex.Transaction
): Promise<IItem> {
const { Item } = this.tenancy.models(tenantId);
// Authorize the item before creating.
@@ -111,7 +115,8 @@ export class CreateItem {
} as IItemEventCreatedPayload);
return item;
}
},
trx
);
return item;
}

View File

@@ -35,7 +35,10 @@ export class ItemsValidators {
}
});
if (foundItems.length > 0) {
throw new ServiceError(ERRORS.ITEM_NAME_EXISTS);
throw new ServiceError(
ERRORS.ITEM_NAME_EXISTS,
'The item name is already exist.'
);
}
}

View File

@@ -0,0 +1,34 @@
import { Inject, Service } from 'typedi';
import { Knex } from 'knex';
import { Importable } from '@/services/Import/Importable';
import { IItemCreateDTO } from '@/interfaces';
import { CreateItem } from './CreateItem';
@Service()
export class ItemsImportable extends Importable {
@Inject()
private createItemService: CreateItem;
/**
* Mapps the imported data to create a new item service.
* @param {number} tenantId
* @param {ICustomerNewDTO} createDTO
* @param {Knex.Transaction} trx
* @returns {Promise<void>}
*/
public async importable(
tenantId: number,
createDTO: IItemCreateDTO,
trx?: Knex.Transaction<any, any[]>
): Promise<void> {
console.log(createDTO, tenantId, 'XX');
await this.createItemService.createItem(tenantId, createDTO, trx);
}
/**
* Retrieves the sample data of customers used to download sample sheet.
*/
public sampleData(): any[] {
return [];
}
}