Helper func to parse validation error

This commit is contained in:
Erik 2024-10-12 13:51:22 +03:00
parent 5eacb93966
commit ea31ace0eb
2 changed files with 14 additions and 1 deletions

View File

@ -277,12 +277,15 @@ class MariaDB
}
return new Promise<void>(resolve =>
{
this.#logger?.info('Closing pool');
if (!this.#pool)
{
this.#logger?.debug('Pool was already closed');
resolve(); return;
}
this.#pool.end(() =>
{
this.#logger?.status('Pool closed');
this.#pool?.removeAllListeners();
resolve();
});

View File

@ -1,5 +1,5 @@
import { inspect } from 'node:util';
import { MongoClient, MongoClientOptions, Db, Document, WithId, ObjectId, Filter, IndexSpecification, CreateIndexesOptions, FindOptions, ModifyResult, DistinctOptions } from 'mongodb';
import { MongoClient, MongoClientOptions, Db, Document, WithId, ObjectId, Filter, IndexSpecification, CreateIndexesOptions, FindOptions, ModifyResult, DistinctOptions, MongoServerError } from 'mongodb';
import { IServer, ILogger } from './interfaces/index.js';
interface Credentials {
@ -40,6 +40,16 @@ const objIsSubset = (superObj: StringIndexable, subObj: StringIndexable): boolea
});
};
export const parseValidationError = (error: MongoServerError) =>
{
if (error.code !== 121 || !error.errInfo)
throw new Error('Not a validation error');
const rule = error.errInfo.details.schemaRulesNotSatisfied;
const missing = rule.missingProperties as string[];
const required = rule.specifiedAs.required as string[];
return { missing, required };
};
/**
* A dedicated class to locally wrap the mongodb API wrapper
*