UNPKG

@itrocks/mysql-maintainer

Version:

Reactively maintains database structure by updating schema and retrying on MySQL errors

30 lines 1.04 kB
import { SqlError } from 'mariadb'; import { MysqlMaintainer } from './mysql-maintainer'; export class Contextual { context = []; superQuery = () => new Promise(() => { }); async applyTo(connection) { connection.context = []; connection.superQuery = connection.query; connection.query = Contextual.prototype.query; return connection; } async query(sql, values) { try { return await this.superQuery(sql, values); } catch (error) { if (!(error instanceof SqlError) || !error.code || !['ER_BAD_FIELD_ERROR'].includes(error.code)) { throw error; } // @ts-ignore query applies to a Connection if (await new MysqlMaintainer(this).manageError(error, this.context[this.context.length - 1], sql, values)) { return this.query(sql, values); } throw error; } } } //# sourceMappingURL=contextual-connection.js.map