From e9e4ddaee06f8a7b77b72582e1e0e71b08a45d40 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Sat, 12 Dec 2020 13:26:36 +0200 Subject: [PATCH] fix: auto-increment settings. --- server/src/api/index.ts | 8 +++--- server/src/interfaces/Metable.ts | 2 +- server/src/lib/Metable/MetableStoreDB.ts | 33 +++++++++++++++++------- server/src/subscribers/manualJournals.ts | 11 ++++---- server/src/subscribers/saleInvoices.ts | 2 +- server/src/utils/index.js | 7 ++++- 6 files changed, 43 insertions(+), 20 deletions(-) diff --git a/server/src/api/index.ts b/server/src/api/index.ts index c6312edfa..76b3edf72 100644 --- a/server/src/api/index.ts +++ b/server/src/api/index.ts @@ -49,7 +49,7 @@ export default () => { app.use('/invite', Container.get(InviteUsers).nonAuthRouter()); app.use('/licenses', Container.get(Licenses).router()); app.use('/subscription', Container.get(Subscription).router()); - app.use('/ping', Container.get(Ping).router()); + app.use('/organization', Container.get(Organization).router()); // - Settings routes. @@ -63,9 +63,9 @@ export default () => { settings.use(EnsureTenantIsInitialized); settings.use(SettingsMiddleware); - settings.use('/settings', Container.get(Settings).router()); + settings.use('/', Container.get(Settings).router()); - app.use('/', settings); + app.use('/settings', settings); // - Dashboard routes. // --------------------------- @@ -81,6 +81,8 @@ export default () => { dashboard.use(EnsureConfiguredMiddleware); dashboard.use(EnsureTenantIsSeeded); + dashboard.use('/ping', Container.get(Ping).router()); + dashboard.use('/users', Container.get(Users).router()); dashboard.use('/invite', Container.get(InviteUsers).authRouter()); dashboard.use('/currencies', Container.get(Currencies).router()); diff --git a/server/src/interfaces/Metable.ts b/server/src/interfaces/Metable.ts index b319cb3c6..8a16d3055 100644 --- a/server/src/interfaces/Metable.ts +++ b/server/src/interfaces/Metable.ts @@ -11,7 +11,7 @@ export interface IMetadata { export interface IMetaQuery { key: string, - group: string, + group?: string, }; export interface IMetableStore { diff --git a/server/src/lib/Metable/MetableStoreDB.ts b/server/src/lib/Metable/MetableStoreDB.ts index 8c3658ebe..243154302 100644 --- a/server/src/lib/Metable/MetableStoreDB.ts +++ b/server/src/lib/Metable/MetableStoreDB.ts @@ -4,6 +4,7 @@ import { IMetableStoreStorage, } from 'interfaces'; import MetableStore from './MetableStore'; +import { isBlank } from 'utils'; export default class MetableDBStore extends MetableStore implements IMetableStoreStorage{ model: Model; @@ -26,10 +27,29 @@ export default class MetableDBStore extends MetableStore implements IMetableStor this.model = null; this.extraQuery = (query, meta) => { - query.where('key', meta[this.KEY_COLUMN]); + const whereQuery = { + key: meta[this.KEY_COLUMN], + ...this.transfromMetaExtraColumns(meta), + }; + query.where(whereQuery); }; } + /** + * Transformes meta query. + * @param {IMetadata} meta + */ + private transfromMetaExtraColumns(meta: IMetadata) { + return this.extraColumns.reduce((obj, column) => { + const metaValue = meta[column]; + + if (!isBlank(metaValue)) { + obj[column] = metaValue; + } + return obj; + }, {}); + } + /** * Set model of this metadata collection. * @param {Object} model - @@ -116,14 +136,9 @@ export default class MetableDBStore extends MetableStore implements IMetableStor const insertData = { [this.KEY_COLUMN]: meta.key, [this.VALUE_COLUMN]: meta.value, - - ...this.extraColumns.reduce((obj, column) => { - if (typeof meta[column] !== 'undefined') { - obj[column] = meta[column]; - } - return obj; - }, {}), + ...this.transfromMetaExtraColumns(meta), }; + const insertOper = this.model.query() .insert(insertData) .then(() => { @@ -155,7 +170,7 @@ export default class MetableDBStore extends MetableStore implements IMetableStor * @param {String} valueType - * @return {String|Number|Boolean} - */ - static formatMetaValue(value: string|number|boolean, valueType: striung|false) { + static formatMetaValue(value: string|number|boolean, valueType: string|false) { let parsedValue: string|number|boolean; switch (valueType) { diff --git a/server/src/subscribers/manualJournals.ts b/server/src/subscribers/manualJournals.ts index da887010e..5010420ba 100644 --- a/server/src/subscribers/manualJournals.ts +++ b/server/src/subscribers/manualJournals.ts @@ -19,7 +19,7 @@ export class ManualJournalSubscriber { * @param {{ tenantId: number, manualJournal: IManualJournal }} */ @On(events.manualJournals.onCreated) - public async onManualJournalCreated({ tenantId, manualJournal }) { + public async handleWriteJournalEntries({ tenantId, manualJournal }) { const manualJournalsService = Container.get(ManualJournalsService); await manualJournalsService @@ -31,7 +31,7 @@ export class ManualJournalSubscriber { * @param {{ tenantId: number, manualJournal: IManualJournal }} */ @On(events.manualJournals.onEdited) - public async onManualJournalEdited({ tenantId, manualJournal }) { + public async handleRewriteJournalEntries({ tenantId, manualJournal }) { const manualJournalsService = Container.get(ManualJournalsService); await manualJournalsService @@ -43,7 +43,7 @@ export class ManualJournalSubscriber { * @param {{ tenantId: number, manualJournalId: number }} */ @On(events.manualJournals.onDeleted) - public async onManualJournalDeleted({ tenantId, manualJournalId, }) { + public async handleRevertJournalEntries({ tenantId, manualJournalId, }) { const manualJournalsService = Container.get(ManualJournalsService); await manualJournalsService @@ -55,9 +55,10 @@ export class ManualJournalSubscriber { */ @On(events.manualJournals.onCreated) public async handleJournalNextNumberIncrement({ tenantId }) { - await this.settingsService.incrementNextNumber(tenantId, { + const query = { group: 'manual_journals', key: 'next_number', - }); + }; + await this.settingsService.incrementNextNumber(tenantId, query); } } \ No newline at end of file diff --git a/server/src/subscribers/saleInvoices.ts b/server/src/subscribers/saleInvoices.ts index f783d1a67..17ace00bd 100644 --- a/server/src/subscribers/saleInvoices.ts +++ b/server/src/subscribers/saleInvoices.ts @@ -64,7 +64,7 @@ export default class SaleInvoiceSubscriber { public async handleInvoiceNextNumberIncrement({ tenantId, saleInvoiceId, saleInvoice }) { await this.settingsService.incrementNextNumber(tenantId, { key: 'next_number', - group: 'sales_invoices' + group: 'sales_invoices', }); } } \ No newline at end of file diff --git a/server/src/utils/index.js b/server/src/utils/index.js index 11728228a..40438b38f 100644 --- a/server/src/utils/index.js +++ b/server/src/utils/index.js @@ -223,6 +223,10 @@ const formatNumber = (balance, { noCents = false, divideOn1000 = false }) => { return formattedBalance + ''; }; +const isBlank = (value) => { + return _.isEmpty(value) && !_.isNumber(value) || _.isNaN(value); +} + export { hashPassword, origin, @@ -241,5 +245,6 @@ export { getDefinedOptions, entriesAmountDiff, convertEmptyStringToNull, - formatNumber + formatNumber, + isBlank };