UNPKG

nukak-postgres

Version:

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

39 lines 5.06 kB
import { AbstractSqlQuerier } from 'nukak/querier'; import { PostgresDialect } from './postgresDialect.js'; export class PgQuerier extends AbstractSqlQuerier { connect; extra; conn; constructor(connect, extra) { super(new PostgresDialect(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.rows; } async internalRun(query, values) { this.extra?.logger?.(query, values); await this.lazyConnect(); const { rowCount: changes, rows = [] } = await this.conn.query(query, values); const ids = rows.map((r) => r.id); return { changes, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGdRdWVyaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BnUXVlcmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELE1BQU0sT0FBTyxTQUFVLFNBQVEsa0JBQWtCO0lBSXBDO0lBQ0E7SUFKWCxJQUFJLENBQWE7SUFFakIsWUFDVyxPQUFrQyxFQUNsQyxLQUFvQjtRQUU3QixLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFIekMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUcvQixDQUFDO0lBRVEsS0FBSyxDQUFDLFdBQVcsQ0FBSSxLQUFhLEVBQUUsTUFBa0I7UUFDN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFrQjtRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQVEsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RTcWxRdWVyaWVyIH0gZnJvbSAnbnVrYWsvcXVlcmllcic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhT3B0aW9ucywgUXVlcnlVcGRhdGVSZXN1bHQgfSBmcm9tICdudWthay90eXBlJztcbmltcG9ydCB0eXBlIHsgUG9vbENsaWVudCB9IGZyb20gJ3BnJztcbmltcG9ydCB7IFBvc3RncmVzRGlhbGVjdCB9IGZyb20gJy4vcG9zdGdyZXNEaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIFBnUXVlcmllciBleHRlbmRzIEFic3RyYWN0U3FsUXVlcmllciB7XG4gIGNvbm46IFBvb2xDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29ubmVjdDogKCkgPT4gUHJvbWlzZTxQb29sQ2xpZW50PixcbiAgICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIobmV3IFBvc3RncmVzRGlhbGVjdChleHRyYT8ubmFtaW5nU3RyYXRlZ3kpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGludGVybmFsQWxsPFQ+KHF1ZXJ5OiBzdHJpbmcsIHZhbHVlcz86IHVua25vd25bXSkge1xuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKHF1ZXJ5LCB2YWx1ZXMpO1xuICAgIGF3YWl0IHRoaXMubGF6eUNvbm5lY3QoKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnk8VD4ocXVlcnksIHZhbHVlcyk7XG4gICAgcmV0dXJuIHJlcy5yb3dzO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxSdW4ocXVlcnk6IHN0cmluZywgdmFsdWVzPzogdW5rbm93bltdKSB7XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4ocXVlcnksIHZhbHVlcyk7XG4gICAgYXdhaXQgdGhpcy5sYXp5Q29ubmVjdCgpO1xuICAgIGNvbnN0IHsgcm93Q291bnQ6IGNoYW5nZXMsIHJvd3MgPSBbXSB9OiBhbnkgPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgY29uc3QgaWRzID0gcm93cy5tYXAoKHI6IGFueSkgPT4gci5pZCk7XG4gICAgcmV0dXJuIHsgY2hhbmdlcywgaWRzLCBmaXJzdElkOiBpZHNbMF0gfSBzYXRpc2ZpZXMgUXVlcnlVcGRhdGVSZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsYXp5Q29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbm4gPz89IGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxSZWxlYXNlKCkge1xuICAgIGlmICh0aGlzLmhhc09wZW5UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29ubi5yZWxlYXNlKCk7XG4gICAgdGhpcy5jb25uID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=