UNPKG

nukak-mysql

Version:

flexible and efficient ORM, with declarative JSON syntax and smart type-safety

53 lines 5.77 kB
import { AbstractSqlQuerier } from 'nukak/querier'; import { MySqlDialect } from './mysqlDialect.js'; export class MySql2Querier extends AbstractSqlQuerier { connect; extra; conn; constructor(connect, extra) { super(new MySqlDialect()); this.connect = connect; this.extra = extra; } async all(query) { this.extra?.logger?.(query); await this.lazyConnect(); try { const [res] = await this.conn.query(query); return res; } finally { await this.releaseIfFree(); } } async run(query) { this.extra?.logger?.(query); await this.lazyConnect(); try { const [res] = await this.conn.query(query); const ids = res.insertId ? Array(res.affectedRows) .fill(res.insertId) .map((i, index) => i + index) : []; return { changes: res.affectedRows, ids, firstId: ids[0] }; } finally { await this.releaseIfFree(); } } async lazyConnect() { this.conn ??= await this.connect(); } async release() { if (this.hasOpenTransaction) { throw TypeError('pending transaction'); } if (!this.conn) { return; } await this.conn.release(); this.conn = undefined; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9teXNxbDJRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsTUFBTSxPQUFPLGFBQWMsU0FBUSxrQkFBa0I7SUFJeEM7SUFDQTtJQUpYLElBQUksQ0FBaUI7SUFFckIsWUFDVyxPQUFzQyxFQUN0QyxLQUFvQjtRQUU3QixLQUFLLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBSGpCLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQWU7SUFHL0IsQ0FBQztJQUVRLEtBQUssQ0FBQyxHQUFHLENBQUksS0FBYTtRQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE9BQU8sR0FBVSxDQUFDO1FBQ3BCLENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVE7Z0JBQ3RCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztxQkFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7cUJBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7UUFDekYsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVRLEtBQUssQ0FBQyxPQUFPO1FBQ3BCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvb2xDb25uZWN0aW9uIH0gZnJvbSAnbXlzcWwyL3Byb21pc2UnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYU9wdGlvbnMsIFF1ZXJ5VXBkYXRlUmVzdWx0IH0gZnJvbSAnbnVrYWsvdHlwZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFNxbFF1ZXJpZXIgfSBmcm9tICdudWthay9xdWVyaWVyJztcbmltcG9ydCB7IE15U3FsRGlhbGVjdCB9IGZyb20gJy4vbXlzcWxEaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIE15U3FsMlF1ZXJpZXIgZXh0ZW5kcyBBYnN0cmFjdFNxbFF1ZXJpZXIge1xuICBjb25uOiBQb29sQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb25uZWN0OiAoKSA9PiBQcm9taXNlPFBvb2xDb25uZWN0aW9uPixcbiAgICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIobmV3IE15U3FsRGlhbGVjdCgpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGFsbDxUPihxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4ocXVlcnkpO1xuICAgIGF3YWl0IHRoaXMubGF6eUNvbm5lY3QoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW3Jlc10gPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnkpO1xuICAgICAgcmV0dXJuIHJlcyBhcyBUW107XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVsZWFzZUlmRnJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHJ1bihxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4ocXVlcnkpO1xuICAgIGF3YWl0IHRoaXMubGF6eUNvbm5lY3QoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW3Jlc106IGFueSA9IGF3YWl0IHRoaXMuY29ubi5xdWVyeShxdWVyeSk7XG4gICAgICBjb25zdCBpZHMgPSByZXMuaW5zZXJ0SWRcbiAgICAgICAgPyBBcnJheShyZXMuYWZmZWN0ZWRSb3dzKVxuICAgICAgICAgICAgLmZpbGwocmVzLmluc2VydElkKVxuICAgICAgICAgICAgLm1hcCgoaSwgaW5kZXgpID0+IGkgKyBpbmRleClcbiAgICAgICAgOiBbXTtcbiAgICAgIHJldHVybiB7IGNoYW5nZXM6IHJlcy5hZmZlY3RlZFJvd3MsIGlkcywgZmlyc3RJZDogaWRzWzBdIH0gc2F0aXNmaWVzIFF1ZXJ5VXBkYXRlUmVzdWx0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbGVhc2VJZkZyZWUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsYXp5Q29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbm4gPz89IGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgcmVsZWFzZSgpIHtcbiAgICBpZiAodGhpcy5oYXNPcGVuVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcigncGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29ubikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvbm4ucmVsZWFzZSgpO1xuICAgIHRoaXMuY29ubiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19