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 => return new Promise<void>(resolve =>
{ {
this.#logger?.info('Closing pool');
if (!this.#pool) if (!this.#pool)
{ {
this.#logger?.debug('Pool was already closed');
resolve(); return; resolve(); return;
} }
this.#pool.end(() => this.#pool.end(() =>
{ {
this.#logger?.status('Pool closed');
this.#pool?.removeAllListeners(); this.#pool?.removeAllListeners();
resolve(); resolve();
}); });

View File

@ -1,5 +1,5 @@
import { inspect } from 'node:util'; 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'; import { IServer, ILogger } from './interfaces/index.js';
interface Credentials { 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 * A dedicated class to locally wrap the mongodb API wrapper
* *