@natlibfi/melinda-rest-api-commons 6.0.1 → 6.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/melinda-node-tests-and-publish.yml +4 -2
- package/README.md +82 -0
- package/dist/amqp.d.ts +41 -0
- package/dist/amqp.d.ts.map +1 -0
- package/dist/amqp.js +242 -218
- package/dist/amqp.js.map +1 -7
- package/dist/constants.d.ts +49 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +38 -38
- package/dist/constants.js.map +1 -7
- package/dist/helpers/conversion.d.ts +8 -0
- package/dist/helpers/conversion.d.ts.map +1 -0
- package/dist/helpers/conversion.js +70 -65
- package/dist/helpers/conversion.js.map +1 -7
- package/dist/helpers/fix-constants.d.ts +76 -0
- package/dist/helpers/fix-constants.d.ts.map +1 -0
- package/dist/helpers/fix-constants.js +41 -41
- package/dist/helpers/fix-constants.js.map +1 -7
- package/dist/helpers/fix-handle-tempurns.d.ts +3 -0
- package/dist/helpers/fix-handle-tempurns.d.ts.map +1 -0
- package/dist/helpers/fix-handle-tempurns.js +73 -71
- package/dist/helpers/fix-handle-tempurns.js.map +1 -7
- package/dist/helpers/fix-strip-f884s.d.ts +10 -0
- package/dist/helpers/fix-strip-f884s.d.ts.map +1 -0
- package/dist/helpers/fix-strip-f884s.js +163 -151
- package/dist/helpers/fix-strip-f884s.js.map +1 -7
- package/dist/helpers/fix.d.ts +6 -0
- package/dist/helpers/fix.d.ts.map +1 -0
- package/dist/helpers/fix.js +133 -117
- package/dist/helpers/fix.js.map +1 -7
- package/dist/helpers/validation.d.ts +9 -0
- package/dist/helpers/validation.d.ts.map +1 -0
- package/dist/helpers/validation.js +14 -16
- package/dist/helpers/validation.js.map +1 -7
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -7
- package/dist/mongo.d.ts +165 -0
- package/dist/mongo.d.ts.map +1 -0
- package/dist/mongo.js +603 -464
- package/dist/mongo.js.map +1 -7
- package/dist/mongoError.d.ts +2 -0
- package/dist/mongoError.d.ts.map +1 -0
- package/dist/mongoError.js +19 -0
- package/dist/mongoError.js.map +1 -0
- package/dist/mongoLog.d.ts +50 -0
- package/dist/mongoLog.d.ts.map +1 -0
- package/dist/mongoLog.js +282 -172
- package/dist/mongoLog.js.map +1 -7
- package/dist/utils.d.ts +36 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +118 -87
- package/dist/utils.js.map +1 -7
- package/eslint.config.ts +66 -0
- package/package.json +23 -25
- package/test/amqp-error-branches.test.ts +551 -0
- package/{tests/amqp.healthtest.js → test/amqp.healthtest.ts} +19 -7
- package/{tests/amqp.tests.localtest.js → test/amqp.tests.localtest.ts} +66 -52
- package/{tests/helpers/conversion.test.js → test/helpers/conversion.test.ts} +39 -11
- package/test/helpers/fix-edge.test.ts +201 -0
- package/test/helpers/fix.test.ts +65 -0
- package/{tests/helpers/validation.test.js → test/helpers/validation.test.ts} +13 -8
- package/{tests/mongo-add-blob-size.test.js → test/mongo-add-blob-size.test.ts} +14 -15
- package/{tests/mongo-check-and-check-state.test.js → test/mongo-check-and-check-state.test.ts} +9 -9
- package/{tests/mongo-check-and-set-import-job-state.test.js → test/mongo-check-and-set-import-job-state.test.ts} +9 -10
- package/{tests/mongo-check-timeout.test.js → test/mongo-check-timeout.test.ts} +6 -9
- package/{tests/mongo-create-bulk.test.js → test/mongo-create-bulk.test.ts} +6 -7
- package/{tests/mongo-create-prio.test.js → test/mongo-create-prio.test.ts} +6 -6
- package/test/mongo-error-branches.test.ts +883 -0
- package/{tests/mongo-get-one.test.js → test/mongo-get-one.test.ts} +6 -6
- package/{tests/mongo-get-stream.test.js → test/mongo-get-stream.test.ts} +10 -9
- package/{tests/mongo-push-ids.test.js → test/mongo-push-ids.test.ts} +6 -6
- package/{tests/mongo-push-messages.test.js → test/mongo-push-messages.test.ts} +6 -6
- package/{tests/mongo-query-by-id.test.js → test/mongo-query-by-id.test.ts} +6 -9
- package/{tests/mongo-query.test.js → test/mongo-query.test.ts} +6 -7
- package/{tests/mongo-read-content.test.js → test/mongo-read-content.test.ts} +16 -9
- package/{tests/mongo-remove.test.js → test/mongo-remove.test.ts} +6 -8
- package/{tests/mongo-set-blob-size.test.js → test/mongo-set-blob-size.test.ts} +6 -6
- package/{tests/mongo-set-import-job-state.test.js → test/mongo-set-import-job-state.test.ts} +6 -6
- package/{tests/mongo-set-operation.test.js → test/mongo-set-operation.test.ts} +6 -6
- package/{tests/mongo-set-operations.test.js → test/mongo-set-operations.test.ts} +6 -6
- package/{tests/mongo-set-state.test.js → test/mongo-set-state.test.ts} +6 -6
- package/test/mongoLog-protect.test.ts +182 -0
- package/test/mongoLog.test.ts +191 -0
- package/{tests/testUtils.js → test/testUtils.ts} +49 -15
- package/test/utils.test.ts +360 -0
- package/tsconfig.json +62 -0
- package/tsconfig.test.json +17 -0
- package/dist/helpers/fix-utils.js +0 -39
- package/dist/helpers/fix-utils.js.map +0 -7
- package/eslint.config.js +0 -53
- package/tests/helpers/fix.test.js +0 -41
- package/tests/mongoLog.test.js +0 -84
package/dist/mongo.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/mongo.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable max-lines */\n\nimport {MongoClient, GridFSBucket, MongoDriverError} from 'mongodb';\nimport moment from 'moment';\nimport httpStatus from 'http-status';\nimport sanitize from 'mongo-sanitize';\nimport createDebugLogger from 'debug';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport {Error as ApiError, parseBoolean} from '@natlibfi/melinda-commons';\nimport {QUEUE_ITEM_STATE, IMPORT_JOB_STATE, OPERATIONS} from './constants.js';\nimport {logError} from './utils.js';\n\n//import isDeepStrictEqual from 'util';\n\n/* QueueItem:\n{\n \"correlationId\":\"FOO\",\n \"cataloger\":\"xxx0000\",\n \"oCatalogerIn\":\"xxx0000\"\n \"operation\":\"UPDATE\",\n \"operations\":[\"UPDATE\", \"CREATE\"]\n \"contentType\":\"application/json\",\n \"recordLoadParams\": {\n \"pActiveLibrary\": \"XXX00\",\n \"pInputFile\": \"filename.seq\",\n \"pRejectFile\": \"filename.rej\",\n \"pLogFile\": \"filename.syslog\",\n \"pOldNew\": \"NEW\"\n },\n \"queueItemState\":\"PENDING_QUEUING\",\n \"importJobState\": {\n \"CREATE\": \"EMPTY\",\n \"UPDATE\": \"EMPTY\"\n },\n blobSize: 1,\n records: [],\n errorMessage: '',\n errorStatus: '',\n \"creationTime\":\"2020-01-01T00:00:00.000Z\",\n \"modificationTime\":\"2020-01-01T00:00:01.000Z\",\n}\n*/\n\nexport default async function (MONGO_URI, collection, db = 'rest-api') {\n const logger = createLogger();\n const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo');\n const debugDev = debug.extend(':dev');\n\n // Connect to mongo (MONGO)\n const client = await MongoClient.connect(MONGO_URI);\n const dbConnection = client.db(db);\n const gridFSBucket = new GridFSBucket(dbConnection, {bucketName: collection});\n const operator = dbConnection.collection(collection);\n debugDev(`mongo: ${MONGO_URI}, db: ${db}, collection: ${collection}`);\n\n return {createPrio, createBulk, checkAndSetState, checkAndSetImportJobState, query, createProjection, queryById, checkTimeOut, remove, readContent, removeContent, getOne, getStream, setState, setImportJobState, pushIds, pushMessages, setOperation, setOperations, addBlobSize, setBlobSize};\n\n async function createPrio({correlationId, cataloger, oCatalogerIn, operation, operationSettings}) {\n debugDev('createPrio');\n const time = moment().toDate();\n const newQueueItem = {\n correlationId,\n cataloger,\n operation,\n operations: [operation],\n oCatalogerIn,\n operationSettings: {\n prio: true,\n ...operationSettings\n },\n queueItemState: QUEUE_ITEM_STATE.VALIDATOR.PENDING_VALIDATION,\n blobSize: 1,\n importJobState: {\n CREATE: IMPORT_JOB_STATE.EMPTY,\n UPDATE: IMPORT_JOB_STATE.EMPTY,\n FIX: IMPORT_JOB_STATE.EMPTY\n },\n records: [],\n errorMessage: '',\n errorStatus: '',\n creationTime: time,\n modificationTime: time\n };\n try {\n debugDev(`Inserting: ${JSON.stringify(newQueueItem)} to ${collection}}`);\n const result = await operator.insertOne(newQueueItem);\n debugDev(JSON.stringify(result));\n if (result.acknowledged) {\n logger.info(`New PRIO queue item for ${operation} ${correlationId} has been made in ${collection}`);\n return;\n }\n // TEST-COVERAGE: this error is not (currently) tested\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR);\n } catch (error) {\n // TEST-COVERAGE: this error is not (currently) tested\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n async function createBulk({correlationId, cataloger, oCatalogerIn, operation, contentType, recordLoadParams, stream, operationSettings}) {\n const time = moment().toDate();\n const newQueueItem = {\n correlationId,\n cataloger,\n oCatalogerIn,\n operation,\n operations: [operation],\n operationSettings: {\n prio: false,\n ...operationSettings\n },\n contentType,\n recordLoadParams,\n queueItemState: stream ? QUEUE_ITEM_STATE.VALIDATOR.UPLOADING : QUEUE_ITEM_STATE.VALIDATOR.WAITING_FOR_RECORDS,\n blobSize: 0,\n importJobState: {\n CREATE: IMPORT_JOB_STATE.EMPTY,\n UPDATE: IMPORT_JOB_STATE.EMPTY,\n FIX: IMPORT_JOB_STATE.EMPTY\n },\n records: [],\n errorMessage: '',\n errorStatus: '',\n creationTime: time,\n modificationTime: time\n };\n\n if (stream) {\n debug(`Creating streamBulk`);\n try {\n await new Promise((resolve, reject) => {\n const outputStream = gridFSBucket.openUploadStream(correlationId);\n\n stream\n .on('error', reject)\n .on('data', chunk => outputStream.write(chunk))\n .on('end', () => outputStream.end(undefined, undefined, () => {\n resolve(correlationId);\n }));\n });\n logger.info(`New BULK queue item for ${operation} ${correlationId} has been made in ${collection}!`);\n debug(`New BULK queue item for ${operation} ${correlationId} has been made in ${collection}!`);\n return operator.insertOne(newQueueItem);\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n logger.debug(`No stream`);\n debug(`Creating noStreamBulk`);\n if (!stream) {\n try {\n const result = await operator.insertOne(newQueueItem);\n if (result.acknowledged) {\n logger.info(`New noStream BULK queue item for ${operation} ${correlationId} has been made in ${collection}`);\n debug(`New noStream BULK queue item for ${operation} ${correlationId} has been made in ${collection}`);\n return {correlationId, queueItemState: QUEUE_ITEM_STATE.VALIDATOR.WAITING_FOR_RECORDS};\n }\n // TEST-COVERAGE: this error is not (currently) tested\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR);\n } catch (error) {\n // TEST-COVERAGE: this error is not (currently) tested\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n }\n\n // Check state that the queueItem has not waited too long and set state\n // Optionally set also queueItems errorStatus & errorMessage\n async function checkAndSetState({correlationId, state, errorMessage = undefined, errorStatus = undefined}) {\n // checkTimeOut returns true, if queueItem is fresher than 1 minute and it's state is not ABORT/ERROR/DONE\n // otherwise it sets queueItem and importJobStates to state ABORT and add errorStatus and errorMessage (408, 'Timeout')\n const timeOut = await checkTimeOut({correlationId});\n if (timeOut) {\n return setState({correlationId, state, errorMessage, errorStatus});\n }\n return false;\n }\n\n // Check state that the queueItem has not waited too long and set importJobState\n // Note: checkAndSetImportJobState cannot be used to set queueItems errorStatus & errorMessage (expect in case of a TimeOut)\n async function checkAndSetImportJobState({correlationId, operation, importJobState}) {\n // checkTimeOut returns true, if queueItem is fresher than 1 minute and it's state is not ABORT/ERROR/DONE\n // otherwise it sets queueItem and importJobStates to state ABORT and errorStatue and errorMessage (408, 'Timeout')\n logger.debug(`${correlationId}, ${importJobState}, ${operation}`);\n const timeOut = await checkTimeOut({correlationId, operation, importJobState});\n if (timeOut) {\n return setImportJobState({correlationId, operation, importJobState});\n }\n return false;\n }\n\n async function query(params, showParams = {}) {\n logger.debug(`Querying: ${JSON.stringify(params)}, ${JSON.stringify(showParams)}`);\n debug(`Querying: ${JSON.stringify(params)}, ${JSON.stringify(showParams)}`);\n const {limit = 1000, skip = 0, ...rest} = params;\n\n const result = await operator.find(rest, {projection: createProjection(showParams)})\n .limit(parseInt(limit, 10))\n .skip(parseInt(skip, 10))\n .toArray();\n logger.debug(`Query result: ${result.length > 0 ? 'Found!' : 'Not found!'}`);\n logger.silly(`${JSON.stringify(result)}`);\n debug(`${JSON.stringify(result)}`);\n return result;\n }\n\n // We default to NOT showing operations, operationSettings, recordLoadParams and importJobState when a queueItem is queried\n // These can all be shown with showAll\n // Single fields can be shown by showOperation, showOperationSettings, showRecordLoadParams and showImportJobState\n\n function createProjection(showParams = {}) {\n logger.silly(`Creating projection for query: ${JSON.stringify(showParams)}`);\n debug(`Creating projection for query: ${JSON.stringify(showParams)}`);\n const {showAll = 0, showOperations = 0, showOperationSettings = 0, showRecordLoadParams = 0, showImportJobState = 0} = showParams;\n const combinedShowParams = {\n showAll,\n showOperations,\n showOperationSettings,\n showRecordLoadParams,\n showImportJobState\n };\n logger.debug(`showAll: ${showAll}, showOperations: ${showOperations}, showOperationSettings: ${showOperationSettings}, showRecordLoadParams: ${showRecordLoadParams}, showImportJobState: ${showImportJobState}`);\n debug(`showAll: ${showAll}, showOperations: ${showOperations}, showOperationSettings: ${showOperationSettings}, showRecordLoadParams: ${showRecordLoadParams}, showImportJobState: ${showImportJobState}`);\n debug(`${JSON.stringify(combinedShowParams)}`);\n\n // NOTE: parseBoolean parses any non-empty, non-\"false\" string as true!\n if (parseBoolean(showAll)) {\n //if (showAll === true || showAll === '1' || showAll === 1) {\n debug(`ShowAll: ${showAll}`);\n return {\n _id: 0\n };\n }\n\n const showParamToField = {\n 'showOperations': 'operations',\n 'showOperationSettings': 'operationSettings',\n 'showRecordLoadParams': 'recordLoadParams',\n 'showImportJobState': 'importJobState'\n };\n\n const result = Object.keys(combinedShowParams)\n //.filter(param => param !== 'showAll' && combinedShowParams[param] !== true && combinedShowParams[param] !== 1 && combinedShowParams[param] !== '1')\n .filter(param => param !== 'showAll' && !parseBoolean(combinedShowParams[param]))\n .filter(param => showParamToField[param])\n .map((param) => showParamToField[param]);\n logger.silly(`We want to exclude from projection: ${JSON.stringify(result)}`);\n debug(`We want to exclude from projection: ${JSON.stringify(result)}`);\n\n\n const excludeObject = Object.fromEntries(result.map(param => [param, 0]));\n logger.silly(`We want to exclude from projection: ${JSON.stringify(excludeObject)}`);\n debug(`We want to exclude from projection: ${JSON.stringify(excludeObject)}`);\n\n\n return {\n _id: 0,\n ...excludeObject\n };\n }\n\n // Note: edited in v4.2.4 to return queueItem *after* possible timout has aborted it\n // Note: previous versions returned queueItem *before* its state/queueItemState is timeOuted\n async function queryById({correlationId, checkModTime = false}) {\n if (checkModTime) {\n debug(`queryById checkModTime: ${checkModTime}`);\n await checkTimeOut({correlationId});\n return queryById({correlationId});\n }\n const result = await operator.findOne({correlationId}, {projection: {_id: 0}});\n return result;\n }\n\n // Check that if the item has waited too long\n // If the last modification time for the queueItem is older than 1 minute\n // set state to ABORT and return false, otherwise return true\n // If the state is already ABORT or ERROR or DONE return false\n\n async function checkTimeOut({correlationId}) {\n const {modificationTime, queueItemState: oldState, importJobState} = await operator.findOne({correlationId});\n //debug(`${modificationTime} - oldState: ${oldState}`);\n // should we check for DONE too?\n if ([QUEUE_ITEM_STATE.ABORT, QUEUE_ITEM_STATE.ERROR, QUEUE_ITEM_STATE.DONE].includes(oldState)) {\n logger.silly(`${correlationId} has already state: ${oldState}`);\n return false;\n }\n\n const timeoutTime = moment(modificationTime).add(1, 'm');\n logger.silly(`${correlationId} timeOut @ ${timeoutTime}`);\n\n if (timeoutTime.isBefore()) {\n const finalImportJobStates = [IMPORT_JOB_STATE.ABORT, IMPORT_JOB_STATE.DONE, IMPORT_JOB_STATE.EMPTY, IMPORT_JOB_STATE.ERROR];\n if (!finalImportJobStates.includes(importJobState.CREATE)) {\n await setImportJobState({correlationId, operation: 'CREATE', importJobState: IMPORT_JOB_STATE.ABORT});\n }\n\n if (!finalImportJobStates.includes(importJobState.UPDATE)) {\n await setImportJobState({correlationId, operation: 'UPDATE', importJobState: IMPORT_JOB_STATE.ABORT});\n }\n\n if (!finalImportJobStates.includes(importJobState.FIX)) {\n await setImportJobState({correlationId, operation: 'FIX', importJobState: IMPORT_JOB_STATE.ABORT});\n }\n\n await setState({correlationId, state: QUEUE_ITEM_STATE.ABORT, errorStatus: httpStatus.REQUEST_TIMEOUT, errorMessage: `Timeout in ${oldState}`});\n\n return false;\n }\n\n return true;\n }\n\n async function remove(params) {\n logger.silly(`${JSON.stringify(params)}`);\n logger.info(`Removing from Mongo (${collection}) id: ${params.correlationId}`);\n debug(`${JSON.stringify(params)}`);\n debug(`Removing from Mongo (${collection}) id: ${params.correlationId}`);\n const clean = sanitize(params.correlationId);\n logger.silly(`mongo/remove: clean: ${JSON.stringify(clean)}`);\n debug(`mongo/remove: clean: ${JSON.stringify(clean)}`);\n\n\n try {\n //const metadataResult = await getFileMetadata({filename: clean});\n //logger.debug(`mongo/remove: metadataResult: ${JSON.stringify(metadataResult)}`);\n const noContent = await removeContent({correlationId: params.correlationId});\n debug(`noContent (removeContent result): ${JSON.stringify(noContent)}`);\n if (noContent) {\n const deleteResult = await operator.deleteOne({correlationId: clean});\n debug(`deleteResult: ${JSON.stringify(deleteResult)}`);\n return true;\n }\n } catch (err) {\n // TEST-COVERAGE: this error is not (currently) tested\n if (err instanceof MongoDriverError) {\n debug(err);\n if (err.message.indexOf('File not found for id') !== -1) {\n logger.silly(`mongo/remove: File not found, removing queueItem ${JSON.stringify(clean)} from ${collection}`);\n debug(`mongo/remove: File not found, removing queueItem ${JSON.stringify(clean)} from ${collection}`);\n await operator.deleteOne({correlationId: clean});\n return true;\n }\n logger.error(err.message);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, err.message);\n }\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, err.message);\n }\n }\n\n async function readContent(correlationId) {\n logger.info(`Reading content from mongo for id: ${correlationId} in ${collection}`);\n debug(`Reading content from mongo for id: ${correlationId} in ${collection}`);\n\n const clean = sanitize(correlationId);\n debug(clean);\n\n const result = await operator.findOne({correlationId: clean}); // njsscan-ignore: node_nosqli_injection\n debug(result);\n if (result) {\n const {operationSettings} = result;\n if (operationSettings.prio === false && operationSettings.noStream === false) {\n return {\n contentType: result.contentType,\n readStream: gridFSBucket.openDownloadStreamByName(clean)\n };\n }\n logger.debug(`OperationSettings for ${correlationId}: ${JSON.stringify(operationSettings)}`);\n debug(`OperationSettings for ${correlationId}: ${JSON.stringify(operationSettings)}`);\n debug(`Content is only available for streamBulk jobs. ${correlationId} is not a streamBulk job.`);\n throw new ApiError(httpStatus.BAD_REQUEST, {message: `Content is only available for streamBulk jobs. ${correlationId} is not a streamBulk job.`});\n }\n\n throw new ApiError(httpStatus.NOT_FOUND, {message: `Job ${correlationId} not found.`});\n }\n\n async function removeContent(params) {\n logger.info(`Removing content from mongo for id: ${params.correlationId} in ${collection}`);\n debug(`Removing content from mongo for id: ${params.correlationId} in ${collection}`);\n const clean = sanitize(params.correlationId);\n\n const result = await gridFSBucket.find({filename: clean}).toArray();\n debug(`mongo/removeContent: find bucket result ${JSON.stringify(result)}`);\n\n\n if (result.length > 0) {\n // Note: we assume and handle just one file for filename!\n const [firstBucketResult] = result;\n const fileId = firstBucketResult._id;\n\n await gridFSBucket.delete(fileId);\n return true;\n }\n\n logger.debug(`No files for ${params.correlationId} to delete`);\n return true;\n }\n\n function getOne({queueItemState, importJobState = undefined}) {\n //params example: \"queueItemState\": \"IMPORTER.IN_QUEUE\", \"importJobState\":{\"importJobState.UPDATE\": \"IN_QUEUE\"}\n logger.silly(`queueItemState: ${queueItemState}, importJobState: ${JSON.stringify(importJobState)}`);\n //debug(`queueItemState: ${queueItemState}, importJobState: ${JSON.stringify(importJobState)}`);\n const cleanQueueItemState = queueItemState ? {queueItemState: sanitize(queueItemState)} : undefined;\n const options = {projection: {_id: 0}};\n\n try {\n\n // Just queueItemState\n if (queueItemState && importJobState === undefined) {\n logger.silly(`Checking DB ${collection} for just ${JSON.stringify(cleanQueueItemState.queueItemState)}`);\n //debug(`Checking DB ${collection} for just ${JSON.stringify(cleanQueueItemState.queueItemState)}`);\n return operator.findOne({...cleanQueueItemState}, options);\n }\n\n // importJobState\n if (importJobState && queueItemState === undefined) {\n logger.silly(`Checking DB ${collection} for ${JSON.stringify(importJobState)}`);\n //debug(`Checking DB ${collection} for ${JSON.stringify(importJobState)}`);\n return operator.findOne({...importJobState}, options);\n }\n\n // importJobState and queueItemState\n if (importJobState && queueItemState) {\n logger.silly(`Checking DB ${collection} for ${queueItemState} and ${JSON.stringify(importJobState)}`);\n //debug(`Checking DB ${collection} for ${queueItemState} and ${JSON.stringify(importJobState)}`);\n return operator.findOne({...cleanQueueItemState, ...importJobState}, options);\n }\n\n logger.debug(`getOne not working!`);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, 'Missing parameters, cannot get queueItem');\n\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n function getStream(correlationId) {\n logger.info(`Forming stream from mongo for ${correlationId} in ${collection}`);\n const clean = sanitize(correlationId);\n try {\n // Return content stream\n return gridFSBucket.openDownloadStreamByName(clean);\n } catch (error) {\n // TEST-COVERAGE: this error is not (currently) tested\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n async function pushIds({correlationId, handledIds, rejectedIds}) {\n logger.verbose(`Push ids (${handledIds.length}) and rejectedIds (${rejectedIds.length}) ${correlationId} to ${collection}`);\n logger.debug(`ids (${handledIds.length}): ${JSON.stringify(handledIds)}, rejectedIds ${rejectedIds.length}: ${JSON.stringify(rejectedIds)}`);\n const clean = sanitize(correlationId);\n await operator.updateOne({\n correlationId: clean\n }, {\n $set: {\n modificationTime: moment().toDate()\n },\n $push: {\n handledIds: {$each: handledIds},\n rejectedIds: {$each: rejectedIds}\n }\n });\n }\n\n async function pushMessages({correlationId, messages, messageField = 'messages'}) {\n logger.verbose(`Push messages (${messages.length}) to ${messageField} ${correlationId} to ${collection}`);\n logger.silly(`Messages (${messages.length}): ${JSON.stringify(messages)}}`);\n const clean = sanitize(correlationId);\n const cleanMessageField = sanitize(messageField);\n debug(`${messageField} -> ${cleanMessageField}`);\n await operator.updateOne({\n correlationId: clean\n }, {\n $set: {\n modificationTime: moment().toDate()\n },\n $push: {\n [cleanMessageField]: {$each: messages}\n }\n });\n }\n\n function setState({correlationId, state, errorMessage = undefined, errorStatus = undefined}) {\n const errorString = errorMessage || errorStatus ? `, Error message: '${JSON.stringify(errorMessage) || ''}', Error status: '${errorStatus || ''}'` : '';\n logger.info(`Setting queue-item state ${state} for ${correlationId}${errorString} to ${collection}`);\n\n const stateInQueueItemStates = Object.values(QUEUE_ITEM_STATE).indexOf(state) > -1;\n const stateInQueueItemStatesValidator = Object.values(QUEUE_ITEM_STATE.VALIDATOR).indexOf(state) > -1;\n const stateInQueueItemStatesImporter = Object.values(QUEUE_ITEM_STATE.IMPORTER).indexOf(state) > -1;\n if (!stateInQueueItemStates && !stateInQueueItemStatesValidator && !stateInQueueItemStatesImporter) {\n debug(`Trying to set invalid state ${state}`);\n throw new ApiError(httpStatus.BAD_REQUEST, 'Trying to set invalid state');\n }\n\n const clean = sanitize(correlationId);\n const updateValues = {\n queueItemState: state,\n modificationTime: moment().toDate(),\n errorMessage,\n errorStatus\n };\n\n // Do not update value that are undefined\n Object.keys(updateValues).forEach(key => updateValues[key] === undefined && delete updateValues[key]);\n\n return operator\n .findOneAndUpdate(\n {correlationId: clean},\n {$set: updateValues},\n {projection: {_id: 0}, returnDocument: 'after'}\n );\n }\n\n function setImportJobState({correlationId, operation, importJobState}) {\n\n // should this also get importJobState as previously created object? {}\n logger.info(`Setting queue-item importJobState: {${operation}: ${importJobState}} for ${correlationId}`);\n debug(`Setting queue-item importJobState: {${operation}: ${importJobState}} for ${correlationId}`);\n const cleanCorrelationId = sanitize(correlationId);\n const cleanImportJobState = sanitize(importJobState);\n\n if (!(operation in OPERATIONS)) {\n debug(`Error: ${operation} is not in ${JSON.stringify(OPERATIONS)}`);\n throw new ApiError(httpStatus.BAD_REQUEST, 'Invalid operation for import job state');\n }\n\n if (!(cleanImportJobState in IMPORT_JOB_STATE)) {\n debug(`Error: ${cleanImportJobState} is not in ${JSON.stringify(IMPORT_JOB_STATE)}`);\n throw new ApiError(httpStatus.BAD_REQUEST, 'Invalid import job state');\n }\n\n const newJobState = getNewJobState(operation, cleanImportJobState);\n\n\n function getNewJobState(operation, cleanImportJobState) {\n if (operation === OPERATIONS.CREATE) {\n return {'importJobState.CREATE': cleanImportJobState};\n }\n if (operation === OPERATIONS.UPDATE) {\n return {'importJobState.UPDATE': cleanImportJobState};\n }\n if (operation === OPERATIONS.FIX) {\n return {'importJobState.FIX': cleanImportJobState};\n }\n // istanbul ignore next\n // Ignoring for coverage - we error this already\n throw new ApiError('400', 'Invalid operation for import job state');\n }\n\n return operator.findOneAndUpdate({\n correlationId: cleanCorrelationId\n }, {\n $set: {\n ...newJobState,\n modificationTime: moment().toDate()\n }\n }, {projection: {_id: 0}, returnDocument: 'after'});\n }\n\n async function setOperation({correlationId, operation}) {\n const newOperation = operation;\n const {operation: oldOperation} = await operator.findOne({correlationId});\n logger.info(`Setting queue-item operation from ${oldOperation} to ${newOperation} for ${correlationId} to ${collection}`);\n const cleanCorrelationId = sanitize(correlationId);\n const cleanNewOperation = sanitize(newOperation);\n\n const result = await operator.findOneAndUpdate({\n correlationId: cleanCorrelationId\n }, {\n $set: {\n operation: cleanNewOperation,\n modificationTime: moment().toDate()\n }\n }, {projection: {_id: 0}, returnDocument: 'after'});\n debugDev(`${JSON.stringify(result)}`);\n return result.ok || result;\n // logger.debug(JSON.stringify(result));\n }\n\n async function setOperations({correlationId, addOperation, removeOperation = undefined}) {\n const cleanCorrelationId = sanitize(correlationId);\n\n const queueItem = await operator.findOne({correlationId: cleanCorrelationId});\n logger.silly(`We found a queueItem: ${JSON.stringify(queueItem)}`);\n\n const oldOperations = queueItem.operations;\n\n logger.info(`Setting queue-item operations from ${JSON.stringify(oldOperations)} by adding ${addOperation} and removing ${removeOperation} for ${correlationId} to ${collection}`);\n\n const operationsAfterRemove = oldOperations.filter(operation => operation !== removeOperation);\n const operationsAfterRemoveAndAdd = operationsAfterRemove.includes(addOperation) ? operationsAfterRemove : [...operationsAfterRemove, addOperation];\n\n logger.silly(`operationsAfterRemove: ${operationsAfterRemove}`);\n logger.silly(`operationAfterRemoveAndAdd: ${operationsAfterRemoveAndAdd}`);\n\n const result = await operator.findOneAndUpdate({\n correlationId: cleanCorrelationId\n }, {\n $set: {\n operations: operationsAfterRemoveAndAdd,\n modificationTime: moment().toDate()\n }\n }, {projection: {_id: 0}, returnDocument: 'after'});\n debugDev(`${JSON.stringify(result)}`);\n return result.ok || result;\n // logger.debug(JSON.stringify(result));\n }\n\n async function addBlobSize({correlationId}) {\n const cleanCorrelationId = sanitize(correlationId);\n\n const result = await operator.findOneAndUpdate({\n correlationId: cleanCorrelationId,\n queueItemState: QUEUE_ITEM_STATE.VALIDATOR.WAITING_FOR_RECORDS\n }, {\n $inc: {\n blobSize: 1\n },\n $set: {\n modificationTime: moment().toDate()\n }\n }, {projection: {_id: 0}, returnDocument: 'after'});\n\n logger.verbose(`AddBlobSizeResult in mongo: ${JSON.stringify(result)}`);\n debugDev(`${JSON.stringify(result)}`);\n return result;\n }\n\n async function setBlobSize({correlationId, blobSize}) {\n const cleanCorrelationId = sanitize(correlationId);\n const cleanBlobSize = sanitize(blobSize);\n\n const result = await operator.findOneAndUpdate({\n correlationId: cleanCorrelationId\n }, {\n $set: {\n blobSize: cleanBlobSize,\n modificationTime: moment().toDate()\n }\n }, {projection: {_id: 0}, returnDocument: 'after'});\n\n logger.verbose(`SetBlobSizeResult in mongo: ${JSON.stringify(result)}`);\n debugDev(`${JSON.stringify(result)}`);\n return result;\n }\n\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["operation", "cleanImportJobState"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"mongo.js","sourceRoot":"","sources":["../src/mongo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoError.d.ts","sourceRoot":"","sources":["../src/mongoError.ts"],"names":[],"mappings":"AAgBA,wBAAsB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAYxE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MongoDriverError } from 'mongodb';
|
|
2
|
+
import httpStatus from 'http-status';
|
|
3
|
+
import { Error as ApiError } from '@natlibfi/melinda-commons';
|
|
4
|
+
import { logError } from "./utils.js";
|
|
5
|
+
export async function withMongoError(fn) {
|
|
6
|
+
try {
|
|
7
|
+
return await fn();
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
if (!(error instanceof MongoDriverError)) {
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
const apiError = error;
|
|
14
|
+
const errorMessage = apiError.payload || apiError.message || '';
|
|
15
|
+
logError(error);
|
|
16
|
+
throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=mongoError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoError.js","sourceRoot":"","sources":["../src/mongoError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,KAAK,IAAI,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAapC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAI,EAAoB;IAC1D,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,KAA4B,CAAC;QAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAChE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,kBAAkB,YAAY,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { DeleteResult, UpdateResult, WithId } from 'mongodb';
|
|
2
|
+
import { LOG_ITEM_TYPE } from './constants.ts';
|
|
3
|
+
export type LogItemType = (typeof LOG_ITEM_TYPE)[keyof typeof LOG_ITEM_TYPE];
|
|
4
|
+
export interface LogItem {
|
|
5
|
+
logItemType: string;
|
|
6
|
+
correlationId: string;
|
|
7
|
+
cataloger?: string;
|
|
8
|
+
blobSequence?: number;
|
|
9
|
+
blobSequenceStart?: number;
|
|
10
|
+
blobSequenceEnd?: number;
|
|
11
|
+
protected?: boolean;
|
|
12
|
+
creationTime?: Date;
|
|
13
|
+
modificationTime?: Date;
|
|
14
|
+
}
|
|
15
|
+
export interface LogQueryParams {
|
|
16
|
+
limit?: number | string;
|
|
17
|
+
skip?: number | string;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface ExpandedLogListParams {
|
|
21
|
+
logItemTypes?: unknown;
|
|
22
|
+
catalogers?: string[];
|
|
23
|
+
dateBefore?: string | Date;
|
|
24
|
+
dateAfter?: string | Date;
|
|
25
|
+
test?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ExpandedLogListItem {
|
|
28
|
+
correlationId: string;
|
|
29
|
+
logItemType: string;
|
|
30
|
+
cataloger: string;
|
|
31
|
+
creationTime: string | Date;
|
|
32
|
+
logCount: number;
|
|
33
|
+
}
|
|
34
|
+
export interface MongoLogOperator {
|
|
35
|
+
addLogItem: (logItem: LogItem) => Promise<void>;
|
|
36
|
+
query: (params: LogQueryParams) => Promise<WithId<LogItem>[]>;
|
|
37
|
+
queryById: (correlationId: string, logItemType?: string, skip?: number, limit?: number) => Promise<WithId<LogItem>[]>;
|
|
38
|
+
getListOfLogs: (logItemType?: string) => Promise<string[]>;
|
|
39
|
+
getListOfCatalogers: () => Promise<string[]>;
|
|
40
|
+
getListOfCorrelationIds: () => Promise<string[]>;
|
|
41
|
+
getExpandedListOfLogs: (params: ExpandedLogListParams) => Promise<ExpandedLogListItem[]>;
|
|
42
|
+
protect: (correlationId: string, blobSequence?: number | string) => Promise<UpdateResult>;
|
|
43
|
+
unprotect: (correlationId: string, blobSequence?: number | string) => Promise<UpdateResult>;
|
|
44
|
+
remove: (correlationId: string, force?: boolean) => Promise<DeleteResult>;
|
|
45
|
+
removeBySequences: (correlationId: string, sequences?: (number | string)[], force?: boolean) => Promise<DeleteResult>;
|
|
46
|
+
}
|
|
47
|
+
export default function (MONGO_URI: string, dbName?: string, deps?: {
|
|
48
|
+
collection?: unknown;
|
|
49
|
+
}): Promise<MongoLogOperator>;
|
|
50
|
+
//# sourceMappingURL=mongoLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoLog.d.ts","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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"}
|