nukak-mysql
Version:
flexible and efficient ORM, with declarative JSON syntax and smart type-safety
43 lines • 5.49 kB
JavaScript
import { AbstractSqlQuerier } from 'nukak/querier';
import { MySqlDialect } from './mysqlDialect.js';
export class MySql2Querier extends AbstractSqlQuerier {
connect;
extra;
conn;
constructor(connect, extra) {
super(new MySqlDialect(extra?.namingStrategy));
this.connect = connect;
this.extra = extra;
}
async internalAll(query, values) {
this.extra?.logger?.(query, values);
await this.lazyConnect();
const [res] = await this.conn.query(query, values);
return res;
}
async internalRun(query, values) {
this.extra?.logger?.(query, values);
await this.lazyConnect();
const [res] = await this.conn.query(query, values);
const ids = res.insertId
? Array(res.affectedRows)
.fill(res.insertId)
.map((i, index) => i + index)
: [];
return { changes: res.affectedRows, ids, firstId: ids[0] };
}
async lazyConnect() {
this.conn ??= await this.connect();
}
async internalRelease() {
if (this.hasOpenTransaction) {
throw TypeError('pending transaction');
}
if (!this.conn) {
return;
}
await this.conn.release();
this.conn = undefined;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9teXNxbDJRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsTUFBTSxPQUFPLGFBQWMsU0FBUSxrQkFBa0I7SUFJeEM7SUFDQTtJQUpYLElBQUksQ0FBaUI7SUFFckIsWUFDVyxPQUFzQyxFQUN0QyxLQUFvQjtRQUU3QixLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFIdEMsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7UUFDdEMsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUcvQixDQUFDO0lBRVEsS0FBSyxDQUFDLFdBQVcsQ0FBSSxLQUFhLEVBQUUsTUFBa0I7UUFDN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBVSxDQUFDO0lBQ3BCLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFrQjtRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVEsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVE7WUFDdEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO2lCQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztpQkFDbEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUE4QixDQUFDO0lBQ3pGLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVRLEtBQUssQ0FBQyxlQUFlO1FBQzVCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9vbENvbm5lY3Rpb24gfSBmcm9tICdteXNxbDIvcHJvbWlzZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFNxbFF1ZXJpZXIgfSBmcm9tICdudWthay9xdWVyaWVyJztcbmltcG9ydCB0eXBlIHsgRXh0cmFPcHRpb25zLCBRdWVyeVVwZGF0ZVJlc3VsdCB9IGZyb20gJ251a2FrL3R5cGUnO1xuaW1wb3J0IHsgTXlTcWxEaWFsZWN0IH0gZnJvbSAnLi9teXNxbERpYWxlY3QuanMnO1xuXG5leHBvcnQgY2xhc3MgTXlTcWwyUXVlcmllciBleHRlbmRzIEFic3RyYWN0U3FsUXVlcmllciB7XG4gIGNvbm46IFBvb2xDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGNvbm5lY3Q6ICgpID0+IFByb21pc2U8UG9vbENvbm5lY3Rpb24+LFxuICAgIHJlYWRvbmx5IGV4dHJhPzogRXh0cmFPcHRpb25zLFxuICApIHtcbiAgICBzdXBlcihuZXcgTXlTcWxEaWFsZWN0KGV4dHJhPy5uYW1pbmdTdHJhdGVneSkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxBbGw8VD4ocXVlcnk6IHN0cmluZywgdmFsdWVzPzogdW5rbm93bltdKSB7XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4ocXVlcnksIHZhbHVlcyk7XG4gICAgYXdhaXQgdGhpcy5sYXp5Q29ubmVjdCgpO1xuICAgIGNvbnN0IFtyZXNdID0gYXdhaXQgdGhpcy5jb25uLnF1ZXJ5KHF1ZXJ5LCB2YWx1ZXMpO1xuICAgIHJldHVybiByZXMgYXMgVFtdO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxSdW4ocXVlcnk6IHN0cmluZywgdmFsdWVzPzogdW5rbm93bltdKSB7XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4ocXVlcnksIHZhbHVlcyk7XG4gICAgYXdhaXQgdGhpcy5sYXp5Q29ubmVjdCgpO1xuICAgIGNvbnN0IFtyZXNdOiBhbnkgPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgY29uc3QgaWRzID0gcmVzLmluc2VydElkXG4gICAgICA/IEFycmF5KHJlcy5hZmZlY3RlZFJvd3MpXG4gICAgICAgICAgLmZpbGwocmVzLmluc2VydElkKVxuICAgICAgICAgIC5tYXAoKGksIGluZGV4KSA9PiBpICsgaW5kZXgpXG4gICAgICA6IFtdO1xuICAgIHJldHVybiB7IGNoYW5nZXM6IHJlcy5hZmZlY3RlZFJvd3MsIGlkcywgZmlyc3RJZDogaWRzWzBdIH0gc2F0aXNmaWVzIFF1ZXJ5VXBkYXRlUmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgbGF6eUNvbm5lY3QoKSB7XG4gICAgdGhpcy5jb25uID8/PSBhd2FpdCB0aGlzLmNvbm5lY3QoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGludGVybmFsUmVsZWFzZSgpIHtcbiAgICBpZiAodGhpcy5oYXNPcGVuVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcigncGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29ubikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvbm4ucmVsZWFzZSgpO1xuICAgIHRoaXMuY29ubiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19