UNPKG

@syngrisi/syngrisi

Version:
45 lines (38 loc) 1.75 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ import { Run } from '@models'; import { errMsg } from '@utils'; import log from "@logger"; export async function createRunIfNotExist(params: any, logsMeta = {}): Promise<any> { const logOpts = { scope: 'createRunIfNotExist', msgType: 'CREATE', itemType: 'VRSRun', }; let run; try { if (!params.name || !params.app || !params.ident) { throw new Error(`Cannot create run, wrong params: '${JSON.stringify(params)}'`); } log.debug(`try to create run if exist, params: '${JSON.stringify(params)}'`, { ...logOpts, ...logsMeta }); run = await Run.findOne({ ident: params.ident }).exec(); if (run) { log.debug(`run already exist: '${JSON.stringify(params)}'`, { ...logOpts, ...logsMeta }); return run; } run = await Run.create({ ...params, createdDate: params.createdDate || new Date(), }); log.debug(`run with name: '${params.name}' was created: ${run}`, { ...logOpts, ...logsMeta }); return run; } catch (e: any) { if (e.code === 11000) { log.warn(`run key duplication collision: '${JSON.stringify(params)}', error: '${errMsg(e)}'`, { ...logOpts, ...logsMeta }); run = await Run.findOne({ name: params.name, ident: params.ident }); log.warn(`run key duplication collision, found: '${JSON.stringify(run)}'`, { ...logOpts, ...logsMeta }); if (run) return run; } log.error(`cannot create run, params: '${JSON.stringify(params)}', error: '${errMsg(e)}', obj: ${JSON.stringify(e)}`, { ...logOpts, ...logsMeta }); throw e; } }