mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 14:20:31 +00:00
refactor: tenant proxy providers
This commit is contained in:
@@ -6,6 +6,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { Vendor } from '../models/Vendor';
|
||||
import { events } from '@/common/events/events';
|
||||
import { IVendorActivatedPayload } from '../types/Vendors.types';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class ActivateVendorService {
|
||||
@@ -15,7 +16,7 @@ export class ActivateVendorService {
|
||||
private readonly validators: VendorValidators,
|
||||
|
||||
@Inject(Vendor.name)
|
||||
private readonly vendorModel: typeof Vendor,
|
||||
private readonly vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -25,7 +26,7 @@ export class ActivateVendorService {
|
||||
*/
|
||||
public async activateVendor(vendorId: number): Promise<void> {
|
||||
// Retrieves the old vendor or throw not found error.
|
||||
const oldVendor = await this.vendorModel
|
||||
const oldVendor = await this.vendorModel()
|
||||
.query()
|
||||
.findById(vendorId)
|
||||
.throwIfNotFound();
|
||||
@@ -42,7 +43,7 @@ export class ActivateVendorService {
|
||||
} as IVendorActivatedPayload);
|
||||
|
||||
// Updates the vendor on the storage.
|
||||
const vendor = await this.vendorModel
|
||||
const vendor = await this.vendorModel()
|
||||
.query(trx)
|
||||
.updateAndFetchById(vendorId, {
|
||||
active: true,
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
IVendorNewDTO,
|
||||
} from '../types/Vendors.types';
|
||||
import { CreateEditVendorDTOService } from './CreateEditVendorDTO';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class CreateVendorService {
|
||||
@@ -25,7 +26,7 @@ export class CreateVendorService {
|
||||
private readonly transformDTO: CreateEditVendorDTOService,
|
||||
|
||||
@Inject(Vendor.name)
|
||||
private readonly vendorModel: typeof Vendor,
|
||||
private readonly vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -46,9 +47,11 @@ export class CreateVendorService {
|
||||
} as IVendorEventCreatingPayload);
|
||||
|
||||
// Creates a new contact as vendor.
|
||||
const vendor = await this.vendorModel.query(trx).insertAndFetch({
|
||||
...vendorObject,
|
||||
});
|
||||
const vendor = await this.vendorModel()
|
||||
.query(trx)
|
||||
.insertAndFetch({
|
||||
...vendorObject,
|
||||
});
|
||||
// Triggers `onVendorCreated` event.
|
||||
await this.eventPublisher.emitAsync(events.vendors.onCreated, {
|
||||
vendorId: vendor.id,
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
IVendorEventDeletedPayload,
|
||||
IVendorEventDeletingPayload,
|
||||
} from '../types/Vendors.types';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteVendorService {
|
||||
@@ -19,7 +20,7 @@ export class DeleteVendorService {
|
||||
constructor(
|
||||
private eventPublisher: EventEmitter2,
|
||||
private uow: UnitOfWork,
|
||||
@Inject(Vendor.name) private vendorModel: typeof Vendor,
|
||||
@Inject(Vendor.name) private vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -29,7 +30,7 @@ export class DeleteVendorService {
|
||||
*/
|
||||
public async deleteVendor(vendorId: number) {
|
||||
// Retrieves the old vendor or throw not found service error.
|
||||
const oldVendor = await this.vendorModel
|
||||
const oldVendor = await this.vendorModel()
|
||||
.query()
|
||||
.findById(vendorId)
|
||||
.throwIfNotFound();
|
||||
@@ -46,7 +47,7 @@ export class DeleteVendorService {
|
||||
// Deletes vendor contact under unit-of-work.
|
||||
return this.uow.withTransaction(async (trx: Knex.Transaction) => {
|
||||
// Deletes the vendor contact from the storage.
|
||||
await this.vendorModel.query(trx).findById(vendorId).delete();
|
||||
await this.vendorModel().query(trx).findById(vendorId).delete();
|
||||
|
||||
// Triggers `onVendorDeleted` event.
|
||||
await this.eventPublisher.emitAsync(events.vendors.onDeleted, {
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
||||
import { Vendor } from '../models/Vendor';
|
||||
import { events } from '@/common/events/events';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class EditOpeningBalanceVendorService {
|
||||
@@ -22,7 +23,7 @@ export class EditOpeningBalanceVendorService {
|
||||
private readonly uow: UnitOfWork,
|
||||
|
||||
@Inject(Vendor.name)
|
||||
private readonly vendorModel: typeof Vendor,
|
||||
private readonly vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -36,7 +37,7 @@ export class EditOpeningBalanceVendorService {
|
||||
openingBalanceEditDTO: IVendorOpeningBalanceEditDTO,
|
||||
) {
|
||||
// Retrieves the old vendor or throw not found error.
|
||||
const oldVendor = await this.vendorModel
|
||||
const oldVendor = await this.vendorModel()
|
||||
.query()
|
||||
.findById(vendorId)
|
||||
.throwIfNotFound();
|
||||
@@ -54,7 +55,7 @@ export class EditOpeningBalanceVendorService {
|
||||
);
|
||||
|
||||
// Mutates the vendor on the storage.
|
||||
const vendor = await this.vendorModel
|
||||
const vendor = await this.vendorModel()
|
||||
.query()
|
||||
.patchAndFetchById(vendorId, {
|
||||
...openingBalanceEditDTO,
|
||||
|
||||
@@ -10,6 +10,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { UnitOfWork } from '@/modules/Tenancy/TenancyDB/UnitOfWork.service';
|
||||
import { Vendor } from '../models/Vendor';
|
||||
import { events } from '@/common/events/events';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class EditVendorService {
|
||||
@@ -18,7 +19,8 @@ export class EditVendorService {
|
||||
private readonly uow: UnitOfWork,
|
||||
private readonly transformDTO: CreateEditVendorDTOService,
|
||||
|
||||
@Inject(Vendor.name) private readonly vendorModel: typeof Vendor,
|
||||
@Inject(Vendor.name)
|
||||
private readonly vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -29,7 +31,7 @@ export class EditVendorService {
|
||||
*/
|
||||
public async editVendor(vendorId: number, vendorDTO: IVendorEditDTO) {
|
||||
// Retrieve the vendor or throw not found error.
|
||||
const oldVendor = await this.vendorModel
|
||||
const oldVendor = await this.vendorModel()
|
||||
.query()
|
||||
.findById(vendorId)
|
||||
.throwIfNotFound();
|
||||
@@ -46,7 +48,7 @@ export class EditVendorService {
|
||||
} as IVendorEventEditingPayload);
|
||||
|
||||
// Edits the vendor contact.
|
||||
const vendor = await this.vendorModel
|
||||
const vendor = await this.vendorModel()
|
||||
.query()
|
||||
.updateAndFetchById(vendorId, {
|
||||
...vendorObj,
|
||||
|
||||
@@ -2,12 +2,14 @@ import { Inject, Injectable } from '@nestjs/common';
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { Vendor } from '../models/Vendor';
|
||||
import { VendorTransfromer } from './VendorTransformer';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class GetVendorService {
|
||||
constructor(
|
||||
private readonly transformer: TransformerInjectable,
|
||||
@Inject(Vendor.name) private readonly vendorModel: typeof Vendor,
|
||||
@Inject(Vendor.name)
|
||||
private readonly vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -15,7 +17,7 @@ export class GetVendorService {
|
||||
* @param {number} vendorId
|
||||
*/
|
||||
public async getVendor(vendorId: number) {
|
||||
const vendor = await this.vendorModel
|
||||
const vendor = await this.vendorModel()
|
||||
.query()
|
||||
.findById(vendorId)
|
||||
.throwIfNotFound();
|
||||
|
||||
@@ -5,6 +5,7 @@ import { DynamicListService } from '@/modules/DynamicListing/DynamicList.service
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { VendorTransfromer } from './VendorTransformer';
|
||||
import { GetVendorsResponse, IVendorsFilter } from '../types/Vendors.types';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class GetVendorsService {
|
||||
@@ -18,7 +19,7 @@ export class GetVendorsService {
|
||||
private dynamicListService: DynamicListService,
|
||||
private transformer: TransformerInjectable,
|
||||
|
||||
@Inject(Vendor.name) private vendorModel: typeof Vendor,
|
||||
@Inject(Vendor.name) private vendorModel: TenantModelProxy<typeof Vendor>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -34,11 +35,11 @@ export class GetVendorsService {
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
this.vendorModel,
|
||||
this.vendorModel(),
|
||||
filter,
|
||||
);
|
||||
// Vendors list.
|
||||
const { results, pagination } = await this.vendorModel
|
||||
const { results, pagination } = await this.vendorModel()
|
||||
.query()
|
||||
.onBuild((builder) => {
|
||||
dynamicList.buildQuery()(builder);
|
||||
|
||||
Reference in New Issue
Block a user