From 2ab1087843c79d82c1037bc5f0893f3a848d7f54 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:23:33 +0300 Subject: [PATCH 01/93] Add filter schema ids --- workers/loc.api/data-validator/filter.schema.ids.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 workers/loc.api/data-validator/filter.schema.ids.js diff --git a/workers/loc.api/data-validator/filter.schema.ids.js b/workers/loc.api/data-validator/filter.schema.ids.js new file mode 100644 index 00000000..646ef8c3 --- /dev/null +++ b/workers/loc.api/data-validator/filter.schema.ids.js @@ -0,0 +1,6 @@ +'use strict' + +const FILTER_SCHEMA_NAMES = require('./filter.schema.names') +const { getSchemaIds } = require('./helpers') + +module.exports = getSchemaIds(FILTER_SCHEMA_NAMES) From 1215a4dbcbfa4f9b84a9b47b5cffbd2959059d04 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:23:55 +0300 Subject: [PATCH 02/93] Add filter schema names --- workers/loc.api/data-validator/filter.schema.names.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 workers/loc.api/data-validator/filter.schema.names.js diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js new file mode 100644 index 00000000..fc1fa594 --- /dev/null +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -0,0 +1,5 @@ +'use strict' + +module.exports = { + GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter' +} From c1161f4be17afb0c763c16e5aa6abd80f60f0f9d Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:25:19 +0300 Subject: [PATCH 03/93] Add filter models for filter schemas --- .../filter-schemas/helpers/filter-models.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js new file mode 100644 index 00000000..1af479f8 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -0,0 +1,26 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../../filter.schema.ids') + +module.exports = new Map([ + [ + FILTER_SCHEMA_IDS.GET_POSITIONS_HISTORY_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + status: { type: 'string' }, + amount: { type: 'number' }, + basePrice: { type: 'number' }, + closePrice: { type: 'number' }, + marginFunding: { type: 'number' }, + marginFundingType: { type: 'integer' }, + pl: { type: 'number' }, + plPerc: { type: 'number' }, + liquidationPrice: { type: 'number' }, + leverage: { type: 'number' }, + placeholder: { type: 'string' }, + mtsCreate: { type: 'integer' }, + mtsUpdate: { type: 'integer' } + } + ] +]) From 2ad525220fa232bdd557be52ecf01097d0511979 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:26:15 +0300 Subject: [PATCH 04/93] Add filter schema getter --- .../helpers/get-filter-schema.js | 104 ++++++++++++++++++ .../filter-schemas/helpers/index.js | 9 ++ 2 files changed, 113 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/helpers/get-filter-schema.js create mode 100644 workers/loc.api/data-validator/filter-schemas/helpers/index.js diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/get-filter-schema.js b/workers/loc.api/data-validator/filter-schemas/helpers/get-filter-schema.js new file mode 100644 index 00000000..b5359581 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/helpers/get-filter-schema.js @@ -0,0 +1,104 @@ +'use strict' + +const { + FilterParamsValidSchemaFindingError +} = require('../../../errors') +const FILTER_CONDITIONS = require('../../../helpers/filter.conditions') +const _filterModels = require('./filter-models') + +const getFilterModel = ( + filterSchemaId, + filterModels = _filterModels +) => { + if ( + !filterSchemaId || + typeof filterSchemaId !== 'string' || + !filterModels.has(filterSchemaId) + ) { + throw new FilterParamsValidSchemaFindingError() + } + + return filterModels.get(filterSchemaId) +} + +module.exports = ( + filterSchemaId, + filterModels = _filterModels +) => { + const model = getFilterModel(filterSchemaId, filterModels) + + if ( + !model || + typeof model !== 'object' || + Object.keys(model).length === 0 + ) { + throw new FilterParamsValidSchemaFindingError() + } + + const properties = { ...model } + const objSchema = { + type: 'object', + additionalProperties: false, + properties + } + const arrSchema = { + type: 'object', + additionalProperties: false, + properties: Object.entries(model).reduce((accum, [key, item]) => { + return { + ...accum, + [key]: { + type: 'array', + minItems: 1, + items: { ...item } + } + } + }, {}) + } + const fieldsArrSchema = { + type: 'array', + minItems: 1, + items: { + type: 'string', + enum: Object.keys(model) + } + } + + const baseProperties = { + [FILTER_CONDITIONS.GT]: objSchema, + [FILTER_CONDITIONS.GTE]: objSchema, + [FILTER_CONDITIONS.LT]: objSchema, + [FILTER_CONDITIONS.LTE]: objSchema, + [FILTER_CONDITIONS.NOT]: objSchema, + [FILTER_CONDITIONS.LIKE]: objSchema, + [FILTER_CONDITIONS.EQ]: objSchema, + [FILTER_CONDITIONS.NE]: objSchema, + [FILTER_CONDITIONS.IN]: arrSchema, + [FILTER_CONDITIONS.NIN]: arrSchema, + [FILTER_CONDITIONS.IS_NULL]: fieldsArrSchema, + [FILTER_CONDITIONS.IS_NOT_NULL]: fieldsArrSchema + } + const filterSchema = { + $id: filterSchemaId, + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + [FILTER_CONDITIONS.OR]: { + type: 'object', + additionalProperties: false, + properties: baseProperties + } + } + }, + { + type: 'object', + additionalProperties: false, + properties: baseProperties + } + ] + } + + return filterSchema +} diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/index.js b/workers/loc.api/data-validator/filter-schemas/helpers/index.js new file mode 100644 index 00000000..d0ebd35f --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/helpers/index.js @@ -0,0 +1,9 @@ +'use strict' + +const filterModels = require('./filter-models') +const getFilterSchema = require('./get-filter-schema') + +module.exports = { + filterModels, + getFilterSchema +} From 0ccc9bb9c0fd9b56f36ed98e80d179df39c79818 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:27:26 +0300 Subject: [PATCH 05/93] Add getPositionsHistory req filter schema --- .../filter-schemas/getPositionsHistoryReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getPositionsHistoryReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getPositionsHistoryReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getPositionsHistoryReqFilter.js new file mode 100644 index 00000000..76dba1db --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getPositionsHistoryReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_POSITIONS_HISTORY_REQ_FILTER +) From 296a534114d621b309826c646e9aaf30592f5071 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:28:36 +0300 Subject: [PATCH 06/93] Add entry point for filter schemas --- workers/loc.api/data-validator/filter-schemas/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/index.js diff --git a/workers/loc.api/data-validator/filter-schemas/index.js b/workers/loc.api/data-validator/filter-schemas/index.js new file mode 100644 index 00000000..ea0a894a --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/index.js @@ -0,0 +1,6 @@ +'use strict' + +const FILTER_SCHEMA_NAMES = require('../filter.schema.names') +const { requireSchemas } = require('../helpers') + +module.exports = requireSchemas(FILTER_SCHEMA_NAMES) From 10eeb4fd54e5027d5d348b01559dde9e43126c89 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 23 Jul 2025 14:30:00 +0300 Subject: [PATCH 07/93] Add filter schemas into data validator --- workers/loc.api/data-validator/index.js | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/index.js b/workers/loc.api/data-validator/index.js index 0793445c..2ee6ea52 100644 --- a/workers/loc.api/data-validator/index.js +++ b/workers/loc.api/data-validator/index.js @@ -17,11 +17,17 @@ const { const SCHEMA_DOMAIN = require('./schema.domain') const SCHEMA_NAMES = require('./schema.names') const SCHEMA_IDS = require('./schema.ids') +const FILTER_SCHEMA_NAMES = require('./filter.schema.names') +const FILTER_SCHEMA_IDS = require('./filter.schema.ids') const schemas = require('./schemas') +const filterSchemas = require('./filter-schemas') const ajv = new Ajv({ // Compile schema on initialization - schemas: Object.values(schemas), + schemas: [ + ...Object.values(schemas), + ...Object.values(filterSchemas) + ], // Strict mode strict: true, @@ -92,11 +98,31 @@ const validate = (args, schemaId, opts) => { throw new ArgsParamsError({ data: validate.errors }) } +const reinit = (args) => { + const { + schemaNames, + schemaIds, + filterSchemaNames, + filterSchemaIds, + schemas = [] + } = args ?? {} + + Object.assign(SCHEMA_NAMES, schemaNames) + Object.assign(SCHEMA_IDS, schemaIds) + Object.assign(FILTER_SCHEMA_NAMES, filterSchemaNames) + Object.assign(FILTER_SCHEMA_IDS, filterSchemaIds) + + addSchemas(schemas) +} + module.exports = { SCHEMA_DOMAIN, SCHEMA_NAMES, SCHEMA_IDS, + FILTER_SCHEMA_NAMES, + FILTER_SCHEMA_IDS, + reinit, addSchemas, validate } From 82126e8d75738a5c7b75f13424d65017da8bbe48 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:39:38 +0300 Subject: [PATCH 08/93] Add filter validation schema id getter --- .../helpers/get-filter-validation-schema-id.js | 14 ++++++++++++++ .../helpers/prepare-response/helpers/index.js | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js new file mode 100644 index 00000000..d2f897fb --- /dev/null +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -0,0 +1,14 @@ +'use strict' + +const { FILTER_SCHEMA_IDS } = require('../../../data-validator') + +const PARAMS_SCHEMAS_MAP = { + positionsHistory: FILTER_SCHEMA_IDS.GET_POSITIONS_HISTORY_REQ_FILTER +} + +module.exports = ( + method, + map = PARAMS_SCHEMAS_MAP +) => { + return map?.[method] +} diff --git a/workers/loc.api/helpers/prepare-response/helpers/index.js b/workers/loc.api/helpers/prepare-response/helpers/index.js index 0b2b812a..d63190d3 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/index.js +++ b/workers/loc.api/helpers/prepare-response/helpers/index.js @@ -3,6 +3,7 @@ const getParamsMap = require('./get-params-map') const getParamsSchemaName = require('./get-params-schema-name') const getValidationSchemaId = require('./get-validation-schema-id') +const getFilterValidationSchemaId = require('./get-filter-validation-schema-id') const omitPrivateModelFields = require('./omit-private-model-fields') const getBfxApiMethodName = require('./get-bfx-api-method-name') const getSymbolsForFiltering = require('./get-symbols-for-filtering') @@ -14,6 +15,7 @@ module.exports = { getParamsMap, getParamsSchemaName, getValidationSchemaId, + getFilterValidationSchemaId, omitPrivateModelFields, getBfxApiMethodName, getSymbolsForFiltering, From b51d6d016efb4ea0bf823ade78d21cead11fee15 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:41:07 +0300 Subject: [PATCH 09/93] Add filter api method names --- .../helpers/filter.api.method.names.js | 31 +++++++++++++++++++ workers/loc.api/helpers/index.js | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 workers/loc.api/helpers/filter.api.method.names.js diff --git a/workers/loc.api/helpers/filter.api.method.names.js b/workers/loc.api/helpers/filter.api.method.names.js new file mode 100644 index 00000000..04ba4e64 --- /dev/null +++ b/workers/loc.api/helpers/filter.api.method.names.js @@ -0,0 +1,31 @@ +'use strict' + +module.exports = { + /** + * It's an alias to POSITIONS_HISTORY model + */ + POSITIONS_HISTORY: 'positionsHistory', + POSITIONS_SNAPSHOT: 'positionsSnapshot', + POSITIONS_AUDIT: 'positionsAudit', + + /** + * It's an alias to TRADES model + */ + TRADES: 'trades', + ORDER_TRADES: 'orderTrades', + + LEDGERS: 'ledgers', + TICKERS_HISTORY: 'tickersHistory', + FUNDING_TRADES: 'fundingTrades', + PUBLIC_TRADES: 'publicTrades', + ORDERS: 'orders', + MOVEMENTS: 'movements', + FUNDING_OFFER_HISTORY: 'fundingOfferHistory', + FUNDING_LOAN_HISTORY: 'fundingLoanHistory', + FUNDING_CREDIT_HISTORY: 'fundingCreditHistory', + STATUS_MESSAGES: 'statusMessages', + LOGINS: 'logins', + CHANGE_LOGS: 'changeLogs', + CANDLES: 'candles', + PAY_INVOICE_LIST: 'payInvoiceList' +} diff --git a/workers/loc.api/helpers/index.js b/workers/loc.api/helpers/index.js index 5da352d6..1d394c3a 100644 --- a/workers/loc.api/helpers/index.js +++ b/workers/loc.api/helpers/index.js @@ -63,6 +63,7 @@ const filterModels = require('./filter-models') const checkFilterParams = require('./check-filter-params') const normalizeFilterParams = require('./normalize-filter-params') const FILTER_MODELS_NAMES = require('./filter.models.names') +const FILTER_API_METHOD_NAMES = require('./filter.api.method.names') const FILTER_CONDITIONS = require('./filter.conditions') const getDataFromApi = require('./get-data-from-api') const splitSymbolPairs = require('./split-symbol-pairs') @@ -118,6 +119,7 @@ module.exports = { checkFilterParams, normalizeFilterParams, FILTER_MODELS_NAMES, + FILTER_API_METHOD_NAMES, FILTER_CONDITIONS, getDataFromApi, parsePositionsAuditId, From 52e4288e81c36207661d17fa34104a67d4c5fac7 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:42:17 +0300 Subject: [PATCH 10/93] Use filter api method names with normalizer --- workers/loc.api/helpers/normalize-filter-params.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workers/loc.api/helpers/normalize-filter-params.js b/workers/loc.api/helpers/normalize-filter-params.js index 1a7fb9f1..451275e8 100644 --- a/workers/loc.api/helpers/normalize-filter-params.js +++ b/workers/loc.api/helpers/normalize-filter-params.js @@ -2,7 +2,7 @@ const { cloneDeep } = require('lib-js-util-base') -const FILTER_MODELS_NAMES = require('./filter.models.names') +const FILTER_API_METHOD_NAMES = require('./filter.api.method.names') const FILTER_CONDITIONS = require('./filter.conditions') const _filterConditionsNames = Object @@ -58,7 +58,7 @@ const _normalizeProp = ( } const _normalizers = { - [FILTER_MODELS_NAMES.PUBLIC_TRADES] (filter) { + [FILTER_API_METHOD_NAMES.PUBLIC_TRADES] (filter) { return _normalizeProp(filter, 'rate', (val) => { return typeof val === 'string' ? Number.parseFloat(val) From 6d9df53b2c90c791aacd469fe6f0fec66c620bff Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:43:25 +0300 Subject: [PATCH 11/93] Use filter models in main report service --- workers/loc.api/service.report.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/service.report.js b/workers/loc.api/service.report.js index 5ac9aae9..665a4762 100644 --- a/workers/loc.api/service.report.js +++ b/workers/loc.api/service.report.js @@ -7,10 +7,12 @@ const { parseLoginsExtraDataFields, accountCache, getTimezoneConf, - filterModels, parsePositionsAuditId, prepareSymbolResponse } = require('./helpers') +const { + filterModels +} = require('./data-validator/filter-schemas/helpers') const { omitPrivateModelFields } = require('./helpers/prepare-response/helpers') From d2864887cba72614236f72a206d998e49d9020dc Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:45:33 +0300 Subject: [PATCH 12/93] Use data validator for filters in prepare-response service --- workers/loc.api/helpers/prepare-response/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workers/loc.api/helpers/prepare-response/index.js b/workers/loc.api/helpers/prepare-response/index.js index d2dae441..2c6e6573 100644 --- a/workers/loc.api/helpers/prepare-response/index.js +++ b/workers/loc.api/helpers/prepare-response/index.js @@ -3,13 +3,13 @@ const { MinLimitParamError } = require('../../errors') const filterResponse = require('../filter-response') -const checkFilterParams = require('../check-filter-params') const normalizeFilterParams = require('../normalize-filter-params') const prepareSymbolResponse = require('./prepare-symbol-response') const { getValidationSchemaId, + getFilterValidationSchemaId, omitPrivateModelFields, getBfxApiMethodName, getSymbolsForFiltering, @@ -141,10 +141,14 @@ const prepareApiResponse = ( isNotMoreThanInnerMax: _isNotMoreThanInnerMax } = params ?? {} const schemaId = getValidationSchemaId(apiMethodName) + const filterSchemaId = getFilterValidationSchemaId(apiMethodName) await dataValidator.validate(reqArgs, schemaId) const args = normalizeFilterParams(apiMethodName, reqArgs) - checkFilterParams(apiMethodName, args) + await dataValidator.validate( + { params: args?.params?.filter }, + filterSchemaId + ) const symbols = getSymbolsForFiltering({ apiMethodName, symbPropName, args }) const isSyncRequest = args?.params?.isSyncRequest From cf837074d981fc239ad30d3940e57ae7cef8bcb0 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:46:52 +0300 Subject: [PATCH 13/93] Inject data validator into GenerateReportFile service --- workers/loc.api/di/app.deps.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/di/app.deps.js b/workers/loc.api/di/app.deps.js index eed0ba6d..91c69ec6 100644 --- a/workers/loc.api/di/app.deps.js +++ b/workers/loc.api/di/app.deps.js @@ -144,7 +144,8 @@ module.exports = ({ TYPES.ReportFileJobData, TYPES.RService, TYPES.RootPath, - TYPES.CONF + TYPES.CONF, + TYPES.DataValidator ] )) bind(TYPES.WriteDataToStream).toConstantValue( From 3d0f7637574d3aa31544f1eadc8ce50544c48271 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 24 Jul 2025 13:48:12 +0300 Subject: [PATCH 14/93] Use data validator for filters in GenerateReportFile service --- workers/loc.api/generate-report-file/index.js | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/workers/loc.api/generate-report-file/index.js b/workers/loc.api/generate-report-file/index.js index a6f11819..0cda2e22 100644 --- a/workers/loc.api/generate-report-file/index.js +++ b/workers/loc.api/generate-report-file/index.js @@ -1,10 +1,12 @@ 'use strict' const { - checkFilterParams, - FILTER_MODELS_NAMES, + FILTER_API_METHOD_NAMES, normalizeFilterParams } = require('../helpers') +const { + getFilterValidationSchemaId +} = require('../helpers/prepare-response/helpers') const { EmailSendingError, GrcPDFAvailabilityError @@ -62,7 +64,7 @@ const _getReportFileStoreStatus = async ({ return { isSendEmail: true } } -const _filterModelNameMap = Object.values(FILTER_MODELS_NAMES) +const _filterApiMethodNameMap = Object.values(FILTER_API_METHOD_NAMES) .reduce((map, name) => { const baseName = `${name[0].toUpperCase()}${name.slice(1)}` const key = `get${baseName}FileJobData` @@ -84,17 +86,17 @@ const _truncateFileNameEnding = (name) => { return `${cleanedName[0].toLowerCase()}${cleanedName.slice(1)}` } -const _getFilterModelNamesAndArgs = ( +const _getfilterApiMethodNamesAndArgs = ( name, reqArgs ) => { if (name !== 'getMultipleFileJobData') { - const filterModelName = _filterModelNameMap.get(name) + const filterApiMethodName = _filterApiMethodNameMap.get(name) const truncatedName = _truncateFileNameEnding(name) const args = normalizeFilterParams(truncatedName, reqArgs) return [{ - filterModelName, + filterApiMethodName, args }] } @@ -110,10 +112,10 @@ const _getFilterModelNamesAndArgs = ( const name = `${method}JobData` const truncatedName = _truncateFileNameEnding(method) const args = normalizeFilterParams(truncatedName, { params }) - const filterModelName = _filterModelNameMap.get(name) + const filterApiMethodName = _filterApiMethodNameMap.get(name) return { - filterModelName, + filterApiMethodName, args } }) @@ -125,7 +127,8 @@ module.exports = ( reportFileJobData, rService, rootPath, - conf + conf, + dataValidator ) => async ( name, args @@ -138,13 +141,17 @@ module.exports = ( rootPath, conf }) - const checkingDataArr = _getFilterModelNamesAndArgs( + const checkingDataArr = _getfilterApiMethodNamesAndArgs( name, args ) - for (const { filterModelName, args } of checkingDataArr) { - checkFilterParams(filterModelName, args) + for (const { filterApiMethodName, args } of checkingDataArr) { + const filterSchemaId = getFilterValidationSchemaId(filterApiMethodName) + await dataValidator.validate( + { params: args?.params?.filter }, + filterSchemaId + ) } const getter = reportFileJobData[name].bind(reportFileJobData) From f46e28907317d5c142bb2a1740b892c16f5b1b7f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 09:34:38 +0300 Subject: [PATCH 15/93] Fix filter schema import --- workers/loc.api/data-validator/filter-schemas/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter-schemas/index.js b/workers/loc.api/data-validator/filter-schemas/index.js index ea0a894a..4f82d9bc 100644 --- a/workers/loc.api/data-validator/filter-schemas/index.js +++ b/workers/loc.api/data-validator/filter-schemas/index.js @@ -1,6 +1,11 @@ 'use strict' +const path = require('node:path') + const FILTER_SCHEMA_NAMES = require('../filter.schema.names') const { requireSchemas } = require('../helpers') -module.exports = requireSchemas(FILTER_SCHEMA_NAMES) +module.exports = requireSchemas( + FILTER_SCHEMA_NAMES, + path.join(__dirname, '../filter-schemas') +) From 8119ceb273246ebddaba3dc91b78521b5ea9461a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 09:54:48 +0300 Subject: [PATCH 16/93] Use filter api method names with schema id getter --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index d2f897fb..79edc993 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -1,9 +1,11 @@ 'use strict' +const FILTER_API_METHOD_NAMES = require('../../filter.api.method.names') const { FILTER_SCHEMA_IDS } = require('../../../data-validator') const PARAMS_SCHEMAS_MAP = { - positionsHistory: FILTER_SCHEMA_IDS.GET_POSITIONS_HISTORY_REQ_FILTER + [FILTER_API_METHOD_NAMES.POSITIONS_HISTORY]: FILTER_SCHEMA_IDS + .GET_POSITIONS_HISTORY_REQ_FILTER } module.exports = ( From acfc968693280c453ffe20e2076a196f8d0af23b Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:12:31 +0300 Subject: [PATCH 17/93] Use pos hist validation schema for pos snapshot --- .../prepare-response/helpers/get-filter-validation-schema-id.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 79edc993..50951b7e 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -5,6 +5,8 @@ const { FILTER_SCHEMA_IDS } = require('../../../data-validator') const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.POSITIONS_HISTORY]: FILTER_SCHEMA_IDS + .GET_POSITIONS_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.POSITIONS_SNAPSHOT]: FILTER_SCHEMA_IDS .GET_POSITIONS_HISTORY_REQ_FILTER } From b6547b6be644d27b0e84d437793b3a217b4e3ddf Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:13:21 +0300 Subject: [PATCH 18/93] Use pos hist validation schema for pos audit --- .../prepare-response/helpers/get-filter-validation-schema-id.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 50951b7e..077f3af6 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -7,6 +7,8 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.POSITIONS_HISTORY]: FILTER_SCHEMA_IDS .GET_POSITIONS_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.POSITIONS_SNAPSHOT]: FILTER_SCHEMA_IDS + .GET_POSITIONS_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.POSITIONS_AUDIT]: FILTER_SCHEMA_IDS .GET_POSITIONS_HISTORY_REQ_FILTER } From c91c8d9033c41e36ea12c9e84afa4a2f9e5fb687 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:38:03 +0300 Subject: [PATCH 19/93] Add filter schema name for trades req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index fc1fa594..1c768342 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -1,5 +1,6 @@ 'use strict' module.exports = { - GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter' + GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter', + GET_TRADES_REQ_FILTER: 'getTradesReqFilter' } From 1a638861448ba9b2b4a53c092a2cfcef94c5ff1b Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:38:39 +0300 Subject: [PATCH 20/93] Add filter model for trades req filter --- .../filter-schemas/helpers/filter-models.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 1af479f8..025b9ad1 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -22,5 +22,21 @@ module.exports = new Map([ mtsCreate: { type: 'integer' }, mtsUpdate: { type: 'integer' } } + ], + [ + FILTER_SCHEMA_IDS.GET_TRADES_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + mtsCreate: { type: 'integer' }, + orderID: { type: 'integer' }, + execAmount: { type: 'number' }, + execPrice: { type: 'number' }, + orderType: { type: 'string' }, + orderPrice: { type: 'number' }, + maker: { type: 'integer' }, + fee: { type: 'number' }, + feeCurrency: { type: 'string' } + } ] ]) From 8077dc1b9ba09206a69708f8018c5a7af5de1ed1 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:39:05 +0300 Subject: [PATCH 21/93] Add filter schema for trades req filter --- .../data-validator/filter-schemas/getTradesReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getTradesReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getTradesReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getTradesReqFilter.js new file mode 100644 index 00000000..673da4bc --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getTradesReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_TRADES_REQ_FILTER +) From 0d282cee670a9c8da228c7a83738a34c54e66b4d Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:39:29 +0300 Subject: [PATCH 22/93] Use trades req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 077f3af6..46474740 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -9,7 +9,10 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.POSITIONS_SNAPSHOT]: FILTER_SCHEMA_IDS .GET_POSITIONS_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.POSITIONS_AUDIT]: FILTER_SCHEMA_IDS - .GET_POSITIONS_HISTORY_REQ_FILTER + .GET_POSITIONS_HISTORY_REQ_FILTER, + + [FILTER_API_METHOD_NAMES.TRADES]: FILTER_SCHEMA_IDS + .GET_TRADES_REQ_FILTER } module.exports = ( From 4cb419744eb2f06a8031930466288200b88097f8 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 25 Jul 2025 11:41:03 +0300 Subject: [PATCH 23/93] Use trades validation schema for order trades --- .../prepare-response/helpers/get-filter-validation-schema-id.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 46474740..91d0e955 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -12,6 +12,8 @@ const PARAMS_SCHEMAS_MAP = { .GET_POSITIONS_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.TRADES]: FILTER_SCHEMA_IDS + .GET_TRADES_REQ_FILTER, + [FILTER_API_METHOD_NAMES.ORDER_TRADES]: FILTER_SCHEMA_IDS .GET_TRADES_REQ_FILTER } From b012c085816263383848a19b1909d80f7c04386a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 09:55:01 +0300 Subject: [PATCH 24/93] Add filter schema name for ledgers req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 1c768342..1b45443d 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -2,5 +2,6 @@ module.exports = { GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter', - GET_TRADES_REQ_FILTER: 'getTradesReqFilter' + GET_TRADES_REQ_FILTER: 'getTradesReqFilter', + GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter' } From 2ff982e51ddcffbafe32c391fa1d8b76a3dff605 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 09:57:08 +0300 Subject: [PATCH 25/93] Add filter model for ledgers req filter --- .../filter-schemas/helpers/filter-models.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 025b9ad1..6d40d347 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -38,5 +38,19 @@ module.exports = new Map([ fee: { type: 'number' }, feeCurrency: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_LEDGERS_REQ_FILTER, + { + id: { type: 'integer' }, + currency: { type: 'string' }, + mts: { type: 'integer' }, + amount: { type: 'number' }, + amountUsd: { type: 'number' }, + balance: { type: 'number' }, + balanceUsd: { type: 'number' }, + description: { type: 'string' }, + wallet: { type: 'string' } + } ] ]) From 9f5e9309791a3f7625026260bd13f80b5bfb3f86 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 09:57:48 +0300 Subject: [PATCH 26/93] Add filter schema for ledgers req filter --- .../data-validator/filter-schemas/getLedgersReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getLedgersReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getLedgersReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getLedgersReqFilter.js new file mode 100644 index 00000000..4d2672b1 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getLedgersReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_LEDGERS_REQ_FILTER +) From b51ed2348410247b4dd381d69d8e2b71ea831a63 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 09:58:19 +0300 Subject: [PATCH 27/93] Use ledgers req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 91d0e955..7f7c16e2 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -14,7 +14,10 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.TRADES]: FILTER_SCHEMA_IDS .GET_TRADES_REQ_FILTER, [FILTER_API_METHOD_NAMES.ORDER_TRADES]: FILTER_SCHEMA_IDS - .GET_TRADES_REQ_FILTER + .GET_TRADES_REQ_FILTER, + + [FILTER_API_METHOD_NAMES.LEDGERS]: FILTER_SCHEMA_IDS + .GET_LEDGERS_REQ_FILTER } module.exports = ( From 76c02cbdddb06cbcfa0ab3c543d98f9af96ddfe8 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:41:56 +0300 Subject: [PATCH 28/93] Add filter schema name for tickers history req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 1b45443d..e4aa5124 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -3,5 +3,6 @@ module.exports = { GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter', GET_TRADES_REQ_FILTER: 'getTradesReqFilter', - GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter' + GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter', + GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter' } From 2e8a8d516d5c5a3632f2cfa3e5df674897dc4305 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:42:34 +0300 Subject: [PATCH 29/93] Add filter model for tickers history req filter --- .../filter-schemas/helpers/filter-models.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 6d40d347..1346b916 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -52,5 +52,15 @@ module.exports = new Map([ description: { type: 'string' }, wallet: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_TICKERS_HISTORY_REQ_FILTER, + { + symbol: { type: 'string' }, + bid: { type: 'number' }, + bidPeriod: { type: 'integer' }, + ask: { type: 'number' }, + mtsUpdate: { type: 'integer' } + } ] ]) From 88cefa5bcc5c2f73bdf0ab8608f4a21b83c59b46 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:43:06 +0300 Subject: [PATCH 30/93] Add filter schema for tickers history req filter --- .../filter-schemas/getTickersHistoryReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getTickersHistoryReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getTickersHistoryReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getTickersHistoryReqFilter.js new file mode 100644 index 00000000..eb6bdbb7 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getTickersHistoryReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_TICKERS_HISTORY_REQ_FILTER +) From 1f32d49a34e3434d78718d18759fa69664bb5ce3 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:43:25 +0300 Subject: [PATCH 31/93] Use tickers history req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 7f7c16e2..9ce56ee8 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -17,7 +17,9 @@ const PARAMS_SCHEMAS_MAP = { .GET_TRADES_REQ_FILTER, [FILTER_API_METHOD_NAMES.LEDGERS]: FILTER_SCHEMA_IDS - .GET_LEDGERS_REQ_FILTER + .GET_LEDGERS_REQ_FILTER, + [FILTER_API_METHOD_NAMES.TICKERS_HISTORY]: FILTER_SCHEMA_IDS + .GET_TICKERS_HISTORY_REQ_FILTER } module.exports = ( From 219b233959cf94a05f58378829833529eebb8ae3 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:50:50 +0300 Subject: [PATCH 32/93] Add filter schema name for funding trades req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index e4aa5124..0fab5927 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -4,5 +4,6 @@ module.exports = { GET_POSITIONS_HISTORY_REQ_FILTER: 'getPositionsHistoryReqFilter', GET_TRADES_REQ_FILTER: 'getTradesReqFilter', GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter', - GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter' + GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter', + GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter' } From 5e0b4b57e8681008dbc887246012533b9a19ee58 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:51:18 +0300 Subject: [PATCH 33/93] Add filter model for funding trades req filter --- .../filter-schemas/helpers/filter-models.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 1346b916..5007688f 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -62,5 +62,18 @@ module.exports = new Map([ ask: { type: 'number' }, mtsUpdate: { type: 'integer' } } + ], + [ + FILTER_SCHEMA_IDS.GET_FUNDING_TRADES_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + mtsCreate: { type: 'integer' }, + offerID: { type: 'integer' }, + amount: { type: 'number' }, + rate: { type: 'number' }, + period: { type: 'integer' }, + maker: { type: 'integer' } + } ] ]) From 20bf89963a9c8f72d334e31fefd90f9a72675f1a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:52:10 +0300 Subject: [PATCH 34/93] Add filter schema for funding trades req filter --- .../filter-schemas/getFundingTradesReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getFundingTradesReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getFundingTradesReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getFundingTradesReqFilter.js new file mode 100644 index 00000000..46ad9ce8 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getFundingTradesReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_FUNDING_TRADES_REQ_FILTER +) From d34bf90d3353516b87313fcf88c2b175b4c0b216 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 28 Jul 2025 10:52:31 +0300 Subject: [PATCH 35/93] Use funding trades req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 9ce56ee8..e7de0cd0 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -19,7 +19,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.LEDGERS]: FILTER_SCHEMA_IDS .GET_LEDGERS_REQ_FILTER, [FILTER_API_METHOD_NAMES.TICKERS_HISTORY]: FILTER_SCHEMA_IDS - .GET_TICKERS_HISTORY_REQ_FILTER + .GET_TICKERS_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.FUNDING_TRADES]: FILTER_SCHEMA_IDS + .GET_FUNDING_TRADES_REQ_FILTER } module.exports = ( From 88a504cf752b4093a10241782ccb62fdbd1ae198 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:34:13 +0300 Subject: [PATCH 36/93] Add filter schema name for public trades req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 0fab5927..7812bbcd 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -5,5 +5,6 @@ module.exports = { GET_TRADES_REQ_FILTER: 'getTradesReqFilter', GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter', GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter', - GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter' + GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter', + GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter' } From d492cb96cb05642799fa236c6f892e42cc213b6f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:34:44 +0300 Subject: [PATCH 37/93] Add filter model for public trades req filter --- .../filter-schemas/helpers/filter-models.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 5007688f..4305054d 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -75,5 +75,16 @@ module.exports = new Map([ period: { type: 'integer' }, maker: { type: 'integer' } } + ], + [ + FILTER_SCHEMA_IDS.GET_PUBLIC_TRADES_REQ_FILTER, + { + id: { type: 'integer' }, + mts: { type: 'integer' }, + rate: { type: 'number' }, + period: { type: 'integer' }, + amount: { type: 'number' }, + price: { type: 'number' } + } ] ]) From 89223f21dcadd75bdff6a8cf8e538ccbfc497ca2 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:35:14 +0300 Subject: [PATCH 38/93] Add filter schema for public trades req filter --- .../filter-schemas/getPublicTradesReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getPublicTradesReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getPublicTradesReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getPublicTradesReqFilter.js new file mode 100644 index 00000000..1616c607 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getPublicTradesReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_PUBLIC_TRADES_REQ_FILTER +) From a2e0a2f96ca4c96f9eba3cfac8ad9bee857da0f7 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:35:39 +0300 Subject: [PATCH 39/93] Use public trades req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index e7de0cd0..ffa812c3 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -21,7 +21,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.TICKERS_HISTORY]: FILTER_SCHEMA_IDS .GET_TICKERS_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.FUNDING_TRADES]: FILTER_SCHEMA_IDS - .GET_FUNDING_TRADES_REQ_FILTER + .GET_FUNDING_TRADES_REQ_FILTER, + [FILTER_API_METHOD_NAMES.PUBLIC_TRADES]: FILTER_SCHEMA_IDS + .GET_PUBLIC_TRADES_REQ_FILTER } module.exports = ( From cb4326b31e2ad7ccc86d716bb1aa1bae8f4bb9ae Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:41:08 +0300 Subject: [PATCH 40/93] Add filter schema name for orders req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 7812bbcd..541e14e0 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -6,5 +6,6 @@ module.exports = { GET_LEDGERS_REQ_FILTER: 'getLedgersReqFilter', GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter', GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter', - GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter' + GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter', + GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter' } From ff52639a7b38b880d9f22e4ac83c074d717b2f97 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:41:27 +0300 Subject: [PATCH 41/93] Add filter model for orders req filter --- .../filter-schemas/helpers/filter-models.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 4305054d..55984c31 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -86,5 +86,29 @@ module.exports = new Map([ amount: { type: 'number' }, price: { type: 'number' } } + ], + [ + FILTER_SCHEMA_IDS.GET_ORDERS_REQ_FILTER, + { + id: { type: 'integer' }, + gid: { type: 'integer' }, + cid: { type: 'integer' }, + symbol: { type: 'string' }, + mtsCreate: { type: 'integer' }, + mtsUpdate: { type: 'integer' }, + amount: { type: 'number' }, + amountOrig: { type: 'number' }, + type: { type: 'string' }, + typePrev: { type: 'string' }, + flags: { type: 'integer' }, + status: { type: 'string' }, + price: { type: 'number' }, + priceAvg: { type: 'number' }, + priceTrailing: { type: 'number' }, + priceAuxLimit: { type: 'number' }, + notify: { type: 'integer' }, + placedId: { type: 'integer' }, + amountExecuted: { type: 'number' } + } ] ]) From f3820bf09461c64b9e4cf373a155436c5f063627 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:41:47 +0300 Subject: [PATCH 42/93] Add filter schema for orders req filter --- .../data-validator/filter-schemas/getOrdersReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getOrdersReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getOrdersReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getOrdersReqFilter.js new file mode 100644 index 00000000..53b550e9 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getOrdersReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_ORDERS_REQ_FILTER +) From 8729d275712d0ef9b0ef2b2a86d00b1fadfc082c Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:42:18 +0300 Subject: [PATCH 43/93] Use orders req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index ffa812c3..f894e903 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -23,7 +23,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.FUNDING_TRADES]: FILTER_SCHEMA_IDS .GET_FUNDING_TRADES_REQ_FILTER, [FILTER_API_METHOD_NAMES.PUBLIC_TRADES]: FILTER_SCHEMA_IDS - .GET_PUBLIC_TRADES_REQ_FILTER + .GET_PUBLIC_TRADES_REQ_FILTER, + [FILTER_API_METHOD_NAMES.ORDERS]: FILTER_SCHEMA_IDS + .GET_ORDERS_REQ_FILTER } module.exports = ( From 22dfd173d7381c5d42e7746c01adcc90dff033bc Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:48:05 +0300 Subject: [PATCH 44/93] Add filter schema name for movements req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 541e14e0..97c5dc20 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -7,5 +7,6 @@ module.exports = { GET_TICKERS_HISTORY_REQ_FILTER: 'getTickersHistoryReqFilter', GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter', GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter', - GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter' + GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', + GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter' } From 8c96ed85a0d0d396523b384c4b57457e83fff282 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:48:29 +0300 Subject: [PATCH 45/93] Add filter model for movements req filter --- .../filter-schemas/helpers/filter-models.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 55984c31..1231fdb6 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -110,5 +110,22 @@ module.exports = new Map([ placedId: { type: 'integer' }, amountExecuted: { type: 'number' } } + ], + [ + FILTER_SCHEMA_IDS.GET_MOVEMENTS_REQ_FILTER, + { + id: { type: 'integer' }, + currency: { type: 'string' }, + currencyName: { type: 'string' }, + mtsStarted: { type: 'integer' }, + mtsUpdated: { type: 'integer' }, + status: { type: 'string' }, + amount: { type: 'number' }, + amountUsd: { type: 'number' }, + fees: { type: 'number' }, + destinationAddress: { type: 'string' }, + transactionId: { type: 'string' }, + note: { type: 'string' } + } ] ]) From 75b1d813efddb5a457a15a3ce19c7ec36bfd5211 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:48:50 +0300 Subject: [PATCH 46/93] Add filter schema for movements req filter --- .../filter-schemas/getMovementsReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getMovementsReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getMovementsReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getMovementsReqFilter.js new file mode 100644 index 00000000..babcc835 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getMovementsReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_MOVEMENTS_REQ_FILTER +) From 12e420f0d50b6b0df6a4cc57851c1db10bd41985 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:49:13 +0300 Subject: [PATCH 47/93] Use movements req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index f894e903..b406b759 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -25,7 +25,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.PUBLIC_TRADES]: FILTER_SCHEMA_IDS .GET_PUBLIC_TRADES_REQ_FILTER, [FILTER_API_METHOD_NAMES.ORDERS]: FILTER_SCHEMA_IDS - .GET_ORDERS_REQ_FILTER + .GET_ORDERS_REQ_FILTER, + [FILTER_API_METHOD_NAMES.MOVEMENTS]: FILTER_SCHEMA_IDS + .GET_MOVEMENTS_REQ_FILTER } module.exports = ( From 979465db1f1cadd0ac9e499d0ec8d656f52294f4 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:54:16 +0300 Subject: [PATCH 48/93] Add filter schema name for funding offer history req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 97c5dc20..f8448127 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -8,5 +8,6 @@ module.exports = { GET_FUNDING_TRADES_REQ_FILTER: 'getFundingTradesReqFilter', GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter', GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', - GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter' + GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', + GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter' } From ca88b0b51fa860a824b22ef9764a7a1c1a321121 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:54:35 +0300 Subject: [PATCH 49/93] Add filter model for funding offer history req filter --- .../filter-schemas/helpers/filter-models.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 1231fdb6..95b65906 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -127,5 +127,26 @@ module.exports = new Map([ transactionId: { type: 'string' }, note: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_FUNDING_OFFER_HISTORY_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + mtsCreate: { type: 'integer' }, + mtsUpdate: { type: 'integer' }, + amount: { type: 'number' }, + amountOrig: { type: 'number' }, + type: { type: 'string' }, + flags: { type: 'string' }, + status: { type: 'string' }, + rate: { type: 'string' }, + period: { type: 'integer' }, + notify: { type: 'integer' }, + hidden: { type: 'integer' }, + renew: { type: 'integer' }, + rateReal: { type: 'integer' }, + amountExecuted: { type: 'number' } + } ] ]) From ae71fb17a34ac4256650b8a20ffa0f3206f7ec12 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:54:57 +0300 Subject: [PATCH 50/93] Add filter schema for funding offer history req filter --- .../filter-schemas/getFundingOfferHistoryReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getFundingOfferHistoryReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getFundingOfferHistoryReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getFundingOfferHistoryReqFilter.js new file mode 100644 index 00000000..48a386a5 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getFundingOfferHistoryReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_FUNDING_OFFER_HISTORY_REQ_FILTER +) From 5223aeeba128772145ff2793a9cde7830bca498a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 29 Jul 2025 11:55:45 +0300 Subject: [PATCH 51/93] Use funding offer history req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index b406b759..0a939055 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -27,7 +27,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.ORDERS]: FILTER_SCHEMA_IDS .GET_ORDERS_REQ_FILTER, [FILTER_API_METHOD_NAMES.MOVEMENTS]: FILTER_SCHEMA_IDS - .GET_MOVEMENTS_REQ_FILTER + .GET_MOVEMENTS_REQ_FILTER, + [FILTER_API_METHOD_NAMES.FUNDING_OFFER_HISTORY]: FILTER_SCHEMA_IDS + .GET_FUNDING_OFFER_HISTORY_REQ_FILTER } module.exports = ( From 48e83bdb9e9990cb7e013b21f30a6afcaa591a62 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 10:55:02 +0300 Subject: [PATCH 52/93] Add filter schema name for funding loan history req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index f8448127..236b1a7e 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -9,5 +9,6 @@ module.exports = { GET_PUBLIC_TRADES_REQ_FILTER: 'getPublicTradesReqFilter', GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', - GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter' + GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', + GET_FUNDING_LOAN_HISTORY_REQ_FILTER: 'getFundingLoanHistoryReqFilter' } From df8cb1de4959f1209efb446d0fc42bede2119113 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 10:55:24 +0300 Subject: [PATCH 53/93] Add filter model for funding loan history req filter --- .../filter-schemas/helpers/filter-models.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 95b65906..0b6eea79 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -148,5 +148,27 @@ module.exports = new Map([ rateReal: { type: 'integer' }, amountExecuted: { type: 'number' } } + ], + [ + FILTER_SCHEMA_IDS.GET_FUNDING_LOAN_HISTORY_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + side: { type: 'integer' }, + mtsCreate: { type: 'integer' }, + mtsUpdate: { type: 'integer' }, + amount: { type: 'number' }, + flags: { type: 'string' }, + status: { type: 'string' }, + rate: { type: 'string' }, + period: { type: 'integer' }, + mtsOpening: { type: 'integer' }, + mtsLastPayout: { type: 'integer' }, + notify: { type: 'integer' }, + hidden: { type: 'integer' }, + renew: { type: 'integer' }, + rateReal: { type: 'integer' }, + noClose: { type: 'integer' } + } ] ]) From 711336f0e35dbe2de30996fc3722a56bd403af5c Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 10:55:57 +0300 Subject: [PATCH 54/93] Add filter schema for funding loan history req filter --- .../filter-schemas/getFundingLoanHistoryReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getFundingLoanHistoryReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getFundingLoanHistoryReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getFundingLoanHistoryReqFilter.js new file mode 100644 index 00000000..89706043 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getFundingLoanHistoryReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_FUNDING_LOAN_HISTORY_REQ_FILTER +) From 8efd4aa75dc21eff34ebe42ad424fcebed0788c6 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 10:56:43 +0300 Subject: [PATCH 55/93] Use funding loan history req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 0a939055..e6ec55b2 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -29,7 +29,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.MOVEMENTS]: FILTER_SCHEMA_IDS .GET_MOVEMENTS_REQ_FILTER, [FILTER_API_METHOD_NAMES.FUNDING_OFFER_HISTORY]: FILTER_SCHEMA_IDS - .GET_FUNDING_OFFER_HISTORY_REQ_FILTER + .GET_FUNDING_OFFER_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.FUNDING_LOAN_HISTORY]: FILTER_SCHEMA_IDS + .GET_FUNDING_LOAN_HISTORY_REQ_FILTER } module.exports = ( From 6cda1184ef6325bfaa410d759cfa74164f4619e8 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:10:28 +0300 Subject: [PATCH 56/93] Add filter schema name for funding credit history req filter --- workers/loc.api/data-validator/filter.schema.names.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 236b1a7e..6c136568 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -10,5 +10,5 @@ module.exports = { GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', - GET_FUNDING_LOAN_HISTORY_REQ_FILTER: 'getFundingLoanHistoryReqFilter' + GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter' } From 6d00af1a4c9a5dc2771ad2b03ee3e1c0736eb052 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:10:59 +0300 Subject: [PATCH 57/93] Add filter model for funding credit history req filter --- .../filter-schemas/helpers/filter-models.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 0b6eea79..2ec37d87 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -170,5 +170,28 @@ module.exports = new Map([ rateReal: { type: 'integer' }, noClose: { type: 'integer' } } + ], + [ + FILTER_SCHEMA_IDS.GET_FUNDING_CREDIT_HISTORY_REQ_FILTER, + { + id: { type: 'integer' }, + symbol: { type: 'string' }, + side: { type: 'integer' }, + mtsCreate: { type: 'integer' }, + mtsUpdate: { type: 'integer' }, + amount: { type: 'number' }, + flags: { type: 'string' }, + status: { type: 'string' }, + rate: { type: 'string' }, + period: { type: 'integer' }, + mtsOpening: { type: 'integer' }, + mtsLastPayout: { type: 'integer' }, + notify: { type: 'integer' }, + hidden: { type: 'integer' }, + renew: { type: 'integer' }, + rateReal: { type: 'integer' }, + noClose: { type: 'integer' }, + positionPair: { type: 'string' } + } ] ]) From 4f939c6721c58295f4ef12c05b49f9e78efd0d0d Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:11:25 +0300 Subject: [PATCH 58/93] Add filter schema for funding credit history req filter --- .../filter-schemas/getFundingCreditHistoryReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getFundingCreditHistoryReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getFundingCreditHistoryReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getFundingCreditHistoryReqFilter.js new file mode 100644 index 00000000..83c23235 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getFundingCreditHistoryReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_FUNDING_CREDIT_HISTORY_REQ_FILTER +) From 0bc918455d9f3bde0945020c29e3559729a62173 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:11:56 +0300 Subject: [PATCH 59/93] Use funding credit history req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index e6ec55b2..15be4ca9 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -31,7 +31,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.FUNDING_OFFER_HISTORY]: FILTER_SCHEMA_IDS .GET_FUNDING_OFFER_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.FUNDING_LOAN_HISTORY]: FILTER_SCHEMA_IDS - .GET_FUNDING_LOAN_HISTORY_REQ_FILTER + .GET_FUNDING_LOAN_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.FUNDING_CREDIT_HISTORY]: FILTER_SCHEMA_IDS + .GET_FUNDING_CREDIT_HISTORY_REQ_FILTER } module.exports = ( From 94c5149d54d167400a0b1f76938ce65431c627af Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:19:51 +0300 Subject: [PATCH 60/93] Add filter schema name for status messages req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 6c136568..d1d1ef7d 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -10,5 +10,6 @@ module.exports = { GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', - GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter' + GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter', + GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter' } From cd9c838dba614e9f76bccc7b1f75e1997fe48677 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:20:36 +0300 Subject: [PATCH 61/93] Add filter model for status messages req filter --- .../filter-schemas/helpers/filter-models.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 2ec37d87..e8267d9b 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -193,5 +193,19 @@ module.exports = new Map([ noClose: { type: 'integer' }, positionPair: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_STATUS_MESSAGES_REQ_FILTER, + { + key: { type: 'string' }, + timestamp: { type: 'integer' }, + price: { type: 'number' }, + priceSpot: { type: 'number' }, + fundBal: { type: 'number' }, + fundingAccrued: { type: 'number' }, + fundingStep: { type: 'number' }, + clampMin: { type: 'number' }, + clampMax: { type: 'number' } + } ] ]) From 86ab059e724a5f7784660ab2a86382161dceb47f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:21:02 +0300 Subject: [PATCH 62/93] Add filter schema for status messages req filter --- .../filter-schemas/getStatusMessagesReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getStatusMessagesReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getStatusMessagesReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getStatusMessagesReqFilter.js new file mode 100644 index 00000000..23a670f5 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getStatusMessagesReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_STATUS_MESSAGES_REQ_FILTER +) From ac45ba76660be29bff076c16e70d255edad8e279 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 30 Jul 2025 11:21:21 +0300 Subject: [PATCH 63/93] Use status messages req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 15be4ca9..61767fa2 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -33,7 +33,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.FUNDING_LOAN_HISTORY]: FILTER_SCHEMA_IDS .GET_FUNDING_LOAN_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.FUNDING_CREDIT_HISTORY]: FILTER_SCHEMA_IDS - .GET_FUNDING_CREDIT_HISTORY_REQ_FILTER + .GET_FUNDING_CREDIT_HISTORY_REQ_FILTER, + [FILTER_API_METHOD_NAMES.STATUS_MESSAGES]: FILTER_SCHEMA_IDS + .GET_STATUS_MESSAGES_REQ_FILTER } module.exports = ( From ad93d83814995849c2e802ef66c6394578455304 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 11:49:03 +0300 Subject: [PATCH 64/93] Add filter schema name for logins req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index d1d1ef7d..19be3618 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -11,5 +11,6 @@ module.exports = { GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter', - GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter' + GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter', + GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter' } From 2fd577cf40c4b18aee611af724b77af2f27bcc5b Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 11:50:03 +0300 Subject: [PATCH 65/93] Add filter model for logins req filter --- .../filter-schemas/helpers/filter-models.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index e8267d9b..f0e36928 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -207,5 +207,13 @@ module.exports = new Map([ clampMin: { type: 'number' }, clampMax: { type: 'number' } } + ], + [ + FILTER_SCHEMA_IDS.GET_LOGINS_REQ_FILTER, + { + id: { type: 'integer' }, + time: { type: 'integer' }, + ip: { type: 'string' } + } ] ]) From a6012c741f6230999289290040860fbf118ec2cb Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 11:50:36 +0300 Subject: [PATCH 66/93] Add filter schema for logins req filter --- .../data-validator/filter-schemas/getLoginsReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getLoginsReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getLoginsReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getLoginsReqFilter.js new file mode 100644 index 00000000..08620cef --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getLoginsReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_LOGINS_REQ_FILTER +) From 9d45062b41f81cc809bb45fc24828836312e2196 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 11:51:02 +0300 Subject: [PATCH 67/93] Use logins req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 61767fa2..557ae9a4 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -35,7 +35,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.FUNDING_CREDIT_HISTORY]: FILTER_SCHEMA_IDS .GET_FUNDING_CREDIT_HISTORY_REQ_FILTER, [FILTER_API_METHOD_NAMES.STATUS_MESSAGES]: FILTER_SCHEMA_IDS - .GET_STATUS_MESSAGES_REQ_FILTER + .GET_STATUS_MESSAGES_REQ_FILTER, + [FILTER_API_METHOD_NAMES.LOGINS]: FILTER_SCHEMA_IDS + .GET_LOGINS_REQ_FILTER } module.exports = ( From 43b1726e0e1c92cd4abd103a2af83dccf6065e1f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 12:00:02 +0300 Subject: [PATCH 68/93] Add filter schema name for change logs req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 19be3618..01d69ffc 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -12,5 +12,6 @@ module.exports = { GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter', GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter', - GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter' + GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter', + GET_CHANGE_LOGS_REQ_FILTER: 'getChangeLogsReqFilter' } From bd90c27451c9a8476c24684c2795a3bf02d7f14c Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 12:00:32 +0300 Subject: [PATCH 69/93] Add filter model for change logs req filter --- .../filter-schemas/helpers/filter-models.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index f0e36928..06b84fe8 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -215,5 +215,14 @@ module.exports = new Map([ time: { type: 'integer' }, ip: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_CHANGE_LOGS_REQ_FILTER, + { + mtsCreate: { type: 'integer' }, + log: { type: 'string' }, + ip: { type: 'string' }, + userAgent: { type: 'string' } + } ] ]) From 0e2c8d8eb6dc4a1037c7a92c02fff5debfaa3219 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 12:00:54 +0300 Subject: [PATCH 70/93] Add filter schema for change logs req filter --- .../filter-schemas/getChangeLogsReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getChangeLogsReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getChangeLogsReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getChangeLogsReqFilter.js new file mode 100644 index 00000000..44bf215c --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getChangeLogsReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_CHANGE_LOGS_REQ_FILTER +) From 9046dbfb792e147964465c51f338254ad8dd5dd8 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 31 Jul 2025 12:01:23 +0300 Subject: [PATCH 71/93] Use change logs req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 557ae9a4..c1ed5e4d 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -37,7 +37,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.STATUS_MESSAGES]: FILTER_SCHEMA_IDS .GET_STATUS_MESSAGES_REQ_FILTER, [FILTER_API_METHOD_NAMES.LOGINS]: FILTER_SCHEMA_IDS - .GET_LOGINS_REQ_FILTER + .GET_LOGINS_REQ_FILTER, + [FILTER_API_METHOD_NAMES.CHANGE_LOGS]: FILTER_SCHEMA_IDS + .GET_CHANGE_LOGS_REQ_FILTER } module.exports = ( From 8aa6cc74543814f7f3024cd3756f38fbb6099b5f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 10:32:35 +0300 Subject: [PATCH 72/93] Add filter schema name for candles req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 01d69ffc..0ae4be45 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -13,5 +13,6 @@ module.exports = { GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter', GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter', GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter', - GET_CHANGE_LOGS_REQ_FILTER: 'getChangeLogsReqFilter' + GET_CHANGE_LOGS_REQ_FILTER: 'getChangeLogsReqFilter', + GET_CANDLES_REQ_FILTER: 'getCandlesReqFilter' } From 945b3bf828fd5c8064644ff95750ed3a4139b946 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 10:34:03 +0300 Subject: [PATCH 73/93] Add filter model for candles req filter --- .../filter-schemas/helpers/filter-models.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 06b84fe8..35ac9a80 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -224,5 +224,16 @@ module.exports = new Map([ ip: { type: 'string' }, userAgent: { type: 'string' } } + ], + [ + FILTER_SCHEMA_IDS.GET_CANDLES_REQ_FILTER, + { + mts: { type: 'integer' }, + open: { type: 'number' }, + close: { type: 'number' }, + high: { type: 'number' }, + low: { type: 'number' }, + volume: { type: 'number' } + } ] ]) From 75746b580cc8c880f5b2e4a947c5ecd863e266f8 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 10:34:25 +0300 Subject: [PATCH 74/93] Add filter schema for candles req filter --- .../data-validator/filter-schemas/getCandlesReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getCandlesReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getCandlesReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getCandlesReqFilter.js new file mode 100644 index 00000000..d79415e3 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getCandlesReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_CANDLES_REQ_FILTER +) From a0e7eb9947cbe053062d2388d9e853865ae32996 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 10:34:49 +0300 Subject: [PATCH 75/93] Use candles req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index c1ed5e4d..09b87d5c 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -39,7 +39,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.LOGINS]: FILTER_SCHEMA_IDS .GET_LOGINS_REQ_FILTER, [FILTER_API_METHOD_NAMES.CHANGE_LOGS]: FILTER_SCHEMA_IDS - .GET_CHANGE_LOGS_REQ_FILTER + .GET_CHANGE_LOGS_REQ_FILTER, + [FILTER_API_METHOD_NAMES.CANDLES]: FILTER_SCHEMA_IDS + .GET_CANDLES_REQ_FILTER } module.exports = ( From 867eead5be2634bc938bb9870bc5a652b1e4eb2b Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 11:01:58 +0300 Subject: [PATCH 76/93] Add filter schema name for pay invoice list req filter --- workers/loc.api/data-validator/filter.schema.names.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index 0ae4be45..a44f3b3f 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -14,5 +14,6 @@ module.exports = { GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter', GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter', GET_CHANGE_LOGS_REQ_FILTER: 'getChangeLogsReqFilter', - GET_CANDLES_REQ_FILTER: 'getCandlesReqFilter' + GET_CANDLES_REQ_FILTER: 'getCandlesReqFilter', + GET_PAY_INVOICE_LIST_REQ_FILTER: 'getPayInvoiceListReqFilter' } From 5ba571db8e04831ef809c914613a56cc1bdc1dbd Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 11:04:01 +0300 Subject: [PATCH 77/93] Add filter model for pay invoice list req filter --- .../filter-schemas/helpers/filter-models.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js index 35ac9a80..ca03c41d 100644 --- a/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js +++ b/workers/loc.api/data-validator/filter-schemas/helpers/filter-models.js @@ -235,5 +235,20 @@ module.exports = new Map([ low: { type: 'number' }, volume: { type: 'number' } } + ], + [ + FILTER_SCHEMA_IDS.GET_PAY_INVOICE_LIST_REQ_FILTER, + { + id: { type: 'string' }, + t: { type: 'integer' }, + duration: { type: 'number' }, + amount: { type: 'number' }, + currency: { type: 'string' }, + orderId: { type: 'string' }, + webhook: { type: 'string' }, + redirectUrl: { type: 'string' }, + status: { type: 'string' }, + merchantName: { type: 'string' } + } ] ]) From 277bf3765f64edc024f9a929cf42dbe65ee251a4 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 11:05:07 +0300 Subject: [PATCH 78/93] Add filter schema for pay invoice list req filter --- .../filter-schemas/getPayInvoiceListReqFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workers/loc.api/data-validator/filter-schemas/getPayInvoiceListReqFilter.js diff --git a/workers/loc.api/data-validator/filter-schemas/getPayInvoiceListReqFilter.js b/workers/loc.api/data-validator/filter-schemas/getPayInvoiceListReqFilter.js new file mode 100644 index 00000000..e1c39b40 --- /dev/null +++ b/workers/loc.api/data-validator/filter-schemas/getPayInvoiceListReqFilter.js @@ -0,0 +1,8 @@ +'use strict' + +const FILTER_SCHEMA_IDS = require('../filter.schema.ids') +const { getFilterSchema } = require('./helpers') + +module.exports = getFilterSchema( + FILTER_SCHEMA_IDS.GET_PAY_INVOICE_LIST_REQ_FILTER +) From 964197ccd0ac7383d74d28d0d7bad6d3b848e163 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 11:05:30 +0300 Subject: [PATCH 79/93] Use pay invoice list req filter schema in prepare-response service --- .../helpers/get-filter-validation-schema-id.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js index 09b87d5c..c87d0ac3 100644 --- a/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js +++ b/workers/loc.api/helpers/prepare-response/helpers/get-filter-validation-schema-id.js @@ -41,7 +41,9 @@ const PARAMS_SCHEMAS_MAP = { [FILTER_API_METHOD_NAMES.CHANGE_LOGS]: FILTER_SCHEMA_IDS .GET_CHANGE_LOGS_REQ_FILTER, [FILTER_API_METHOD_NAMES.CANDLES]: FILTER_SCHEMA_IDS - .GET_CANDLES_REQ_FILTER + .GET_CANDLES_REQ_FILTER, + [FILTER_API_METHOD_NAMES.PAY_INVOICE_LIST]: FILTER_SCHEMA_IDS + .GET_PAY_INVOICE_LIST_REQ_FILTER } module.exports = ( From 03eb28f929b97eb3a231e530cc37e1a0a52a640f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 1 Aug 2025 11:07:21 +0300 Subject: [PATCH 80/93] Add filter schema name for funding loan history req filter --- workers/loc.api/data-validator/filter.schema.names.js | 1 + 1 file changed, 1 insertion(+) diff --git a/workers/loc.api/data-validator/filter.schema.names.js b/workers/loc.api/data-validator/filter.schema.names.js index a44f3b3f..46bb8756 100644 --- a/workers/loc.api/data-validator/filter.schema.names.js +++ b/workers/loc.api/data-validator/filter.schema.names.js @@ -10,6 +10,7 @@ module.exports = { GET_ORDERS_REQ_FILTER: 'getOrdersReqFilter', GET_MOVEMENTS_REQ_FILTER: 'getMovementsReqFilter', GET_FUNDING_OFFER_HISTORY_REQ_FILTER: 'getFundingOfferHistoryReqFilter', + GET_FUNDING_LOAN_HISTORY_REQ_FILTER: 'getFundingLoanHistoryReqFilter', GET_FUNDING_CREDIT_HISTORY_REQ_FILTER: 'getFundingCreditHistoryReqFilter', GET_STATUS_MESSAGES_REQ_FILTER: 'getStatusMessagesReqFilter', GET_LOGINS_REQ_FILTER: 'getLoginsReqFilter', From 9dcf73772f9185bfa54af8cf072ae3c7ba77ec8e Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Tue, 5 Aug 2025 14:19:32 +0300 Subject: [PATCH 81/93] Clean up outdated check-filter-params logic --- .../loc.api/helpers/check-filter-params.js | 144 ---------- workers/loc.api/helpers/filter-models.js | 254 ------------------ .../loc.api/helpers/filter.models.names.js | 31 --- workers/loc.api/helpers/index.js | 6 - 4 files changed, 435 deletions(-) delete mode 100644 workers/loc.api/helpers/check-filter-params.js delete mode 100644 workers/loc.api/helpers/filter-models.js delete mode 100644 workers/loc.api/helpers/filter.models.names.js diff --git a/workers/loc.api/helpers/check-filter-params.js b/workers/loc.api/helpers/check-filter-params.js deleted file mode 100644 index ee82e58b..00000000 --- a/workers/loc.api/helpers/check-filter-params.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict' - -const Ajv = require('ajv') - -const { - FilterParamsValidSchemaFindingError, - ArgsParamsFilterError -} = require('../errors') -const _filterModels = require('./filter-models') -const FILTER_MODELS_NAMES = require('./filter.models.names') -const FILTER_CONDITIONS = require('./filter.conditions') - -const _getModel = ( - name, - filterModels = _filterModels -) => { - if ( - !name || - typeof name !== 'string' || - !filterModels.has(name) - ) { - throw new FilterParamsValidSchemaFindingError() - } - - return { ...filterModels.get(name) } -} - -const _getFilterSchema = (model = {}) => { - if ( - !model || - typeof model !== 'object' || - Object.keys(model).length === 0 - ) { - throw new FilterParamsValidSchemaFindingError() - } - - const properties = { ...model } - const objSchema = { - type: 'object', - additionalProperties: false, - properties - } - const arrSchema = { - type: 'object', - additionalProperties: false, - properties: Object.entries(model).reduce((accum, [key, item]) => { - return { - ...accum, - [key]: { - type: 'array', - minItems: 1, - items: { ...item } - } - } - }, {}) - } - const fieldsArrSchema = { - type: 'array', - minItems: 1, - items: { - type: 'string', - enum: Object.keys(model) - } - } - - const baseProperties = { - [FILTER_CONDITIONS.GT]: objSchema, - [FILTER_CONDITIONS.GTE]: objSchema, - [FILTER_CONDITIONS.LT]: objSchema, - [FILTER_CONDITIONS.LTE]: objSchema, - [FILTER_CONDITIONS.NOT]: objSchema, - [FILTER_CONDITIONS.LIKE]: objSchema, - [FILTER_CONDITIONS.EQ]: objSchema, - [FILTER_CONDITIONS.NE]: objSchema, - [FILTER_CONDITIONS.IN]: arrSchema, - [FILTER_CONDITIONS.NIN]: arrSchema, - [FILTER_CONDITIONS.IS_NULL]: fieldsArrSchema, - [FILTER_CONDITIONS.IS_NOT_NULL]: fieldsArrSchema - } - const filterSchema = { - oneOf: [ - { - type: 'object', - additionalProperties: false, - properties: { - [FILTER_CONDITIONS.OR]: { - type: 'object', - additionalProperties: false, - properties: baseProperties - } - } - }, - { - type: 'object', - additionalProperties: false, - properties: baseProperties - } - ] - } - - return filterSchema -} - -const _getMethodApiName = (methodApi) => { - if ( - methodApi === FILTER_MODELS_NAMES.POSITIONS_AUDIT || - methodApi === FILTER_MODELS_NAMES.POSITIONS_SNAPSHOT - ) { - return FILTER_MODELS_NAMES.POSITIONS_HISTORY - } - if (methodApi === FILTER_MODELS_NAMES.ORDER_TRADES) { - return FILTER_MODELS_NAMES.TRADES - } - - return methodApi -} - -module.exports = ( - methodApi, - args = {}, - filterModels -) => { - const { params } = { ...args } - const { filter } = { ...params } - - if ( - !filter || - typeof filter !== 'object' || - Object.keys(filter).length === 0 - ) { - return - } - - const ajv = new Ajv({ allowUnionTypes: true }) - const methodName = _getMethodApiName(methodApi) - const model = _getModel(methodName, filterModels) - const filterSchema = _getFilterSchema(model) - - if (ajv.validate(filterSchema, filter)) { - return - } - - throw new ArgsParamsFilterError({ data: ajv.errors }) -} diff --git a/workers/loc.api/helpers/filter-models.js b/workers/loc.api/helpers/filter-models.js deleted file mode 100644 index 18033822..00000000 --- a/workers/loc.api/helpers/filter-models.js +++ /dev/null @@ -1,254 +0,0 @@ -'use strict' - -const FILTER_MODELS_NAMES = require('./filter.models.names') - -module.exports = new Map([ - [ - FILTER_MODELS_NAMES.TICKERS_HISTORY, - { - symbol: { type: 'string' }, - bid: { type: 'number' }, - bidPeriod: { type: 'integer' }, - ask: { type: 'number' }, - mtsUpdate: { type: 'integer' } - } - ], - [ - FILTER_MODELS_NAMES.POSITIONS_HISTORY, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - status: { type: 'string' }, - amount: { type: 'number' }, - basePrice: { type: 'number' }, - closePrice: { type: 'number' }, - marginFunding: { type: 'number' }, - marginFundingType: { type: 'integer' }, - pl: { type: 'number' }, - plPerc: { type: 'number' }, - liquidationPrice: { type: 'number' }, - leverage: { type: 'number' }, - placeholder: { type: 'string' }, - mtsCreate: { type: 'integer' }, - mtsUpdate: { type: 'integer' } - } - ], - [ - FILTER_MODELS_NAMES.LEDGERS, - { - id: { type: 'integer' }, - currency: { type: 'string' }, - mts: { type: 'integer' }, - amount: { type: 'number' }, - amountUsd: { type: 'number' }, - balance: { type: 'number' }, - balanceUsd: { type: 'number' }, - description: { type: 'string' }, - wallet: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.TRADES, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - mtsCreate: { type: 'integer' }, - orderID: { type: 'integer' }, - execAmount: { type: 'number' }, - execPrice: { type: 'number' }, - orderType: { type: 'string' }, - orderPrice: { type: 'number' }, - maker: { type: 'integer' }, - fee: { type: 'number' }, - feeCurrency: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.FUNDING_TRADES, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - mtsCreate: { type: 'integer' }, - offerID: { type: 'integer' }, - amount: { type: 'number' }, - rate: { type: 'number' }, - period: { type: 'integer' }, - maker: { type: 'integer' } - } - ], - [ - FILTER_MODELS_NAMES.PUBLIC_TRADES, - { - id: { type: 'integer' }, - mts: { type: 'integer' }, - rate: { type: 'number' }, - period: { type: 'integer' }, - amount: { type: 'number' }, - price: { type: 'number' } - } - ], - [ - FILTER_MODELS_NAMES.ORDERS, - { - id: { type: 'integer' }, - gid: { type: 'integer' }, - cid: { type: 'integer' }, - symbol: { type: 'string' }, - mtsCreate: { type: 'integer' }, - mtsUpdate: { type: 'integer' }, - amount: { type: 'number' }, - amountOrig: { type: 'number' }, - type: { type: 'string' }, - typePrev: { type: 'string' }, - flags: { type: 'integer' }, - status: { type: 'string' }, - price: { type: 'number' }, - priceAvg: { type: 'number' }, - priceTrailing: { type: 'number' }, - priceAuxLimit: { type: 'number' }, - notify: { type: 'integer' }, - placedId: { type: 'integer' }, - amountExecuted: { type: 'number' } - } - ], - [ - FILTER_MODELS_NAMES.MOVEMENTS, - { - id: { type: 'integer' }, - currency: { type: 'string' }, - currencyName: { type: 'string' }, - mtsStarted: { type: 'integer' }, - mtsUpdated: { type: 'integer' }, - status: { type: 'string' }, - amount: { type: 'number' }, - amountUsd: { type: 'number' }, - fees: { type: 'number' }, - destinationAddress: { type: 'string' }, - transactionId: { type: 'string' }, - note: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.FUNDING_OFFER_HISTORY, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - mtsCreate: { type: 'integer' }, - mtsUpdate: { type: 'integer' }, - amount: { type: 'number' }, - amountOrig: { type: 'number' }, - type: { type: 'string' }, - flags: { type: 'string' }, - status: { type: 'string' }, - rate: { type: 'string' }, - period: { type: 'integer' }, - notify: { type: 'integer' }, - hidden: { type: 'integer' }, - renew: { type: 'integer' }, - rateReal: { type: 'integer' }, - amountExecuted: { type: 'number' } - } - ], - [ - FILTER_MODELS_NAMES.FUNDING_LOAN_HISTORY, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - side: { type: 'integer' }, - mtsCreate: { type: 'integer' }, - mtsUpdate: { type: 'integer' }, - amount: { type: 'number' }, - flags: { type: 'string' }, - status: { type: 'string' }, - rate: { type: 'string' }, - period: { type: 'integer' }, - mtsOpening: { type: 'integer' }, - mtsLastPayout: { type: 'integer' }, - notify: { type: 'integer' }, - hidden: { type: 'integer' }, - renew: { type: 'integer' }, - rateReal: { type: 'integer' }, - noClose: { type: 'integer' } - } - ], - [ - FILTER_MODELS_NAMES.FUNDING_CREDIT_HISTORY, - { - id: { type: 'integer' }, - symbol: { type: 'string' }, - side: { type: 'integer' }, - mtsCreate: { type: 'integer' }, - mtsUpdate: { type: 'integer' }, - amount: { type: 'number' }, - flags: { type: 'string' }, - status: { type: 'string' }, - rate: { type: 'string' }, - period: { type: 'integer' }, - mtsOpening: { type: 'integer' }, - mtsLastPayout: { type: 'integer' }, - notify: { type: 'integer' }, - hidden: { type: 'integer' }, - renew: { type: 'integer' }, - rateReal: { type: 'integer' }, - noClose: { type: 'integer' }, - positionPair: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.STATUS_MESSAGES, - { - key: { type: 'string' }, - timestamp: { type: 'integer' }, - price: { type: 'number' }, - priceSpot: { type: 'number' }, - fundBal: { type: 'number' }, - fundingAccrued: { type: 'number' }, - fundingStep: { type: 'number' }, - clampMin: { type: 'number' }, - clampMax: { type: 'number' } - } - ], - [ - FILTER_MODELS_NAMES.LOGINS, - { - id: { type: 'integer' }, - time: { type: 'integer' }, - ip: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.CHANGE_LOGS, - { - mtsCreate: { type: 'integer' }, - log: { type: 'string' }, - ip: { type: 'string' }, - userAgent: { type: 'string' } - } - ], - [ - FILTER_MODELS_NAMES.CANDLES, - { - mts: { type: 'integer' }, - open: { type: 'number' }, - close: { type: 'number' }, - high: { type: 'number' }, - low: { type: 'number' }, - volume: { type: 'number' } - } - ], - [ - FILTER_MODELS_NAMES.PAY_INVOICE_LIST, - { - id: { type: 'string' }, - t: { type: 'integer' }, - duration: { type: 'number' }, - amount: { type: 'number' }, - currency: { type: 'string' }, - orderId: { type: 'string' }, - webhook: { type: 'string' }, - redirectUrl: { type: 'string' }, - status: { type: 'string' }, - merchantName: { type: 'string' } - } - ] -]) diff --git a/workers/loc.api/helpers/filter.models.names.js b/workers/loc.api/helpers/filter.models.names.js deleted file mode 100644 index 04ba4e64..00000000 --- a/workers/loc.api/helpers/filter.models.names.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' - -module.exports = { - /** - * It's an alias to POSITIONS_HISTORY model - */ - POSITIONS_HISTORY: 'positionsHistory', - POSITIONS_SNAPSHOT: 'positionsSnapshot', - POSITIONS_AUDIT: 'positionsAudit', - - /** - * It's an alias to TRADES model - */ - TRADES: 'trades', - ORDER_TRADES: 'orderTrades', - - LEDGERS: 'ledgers', - TICKERS_HISTORY: 'tickersHistory', - FUNDING_TRADES: 'fundingTrades', - PUBLIC_TRADES: 'publicTrades', - ORDERS: 'orders', - MOVEMENTS: 'movements', - FUNDING_OFFER_HISTORY: 'fundingOfferHistory', - FUNDING_LOAN_HISTORY: 'fundingLoanHistory', - FUNDING_CREDIT_HISTORY: 'fundingCreditHistory', - STATUS_MESSAGES: 'statusMessages', - LOGINS: 'logins', - CHANGE_LOGS: 'changeLogs', - CANDLES: 'candles', - PAY_INVOICE_LIST: 'payInvoiceList' -} diff --git a/workers/loc.api/helpers/index.js b/workers/loc.api/helpers/index.js index 1d394c3a..e038c79a 100644 --- a/workers/loc.api/helpers/index.js +++ b/workers/loc.api/helpers/index.js @@ -59,10 +59,7 @@ const checkJobAndGetUserData = require( ) const grcBfxReq = require('./grc-bfx-req') const filterResponse = require('./filter-response') -const filterModels = require('./filter-models') -const checkFilterParams = require('./check-filter-params') const normalizeFilterParams = require('./normalize-filter-params') -const FILTER_MODELS_NAMES = require('./filter.models.names') const FILTER_API_METHOD_NAMES = require('./filter.api.method.names') const FILTER_CONDITIONS = require('./filter.conditions') const getDataFromApi = require('./get-data-from-api') @@ -115,10 +112,7 @@ module.exports = { checkJobAndGetUserData, grcBfxReq, filterResponse, - filterModels, - checkFilterParams, normalizeFilterParams, - FILTER_MODELS_NAMES, FILTER_API_METHOD_NAMES, FILTER_CONDITIONS, getDataFromApi, From cf813568d49b3eab5ab8b90f50dee496da4ab6fd Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 7 Aug 2025 15:09:26 +0300 Subject: [PATCH 82/93] Optimize data validator init flow for fw-reports integration --- workers/loc.api/data-validator/index.js | 58 +++++++++++++++---------- workers/loc.api/di/core.deps.js | 2 +- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/workers/loc.api/data-validator/index.js b/workers/loc.api/data-validator/index.js index 2ee6ea52..2fc61b5a 100644 --- a/workers/loc.api/data-validator/index.js +++ b/workers/loc.api/data-validator/index.js @@ -22,27 +22,33 @@ const FILTER_SCHEMA_IDS = require('./filter.schema.ids') const schemas = require('./schemas') const filterSchemas = require('./filter-schemas') -const ajv = new Ajv({ - // Compile schema on initialization - schemas: [ - ...Object.values(schemas), - ...Object.values(filterSchemas) - ], - - // Strict mode - strict: true, - strictRequired: true, - allowMatchingProperties: true, - allowUnionTypes: true, - - $data: true, - ownProperties: true, - allErrors: true, - messages: true, - formats: { reserved: true }, - verbose: isDevEnv -}) -addFormats(ajv) +let ajv + +const init = () => { + ajv = new Ajv({ + // Compile schema on initialization + schemas: [ + ...Object.values(schemas), + ...Object.values(filterSchemas) + ], + + // Strict mode + strict: true, + strictRequired: true, + allowMatchingProperties: true, + allowUnionTypes: true, + + $data: true, + ownProperties: true, + allErrors: true, + messages: true, + formats: { reserved: true }, + verbose: isDevEnv + }) + addFormats(ajv) + + return module.exports +} const addSchemas = (schemas = []) => { const _schemas = Array.isArray(schemas) @@ -104,7 +110,7 @@ const reinit = (args) => { schemaIds, filterSchemaNames, filterSchemaIds, - schemas = [] + schemas = {} } = args ?? {} Object.assign(SCHEMA_NAMES, schemaNames) @@ -112,7 +118,9 @@ const reinit = (args) => { Object.assign(FILTER_SCHEMA_NAMES, filterSchemaNames) Object.assign(FILTER_SCHEMA_IDS, filterSchemaIds) - addSchemas(schemas) + addSchemas(Object.values(schemas)) + + return module.exports } module.exports = { @@ -122,6 +130,10 @@ module.exports = { FILTER_SCHEMA_NAMES, FILTER_SCHEMA_IDS, + schemas, + filterSchemas, + + init, reinit, addSchemas, validate diff --git a/workers/loc.api/di/core.deps.js b/workers/loc.api/di/core.deps.js index db01e483..eaa52ffb 100644 --- a/workers/loc.api/di/core.deps.js +++ b/workers/loc.api/di/core.deps.js @@ -17,6 +17,6 @@ module.exports = () => { [TYPES.CONF] ) }).inSingletonScope() - bind(TYPES.DataValidator).toConstantValue(dataValidator) + bind(TYPES.DataValidator).toConstantValue(dataValidator.init()) }) } From 6028ac7474360b85f020c426f384c0f8d1fe9b59 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 8 Aug 2025 10:02:24 +0300 Subject: [PATCH 83/93] Simplify filter-schemas import --- workers/loc.api/data-validator/filter-schemas/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/workers/loc.api/data-validator/filter-schemas/index.js b/workers/loc.api/data-validator/filter-schemas/index.js index 4f82d9bc..bd3c352f 100644 --- a/workers/loc.api/data-validator/filter-schemas/index.js +++ b/workers/loc.api/data-validator/filter-schemas/index.js @@ -1,11 +1,9 @@ 'use strict' -const path = require('node:path') - const FILTER_SCHEMA_NAMES = require('../filter.schema.names') const { requireSchemas } = require('../helpers') module.exports = requireSchemas( FILTER_SCHEMA_NAMES, - path.join(__dirname, '../filter-schemas') + __dirname ) From 02bda8c79bde8698d0404f537d97a727aa38b6f6 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 8 Aug 2025 10:40:19 +0300 Subject: [PATCH 84/93] Add isLimitUnused flag to getReportFileArgs helper --- workers/loc.api/helpers/limit-param.helpers.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/workers/loc.api/helpers/limit-param.helpers.js b/workers/loc.api/helpers/limit-param.helpers.js index a540b9b5..e1f4b5fd 100644 --- a/workers/loc.api/helpers/limit-param.helpers.js +++ b/workers/loc.api/helpers/limit-param.helpers.js @@ -60,20 +60,29 @@ const getMethodLimit = (sendLimit, method, methodsLimits = {}) => { return getLimitNotMoreThan(base, max) } -const getReportFileArgs = (args, method, extraParams = {}) => { +const getReportFileArgs = (args, opts) => { + const { + method, + extraParams = {}, + isLimitUnused + } = opts ?? {} + const reportFileArgs = { ...args, params: { - ...args.params, + ...args?.params, ...extraParams } } - if (method === 'getWeightedAverages') { + if (isLimitUnused) { return reportFileArgs } - reportFileArgs.params.limit = getMethodLimit({ isMax: true }, method) + reportFileArgs.params.limit = getMethodLimit( + { isMax: true }, + method + ) return reportFileArgs } From 82fe09a10f357d7a3e557a2095ddc095bbd676d3 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 8 Aug 2025 10:40:39 +0300 Subject: [PATCH 85/93] Adapt report-file-job-data to new helper signature --- .../report.file.job.data.js | 88 +++++++++++++++---- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/workers/loc.api/generate-report-file/report.file.job.data.js b/workers/loc.api/generate-report-file/report.file.job.data.js index 466cfd5f..c50cc470 100644 --- a/workers/loc.api/generate-report-file/report.file.job.data.js +++ b/workers/loc.api/generate-report-file/report.file.job.data.js @@ -50,7 +50,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'trades') + const reportFileArgs = getReportFileArgs( + args, + { method: 'trades' } + ) const jobData = { userInfo, @@ -97,7 +100,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'fundingTrades') + const reportFileArgs = getReportFileArgs( + args, + { method: 'fundingTrades' } + ) const jobData = { userInfo, @@ -143,7 +149,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'tickersHistory') + const reportFileArgs = getReportFileArgs( + args, + { method: 'tickersHistory' } + ) const symb = Array.isArray(args.params.symbol) ? args.params.symbol : [args.params.symbol] @@ -248,7 +257,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'positionsHistory') + const reportFileArgs = getReportFileArgs( + args, + { method: 'positionsHistory' } + ) const jobData = { userInfo, @@ -352,7 +364,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(_args, 'positionsAudit') + const reportFileArgs = getReportFileArgs( + _args, + { method: 'positionsAudit' } + ) const jobData = { userInfo, @@ -409,7 +424,13 @@ class ReportFileJobData { const isTradingPair = Array.isArray(params.symbol) ? params.symbol[0].startsWith('t') : params.symbol.startsWith('t') - const reportFileArgs = getReportFileArgs(args, 'publicTrades', { isTradingPair }) + const reportFileArgs = getReportFileArgs( + args, + { + method: 'publicTrades', + extraParams: { isTradingPair } + } + ) const columnsCsv = (isTradingPair) ? { id: '#', @@ -549,7 +570,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'ledgers') + const reportFileArgs = getReportFileArgs( + args, + { method: 'ledgers' } + ) const jobData = { userInfo, @@ -597,7 +621,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'payInvoiceList') + const reportFileArgs = getReportFileArgs( + args, + { method: 'payInvoiceList' } + ) const jobData = { userInfo, @@ -643,7 +670,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'orderTrades') + const reportFileArgs = getReportFileArgs( + args, + { method: 'orderTrades' } + ) const jobData = { userInfo, @@ -689,7 +719,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'orders') + const reportFileArgs = getReportFileArgs( + args, + { method: 'orders' } + ) const jobData = { userInfo, @@ -790,7 +823,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'movements') + const reportFileArgs = getReportFileArgs( + args, + { method: 'movements' } + ) const jobData = { userInfo, @@ -836,7 +872,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'fundingOfferHistory') + const reportFileArgs = getReportFileArgs( + args, + { method: 'fundingOfferHistory' } + ) const jobData = { userInfo, @@ -885,7 +924,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'fundingLoanHistory') + const reportFileArgs = getReportFileArgs( + args, + { method: 'fundingLoanHistory' } + ) const jobData = { userInfo, @@ -936,7 +978,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'fundingCreditHistory') + const reportFileArgs = getReportFileArgs( + args, + { method: 'fundingCreditHistory' } + ) const jobData = { userInfo, @@ -988,7 +1033,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'logins') + const reportFileArgs = getReportFileArgs( + args, + { method: 'logins' } + ) const jobData = { userInfo, @@ -1028,7 +1076,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'changeLogs') + const reportFileArgs = getReportFileArgs( + args, + { method: 'changeLogs' } + ) const jobData = { userInfo, @@ -1138,7 +1189,10 @@ class ReportFileJobData { uInfo ) - const reportFileArgs = getReportFileArgs(args, 'getWeightedAverages') + const reportFileArgs = getReportFileArgs( + args, + { isLimitUnused: true } + ) const jobData = { userInfo, From daf20ae2de03977eed932eaef57b060f05a7babd Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 11 Aug 2025 15:17:21 +0300 Subject: [PATCH 86/93] Fix currencies getter interrupter --- workers/loc.api/service.report.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/workers/loc.api/service.report.js b/workers/loc.api/service.report.js index 665a4762..99a4b154 100644 --- a/workers/loc.api/service.report.js +++ b/workers/loc.api/service.report.js @@ -73,8 +73,10 @@ class ReportService extends Api { return rest.futures() } - _getCurrencies () { - const rest = this._getREST({}) + _getCurrencies (args) { + const rest = this._getREST({}, { + interrupter: args?.interrupter + }) return rest.currencies() } From 425e1121e5b7b51a5dc1d247180dff57767be0cc Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 13 Aug 2025 10:28:14 +0300 Subject: [PATCH 87/93] Add candle timeframe validation schema def --- workers/loc.api/data-validator/schemas/defs.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workers/loc.api/data-validator/schemas/defs.js b/workers/loc.api/data-validator/schemas/defs.js index 4d9b4539..d23518ed 100644 --- a/workers/loc.api/data-validator/schemas/defs.js +++ b/workers/loc.api/data-validator/schemas/defs.js @@ -151,6 +151,10 @@ module.exports = { }, method: { type: 'string' + }, + candleTimeframe: { + type: 'string', + minLength: 2 } } } From 63647dde2079d4f3ee9dcc2633e50756fa4d1d8f Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 13 Aug 2025 10:28:36 +0300 Subject: [PATCH 88/93] Use candle timeframe validation schema def --- workers/loc.api/data-validator/schemas/getCandlesFileReq.js | 3 +-- workers/loc.api/data-validator/schemas/getCandlesReq.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/workers/loc.api/data-validator/schemas/getCandlesFileReq.js b/workers/loc.api/data-validator/schemas/getCandlesFileReq.js index c1552202..1f7f7a78 100644 --- a/workers/loc.api/data-validator/schemas/getCandlesFileReq.js +++ b/workers/loc.api/data-validator/schemas/getCandlesFileReq.js @@ -24,8 +24,7 @@ module.exports = { $ref: 'defs#/definitions/sort' }, timeframe: { - type: 'string', - minLength: 2 + $ref: 'defs#/definitions/candleTimeframe' }, section: { type: 'string', diff --git a/workers/loc.api/data-validator/schemas/getCandlesReq.js b/workers/loc.api/data-validator/schemas/getCandlesReq.js index c79ccf8f..18d7b80e 100644 --- a/workers/loc.api/data-validator/schemas/getCandlesReq.js +++ b/workers/loc.api/data-validator/schemas/getCandlesReq.js @@ -24,8 +24,7 @@ module.exports = { $ref: 'defs#/definitions/sort' }, timeframe: { - type: 'string', - minLength: 2 + $ref: 'defs#/definitions/candleTimeframe' }, section: { type: 'string', From 4d0291fb3967c03a7691137c542febc408093093 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 14 Aug 2025 13:26:44 +0300 Subject: [PATCH 89/93] Improve notThrowError param setting --- workers/loc.api/generate-report-file/index.js | 4 +- .../report.file.job.data.js | 106 ++++++++++++++---- .../queue/write-data-to-stream/helpers.js | 15 +-- 3 files changed, 93 insertions(+), 32 deletions(-) diff --git a/workers/loc.api/generate-report-file/index.js b/workers/loc.api/generate-report-file/index.js index 0cda2e22..3fdda07b 100644 --- a/workers/loc.api/generate-report-file/index.js +++ b/workers/loc.api/generate-report-file/index.js @@ -86,7 +86,7 @@ const _truncateFileNameEnding = (name) => { return `${cleanedName[0].toLowerCase()}${cleanedName.slice(1)}` } -const _getfilterApiMethodNamesAndArgs = ( +const _getFilterApiMethodNamesAndArgs = ( name, reqArgs ) => { @@ -141,7 +141,7 @@ module.exports = ( rootPath, conf }) - const checkingDataArr = _getfilterApiMethodNamesAndArgs( + const checkingDataArr = _getFilterApiMethodNamesAndArgs( name, args ) diff --git a/workers/loc.api/generate-report-file/report.file.job.data.js b/workers/loc.api/generate-report-file/report.file.job.data.js index c50cc470..5616d156 100644 --- a/workers/loc.api/generate-report-file/report.file.job.data.js +++ b/workers/loc.api/generate-report-file/report.file.job.data.js @@ -52,7 +52,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'trades' } + { + method: 'trades', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -102,7 +105,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'fundingTrades' } + { + method: 'fundingTrades', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -151,7 +157,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'tickersHistory' } + { + method: 'tickersHistory', + extraParams: { notThrowError: true } + } ) const symb = Array.isArray(args.params.symbol) ? args.params.symbol @@ -259,7 +268,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'positionsHistory' } + { + method: 'positionsHistory', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -314,7 +326,13 @@ class ReportFileJobData { userInfo, userId, name: 'getActivePositions', - args, + args: { + ...args, + params: { + ...args?.params, + notThrowError: true + } + }, propNameForPagination: 'mtsUpdate', columnsCsv: { id: '#', @@ -366,7 +384,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( _args, - { method: 'positionsAudit' } + { + method: 'positionsAudit', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -428,7 +449,7 @@ class ReportFileJobData { args, { method: 'publicTrades', - extraParams: { isTradingPair } + extraParams: { isTradingPair, notThrowError: true } } ) const columnsCsv = (isTradingPair) @@ -531,7 +552,13 @@ class ReportFileJobData { userInfo, userId, name: 'getCandles', - args, + args: { + ...args, + params: { + ...args?.params, + notThrowError: true + } + }, propNameForPagination: 'mts', columnsCsv: { mts: 'TIME', @@ -572,7 +599,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'ledgers' } + { + method: 'ledgers', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -623,7 +653,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'payInvoiceList' } + { + method: 'payInvoiceList', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -672,7 +705,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'orderTrades' } + { + method: 'orderTrades', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -721,7 +757,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'orders' } + { + method: 'orders', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -778,7 +817,13 @@ class ReportFileJobData { userInfo, userId, name: 'getActiveOrders', - args, + args: { + ...args, + params: { + ...args?.params, + notThrowError: true + } + }, propNameForPagination: null, columnsCsv: { id: '#', @@ -825,7 +870,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'movements' } + { + method: 'movements', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -874,7 +922,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'fundingOfferHistory' } + { + method: 'fundingOfferHistory', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -926,7 +977,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'fundingLoanHistory' } + { + method: 'fundingLoanHistory', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -980,7 +1034,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'fundingCreditHistory' } + { + method: 'fundingCreditHistory', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -1035,7 +1092,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'logins' } + { + method: 'logins', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -1078,7 +1138,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { method: 'changeLogs' } + { + method: 'changeLogs', + extraParams: { notThrowError: true } + } ) const jobData = { @@ -1191,7 +1254,10 @@ class ReportFileJobData { const reportFileArgs = getReportFileArgs( args, - { isLimitUnused: true } + { + isLimitUnused: true, + extraParams: { notThrowError: true } + } ) const jobData = { diff --git a/workers/loc.api/queue/write-data-to-stream/helpers.js b/workers/loc.api/queue/write-data-to-stream/helpers.js index 218e1527..0a88ace0 100644 --- a/workers/loc.api/queue/write-data-to-stream/helpers.js +++ b/workers/loc.api/queue/write-data-to-stream/helpers.js @@ -170,16 +170,6 @@ const writeMessageToStream = ( } const setDefaultParams = (args, method) => { - if (method === 'getWallets') { - args.params.end = args.params.end - ? Math.min(args.params.end, Date.now()) - : Date.now() - - return - } - - args.params.notThrowError = true - if (method === 'getStatusMessages') { return } @@ -187,6 +177,11 @@ const setDefaultParams = (args, method) => { args.params.end = args.params.end ? Math.min(args.params.end, Date.now()) : Date.now() + + if (method === 'getWallets') { + return + } + args.params.start = args.params.start ? args.params.start : 0 From abb462e9f61cce4570c11c2cb94788b82a394dee Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 15 Aug 2025 12:09:08 +0300 Subject: [PATCH 90/93] Adjust default params setting for positions snapshot file gen --- workers/loc.api/queue/write-data-to-stream/helpers.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/queue/write-data-to-stream/helpers.js b/workers/loc.api/queue/write-data-to-stream/helpers.js index 0a88ace0..947d4153 100644 --- a/workers/loc.api/queue/write-data-to-stream/helpers.js +++ b/workers/loc.api/queue/write-data-to-stream/helpers.js @@ -178,7 +178,10 @@ const setDefaultParams = (args, method) => { ? Math.min(args.params.end, Date.now()) : Date.now() - if (method === 'getWallets') { + if ( + method === 'getWallets' || + method === 'getPositionsSnapshot' + ) { return } From 5311d52f7b34eac4be7da6ac09be38d7f1619520 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Fri, 15 Aug 2025 13:08:08 +0300 Subject: [PATCH 91/93] Adjust default params setting for full snapshot report file gen --- workers/loc.api/queue/write-data-to-stream/helpers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/queue/write-data-to-stream/helpers.js b/workers/loc.api/queue/write-data-to-stream/helpers.js index 947d4153..80db494e 100644 --- a/workers/loc.api/queue/write-data-to-stream/helpers.js +++ b/workers/loc.api/queue/write-data-to-stream/helpers.js @@ -180,7 +180,8 @@ const setDefaultParams = (args, method) => { if ( method === 'getWallets' || - method === 'getPositionsSnapshot' + method === 'getPositionsSnapshot' || + method === 'getFullSnapshotReport' ) { return } From c23c35b91c89c9591e1a58b2142ef7d592389e9a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 21 Aug 2025 13:10:20 +0300 Subject: [PATCH 92/93] Clean up old param validation --- workers/loc.api/helpers/check-params.js | 70 ----- workers/loc.api/helpers/index.js | 2 - workers/loc.api/helpers/schema.js | 378 ------------------------ 3 files changed, 450 deletions(-) delete mode 100644 workers/loc.api/helpers/check-params.js delete mode 100644 workers/loc.api/helpers/schema.js diff --git a/workers/loc.api/helpers/check-params.js b/workers/loc.api/helpers/check-params.js deleted file mode 100644 index 22de7e8d..00000000 --- a/workers/loc.api/helpers/check-params.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict' - -const { cloneDeep } = require('lib-js-util-base') -const Ajv = require('ajv') - -const schema = require('./schema') -const { - UnprocessableEntityError, - ArgsParamsError, - ParamsValidSchemaFindingError -} = require('../errors') - -module.exports = ( - args, - schemaName = 'paramsSchemaForFile', - requireFields = [], - checkParamsField = false, - additionalSchema = {} -) => { - const ajv = new Ajv({ allowUnionTypes: true }) - const extendedSchema = { ...schema, ...additionalSchema } - - if (!extendedSchema[schemaName]) { - throw new ParamsValidSchemaFindingError() - } - - const _schema = cloneDeep(extendedSchema[schemaName]) - - if ( - Array.isArray(requireFields) && - requireFields.length > 0 - ) { - if (!args.params) { - throw new ArgsParamsError() - } - - if (!Array.isArray(_schema.required)) { - _schema.required = [] - } - - requireFields.forEach(field => { - _schema.required.push(field) - }) - } - - if ( - (checkParamsField || args.params) && - !ajv.validate(_schema, args.params) - ) { - throw new ArgsParamsError({ data: ajv.errors }) - } - if ( - args.params && - typeof args.params === 'object' && - Number.isFinite(args.params.start) && - Number.isFinite(args.params.end) && - args.params.start >= args.params.end - ) { - // Use same error format like Ajv for consistency - throw new UnprocessableEntityError({ - data: [{ - instancePath: '/end', - schemaPath: '#/properties/end/type', - keyword: 'type', - params: { type: 'integer' }, - message: 'must be start < end' - }] - }) - } -} diff --git a/workers/loc.api/helpers/index.js b/workers/loc.api/helpers/index.js index e038c79a..499cdaf9 100644 --- a/workers/loc.api/helpers/index.js +++ b/workers/loc.api/helpers/index.js @@ -6,7 +6,6 @@ const { prepareApiResponse, prepareSymbolResponse } = require('./prepare-response') -const checkParams = require('./check-params') const { getMethodLimit, getReportFileArgs, @@ -73,7 +72,6 @@ module.exports = { MIN_START_MTS, getDateNotMoreNow, getDateNotLessMinStart, - checkParams, hasJobInQueueWithStatusBy, isAuthError, isRateLimitError, diff --git a/workers/loc.api/helpers/schema.js b/workers/loc.api/helpers/schema.js deleted file mode 100644 index 93ea76a9..00000000 --- a/workers/loc.api/helpers/schema.js +++ /dev/null @@ -1,378 +0,0 @@ -'use strict' - -const { cloneDeep } = require('lib-js-util-base') - -const _publicTradesSymbol = { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - maxItems: 1, - items: { - type: 'string' - } - } -} - -const paramsSchemaForApi = { - type: 'object', - properties: { - limit: { - type: 'integer' - }, - start: { - type: 'integer' - }, - end: { - type: 'integer' - }, - symbol: { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - minItems: 1, - items: { - type: 'string' - } - } - } - } -} - -const timezone = { - type: ['number', 'string'] -} -const dateFormat = { - type: 'string', - enum: [ - 'DD-MM-YY', - 'DD-MM-YYYY', - 'MM-DD-YY', - 'MM-DD-YYYY', - 'YY-MM-DD', - 'YYYY-MM-DD' - ] -} -const language = { type: 'string' } - -const paramsSchemaForPayInvoiceList = { - ...paramsSchemaForApi, - properties: { - ...paramsSchemaForApi.properties, - id: { - type: 'string' - } - } -} - -const paramsSchemaForPayInvoiceListFile = { - type: 'object', - properties: { - ...paramsSchemaForPayInvoiceList.properties, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForCandlesApi = { - type: 'object', - required: ['symbol'], - properties: { - timeframe: { - type: 'string' - }, - symbol: { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - maxItems: 1, - items: { - type: 'string' - } - } - }, - section: { - type: 'string' - }, - limit: { - type: 'integer' - }, - start: { - type: 'integer' - }, - end: { - type: 'integer' - }, - sort: { - type: 'integer' - } - } -} - -const paramsSchemaForWeightedAveragesReportApi = { - type: 'object', - properties: { - start: { - type: 'integer' - }, - end: { - type: 'integer' - }, - symbol: { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - maxItems: 1, - items: { - type: 'string' - } - } - } - } -} - -const paramsSchemaForMovementInfo = { - type: 'object', - properties: { - id: { - type: 'integer' - } - } -} - -const paramsSchemaForCandlesFile = { - type: 'object', - properties: { - ...paramsSchemaForCandlesApi.properties, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForStatusMessagesApi = { - type: 'object', - properties: { - type: { - type: 'string' - }, - symbol: { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - minItems: 1, - items: { - type: 'string' - } - } - } - } -} - -const paramsSchemaForStatusMessagesFile = { - type: 'object', - properties: { - ...paramsSchemaForStatusMessagesApi.properties, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForFile = { - ...paramsSchemaForApi, - properties: { - ...paramsSchemaForApi.properties, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForPublicTradesFile = { - ...paramsSchemaForFile, - properties: { - ...paramsSchemaForFile.properties, - symbol: _publicTradesSymbol - } -} - -const paramsSchemaForPublicTrades = { - ...paramsSchemaForApi, - properties: { - ...paramsSchemaForApi.properties, - symbol: _publicTradesSymbol - } -} - -const paramsSchemaForPositionsAudit = { - ...paramsSchemaForApi, - required: [ - ...(Array.isArray(paramsSchemaForApi.required) - ? paramsSchemaForApi.required - : [] - ), - 'id' - ], - properties: { - ...paramsSchemaForApi.properties, - id: { - type: 'array', - minItems: 1, - items: { - type: 'integer' - } - } - } -} - -const paramsSchemaForPositionsAuditFile = { - ...paramsSchemaForFile, - properties: { - ...paramsSchemaForFile.properties, - ...paramsSchemaForPositionsAudit.properties - } -} - -const paramsSchemaForWallets = { - type: 'object', - properties: { - end: { - type: 'integer' - } - } -} - -const paramsSchemaForWalletsFile = { - type: 'object', - properties: { - end: { - type: 'integer' - }, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForActivePositionsFile = { - type: 'object', - properties: { - timezone, - dateFormat, - language - } -} - -const paramsSchemaForMultipleFile = { - type: 'object', - required: ['multiExport'], - properties: { - isPDFRequired: { - type: 'boolean' - }, - email: { - type: 'string' - }, - language, - multiExport: { - type: 'array', - minItems: 1, - items: { - type: 'object', - required: ['method'], - properties: { - method: { - type: 'string' - } - } - } - } - } -} - -const paramsSchemaForOrderTradesApi = { - type: 'object', - required: ['id', 'symbol'], - properties: { - id: { - type: 'integer' - }, - limit: { - type: 'integer' - }, - start: { - type: 'integer' - }, - end: { - type: 'integer' - }, - symbol: { - type: ['string', 'array'], - if: { - type: 'array' - }, - then: { - minItems: 1, - maxItems: 1, - items: { - type: 'string' - } - } - } - } -} - -const paramsSchemaForOrderTradesFile = { - ...paramsSchemaForOrderTradesApi, - properties: { - ...paramsSchemaForOrderTradesApi.properties, - timezone, - dateFormat, - language - } -} - -const paramsSchemaForWeightedAveragesReportFile = { - type: 'object', - properties: { - ...cloneDeep(paramsSchemaForWeightedAveragesReportApi.properties), - timezone, - dateFormat, - language - } -} - -module.exports = { - paramsSchemaForApi, - paramsSchemaForFile, - paramsSchemaForPayInvoiceList, - paramsSchemaForPayInvoiceListFile, - paramsSchemaForPublicTradesFile, - paramsSchemaForPublicTrades, - paramsSchemaForPositionsAudit, - paramsSchemaForPositionsAuditFile, - paramsSchemaForWallets, - paramsSchemaForWalletsFile, - paramsSchemaForMultipleFile, - paramsSchemaForActivePositionsFile, - paramsSchemaForOrderTradesApi, - paramsSchemaForOrderTradesFile, - paramsSchemaForStatusMessagesApi, - paramsSchemaForStatusMessagesFile, - paramsSchemaForCandlesApi, - paramsSchemaForCandlesFile, - paramsSchemaForWeightedAveragesReportApi, - paramsSchemaForWeightedAveragesReportFile, - paramsSchemaForMovementInfo -} From 1a29cf2f3ccb122ed574d237a77f3e09c6b6933c Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 25 Aug 2025 11:40:53 +0300 Subject: [PATCH 93/93] Bump version up to 4.12.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 479a970a..44aaff5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bfx-report", - "version": "4.12.5", + "version": "4.12.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bfx-report", - "version": "4.12.5", + "version": "4.12.6", "license": "Apache-2.0", "dependencies": { "ajv": "8.17.1", diff --git a/package.json b/package.json index c8913826..695d3e47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bfx-report", - "version": "4.12.5", + "version": "4.12.6", "description": "Reporting tool", "main": "worker.js", "license": "Apache-2.0",