fix: database migrations FK relations.

fix: database columns indexing.
This commit is contained in:
Ahmed Bouhuolia
2020-10-03 12:08:11 +02:00
parent 1250eccc0d
commit 0114ed9f8b
86 changed files with 788 additions and 801 deletions

View File

@@ -162,7 +162,7 @@ export default class CurrenciesController extends BaseController {
* @param {Response} res
* @param {NextFunction} next
*/
handlerServiceError(error, req, res, next) {
handlerServiceError(error: Error, req: Request, res: Response, next: NextFunction) {
if (error instanceof ServiceError) {
if (error.errorType === 'currency_not_found') {
return res.boom.badRequest(null, {

View File

@@ -7,7 +7,6 @@ import {
import ItemCategoriesService from 'services/ItemCategories/ItemCategoriesService';
import { Inject, Service } from 'typedi';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import validateMiddleware from 'api/middleware/validateMiddleware';
import { IItemCategoryOTD } from 'interfaces';
import { ServiceError } from 'exceptions';
import BaseController from 'api/controllers/BaseController';
@@ -27,42 +26,42 @@ export default class ItemsCategoriesController extends BaseController {
...this.categoryValidationSchema,
...this.specificCategoryValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.editCategory.bind(this)),
this.handlerServiceError,
);
router.post('/', [
...this.categoryValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.newCategory.bind(this)),
this.handlerServiceError,
);
router.delete('/', [
...this.categoriesBulkValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.bulkDeleteCategories.bind(this)),
this.handlerServiceError,
);
router.delete('/:id', [
...this.specificCategoryValidationSchema
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.deleteItem.bind(this)),
this.handlerServiceError,
);
router.get('/:id', [
...this.specificCategoryValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.getCategory.bind(this)),
this.handlerServiceError,
);
router.get('/', [
...this.categoriesListValidationSchema
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.getList.bind(this)),
this.handlerServiceError,
);

View File

@@ -23,8 +23,7 @@ export default class ItemsController extends BaseController {
router() {
const router = Router();
router.post(
'/', [
router.post('/', [
...this.validateItemSchema,
],
this.validationResult,

View File

@@ -3,7 +3,6 @@ import { check, param, query, matchedData } from 'express-validator';
import { Service, Inject } from 'typedi';
import { difference } from 'lodash';
import { BillOTD } from 'interfaces';
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import BillsService from 'services/Purchases/Bills';
import BaseController from 'api/controllers/BaseController';
@@ -30,7 +29,7 @@ export default class BillsController extends BaseController {
router.post(
'/',
[...this.billValidationSchema],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateVendorExistance.bind(this)),
asyncMiddleware(this.validateItemsIds.bind(this)),
asyncMiddleware(this.validateBillNumberExists.bind(this)),
@@ -40,7 +39,7 @@ export default class BillsController extends BaseController {
router.post(
'/:id',
[...this.billValidationSchema, ...this.specificBillValidationSchema],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillExistance.bind(this)),
asyncMiddleware(this.validateVendorExistance.bind(this)),
asyncMiddleware(this.validateItemsIds.bind(this)),
@@ -51,20 +50,20 @@ export default class BillsController extends BaseController {
router.get(
'/:id',
[...this.specificBillValidationSchema],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillExistance.bind(this)),
asyncMiddleware(this.getBill.bind(this))
);
router.get(
'/',
[...this.billsListingValidationSchema],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.listingBills.bind(this))
);
router.delete(
'/:id',
[...this.specificBillValidationSchema],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillExistance.bind(this)),
asyncMiddleware(this.deleteBill.bind(this))
);

View File

@@ -30,7 +30,7 @@ export default class BillsPayments extends BaseController {
router.post('/', [
...this.billPaymentSchemaValidation,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillPaymentVendorExistance.bind(this)),
asyncMiddleware(this.validatePaymentAccount.bind(this)),
asyncMiddleware(this.validatePaymentNumber.bind(this)),
@@ -42,7 +42,7 @@ export default class BillsPayments extends BaseController {
...this.billPaymentSchemaValidation,
...this.specificBillPaymentValidateSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillPaymentVendorExistance.bind(this)),
asyncMiddleware(this.validatePaymentAccount.bind(this)),
asyncMiddleware(this.validatePaymentNumber.bind(this)),
@@ -53,19 +53,19 @@ export default class BillsPayments extends BaseController {
)
router.delete('/:id',
this.specificBillPaymentValidateSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillPaymentExistance.bind(this)),
asyncMiddleware(this.deleteBillPayment.bind(this)),
);
router.get('/:id',
this.specificBillPaymentValidateSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateBillPaymentExistance.bind(this)),
asyncMiddleware(this.getBillPayment.bind(this)),
);
router.get('/',
this.listingValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.getBillsPayments.bind(this))
);
return router;

View File

@@ -4,7 +4,6 @@ import { difference } from 'lodash';
import { Inject, Service } from 'typedi';
import { IPaymentReceive, IPaymentReceiveOTD } from 'interfaces';
import BaseController from 'api/controllers/BaseController';
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import PaymentReceiveService from 'services/Sales/PaymentsReceives';
import SaleInvoiceService from 'services/Sales/SalesInvoices';
@@ -34,7 +33,7 @@ export default class PaymentReceivesController extends BaseController {
router.post(
'/:id',
this.editPaymentReceiveValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePaymentReceiveExistance.bind(this)),
asyncMiddleware(this.validatePaymentReceiveNoExistance.bind(this)),
asyncMiddleware(this.validateCustomerExistance.bind(this)),
@@ -47,7 +46,7 @@ export default class PaymentReceivesController extends BaseController {
router.post(
'/',
this.newPaymentReceiveValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePaymentReceiveNoExistance.bind(this)),
asyncMiddleware(this.validateCustomerExistance.bind(this)),
asyncMiddleware(this.validateDepositAccount.bind(this)),
@@ -58,20 +57,20 @@ export default class PaymentReceivesController extends BaseController {
router.get(
'/:id',
this.paymentReceiveValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePaymentReceiveExistance.bind(this)),
asyncMiddleware(this.getPaymentReceive.bind(this))
);
router.get(
'/',
this.validatePaymentReceiveList,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.getPaymentReceiveList.bind(this)),
);
router.delete(
'/:id',
this.paymentReceiveValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePaymentReceiveExistance.bind(this)),
asyncMiddleware(this.deletePaymentReceive.bind(this)),
);

View File

@@ -3,7 +3,6 @@ import { check, param, query, matchedData } from 'express-validator';
import { Inject, Service } from 'typedi';
import { ISaleEstimate, ISaleEstimateOTD } from 'interfaces';
import BaseController from 'api/controllers/BaseController'
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import SaleEstimateService from 'services/Sales/SalesEstimate';
import ItemsService from 'services/Items/ItemsService';
@@ -25,7 +24,7 @@ export default class SalesEstimatesController extends BaseController {
router.post(
'/',
this.estimateValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateEstimateCustomerExistance.bind(this)),
asyncMiddleware(this.validateEstimateNumberExistance.bind(this)),
asyncMiddleware(this.validateEstimateEntriesItemsExistance.bind(this)),
@@ -36,7 +35,7 @@ export default class SalesEstimatesController extends BaseController {
...this.validateSpecificEstimateSchema,
...this.estimateValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateEstimateIdExistance.bind(this)),
asyncMiddleware(this.validateEstimateCustomerExistance.bind(this)),
asyncMiddleware(this.validateEstimateNumberExistance.bind(this)),
@@ -48,21 +47,21 @@ export default class SalesEstimatesController extends BaseController {
'/:id', [
this.validateSpecificEstimateSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateEstimateIdExistance.bind(this)),
asyncMiddleware(this.deleteEstimate.bind(this))
);
router.get(
'/:id',
this.validateSpecificEstimateSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateEstimateIdExistance.bind(this)),
asyncMiddleware(this.getEstimate.bind(this))
);
router.get(
'/',
this.validateEstimateListSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.getEstimates.bind(this))
);
return router;

View File

@@ -3,14 +3,14 @@ import { check, param, query, matchedData } from 'express-validator';
import { difference } from 'lodash';
import { raw } from 'objection';
import { Service, Inject } from 'typedi';
import validateMiddleware from 'api/middleware/validateMiddleware';
import BaseController from '../BaseController';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import SaleInvoiceService from 'services/Sales/SalesInvoices';
import ItemsService from 'services/Items/ItemsService';
import { ISaleInvoiceOTD } from 'interfaces';
@Service()
export default class SaleInvoicesController {
export default class SaleInvoicesController extends BaseController{
@Inject()
itemsService: ItemsService;
@@ -26,7 +26,7 @@ export default class SaleInvoicesController {
router.post(
'/',
this.saleInvoiceValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateInvoiceCustomerExistance.bind(this)),
asyncMiddleware(this.validateInvoiceNumberUnique.bind(this)),
asyncMiddleware(this.validateInvoiceItemsIdsExistance.bind(this)),
@@ -39,7 +39,7 @@ export default class SaleInvoicesController {
...this.saleInvoiceValidationSchema,
...this.specificSaleInvoiceValidation,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateInvoiceExistance.bind(this)),
asyncMiddleware(this.validateInvoiceCustomerExistance.bind(this)),
asyncMiddleware(this.validateInvoiceNumberUnique.bind(this)),
@@ -52,7 +52,7 @@ export default class SaleInvoicesController {
router.delete(
'/:id',
this.specificSaleInvoiceValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateInvoiceExistance.bind(this)),
asyncMiddleware(this.deleteSaleInvoice.bind(this))
);
@@ -64,13 +64,14 @@ export default class SaleInvoicesController {
router.get(
'/:id',
this.specificSaleInvoiceValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateInvoiceExistance.bind(this)),
asyncMiddleware(this.getSaleInvoice.bind(this))
);
router.get(
'/',
this.saleInvoiceListValidationSchema,
this.validationResult,
asyncMiddleware(this.getSalesInvoices.bind(this))
)
return router;

View File

@@ -1,14 +1,14 @@
import { Router, Request, Response } from 'express';
import { check, param, query, matchedData } from 'express-validator';
import { Inject, Service } from 'typedi';
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import AccountsService from 'services/Accounts/AccountsService';
import ItemsService from 'services/Items/ItemsService';
import SaleReceiptService from 'services/Sales/SalesReceipts';
import BaseController from '../BaseController';
@Service()
export default class SalesReceiptsController {
export default class SalesReceiptsController extends BaseController{
@Inject()
saleReceiptService: SaleReceiptService;
@@ -29,7 +29,7 @@ export default class SalesReceiptsController {
...this.specificReceiptValidationSchema,
...this.salesReceiptsValidationSchema,
],
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateSaleReceiptExistance.bind(this)),
asyncMiddleware(this.validateReceiptCustomerExistance.bind(this)),
asyncMiddleware(this.validateReceiptDepositAccountExistance.bind(this)),
@@ -40,7 +40,7 @@ export default class SalesReceiptsController {
router.post(
'/',
this.salesReceiptsValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateReceiptCustomerExistance.bind(this)),
asyncMiddleware(this.validateReceiptDepositAccountExistance.bind(this)),
asyncMiddleware(this.validateReceiptItemsIdsExistance.bind(this)),
@@ -49,14 +49,14 @@ export default class SalesReceiptsController {
router.delete(
'/:id',
this.specificReceiptValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateSaleReceiptExistance.bind(this)),
asyncMiddleware(this.deleteSaleReceipt.bind(this))
);
router.get(
'/',
this.listSalesReceiptsValidationSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.listingSalesReceipts.bind(this))
);
return router;

View File

@@ -1,3 +1,4 @@
import { Service } from 'typedi';
import { Router, Request, Response } from 'express';
import { body, query } from 'express-validator';
import { pick } from 'lodash';
@@ -9,6 +10,7 @@ import {
isDefinedOptionConfigurable,
} from 'utils';
@Service()
export default class SettingsController extends BaseController{
/**
* Router constructor.

View File

@@ -6,7 +6,6 @@ import config from 'config';
import { License, Plan } from 'system/models';
import BaseController from 'api/controllers/BaseController';
import LicenseService from 'services/Payment/License';
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import { ILicensesFilter } from 'interfaces';
@@ -31,13 +30,13 @@ export default class LicensesController extends BaseController {
router.post(
'/generate',
this.generateLicenseSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePlanExistance.bind(this)),
asyncMiddleware(this.generateLicense.bind(this)),
);
router.post(
'/disable/:licenseId',
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validateLicenseExistance.bind(this)),
asyncMiddleware(this.validateNotDisabledLicense.bind(this)),
asyncMiddleware(this.disableLicense.bind(this)),
@@ -45,7 +44,7 @@ export default class LicensesController extends BaseController {
router.post(
'/send',
this.sendLicenseSchemaValidation,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.sendLicense.bind(this)),
);
router.delete(

View File

@@ -1,7 +1,6 @@
import { Inject, Service } from 'typedi';
import { Router, Request, Response } from 'express';
import { check } from 'express-validator';
import validateMiddleware from 'api/middleware/validateMiddleware';
import asyncMiddleware from 'api/middleware/asyncMiddleware';
import PaymentMethodController from 'api/controllers/Subscription/PaymentMethod';
import {
@@ -26,7 +25,7 @@ export default class PaymentViaLicenseController extends PaymentMethodController
router.post(
'/payment',
this.paymentViaLicenseSchema,
validateMiddleware,
this.validationResult,
asyncMiddleware(this.validatePlanSlugExistance.bind(this)),
asyncMiddleware(this.paymentViaLicense.bind(this)),
);

View File

@@ -1,13 +0,0 @@
import { validationResult } from 'express-validator';
export default (req, res, next) => {
const validationErrors = validationResult(req);
if (!validationErrors.isEmpty()) {
return res.boom.badData(null, {
code: 'validation_error',
...validationErrors,
});
}
next();
}