UNPKG

1.62 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const base_1 = require("../error/base");
4const pg_1 = require("pg");
5const db_service_1 = require("./db_service");
6const db_1 = require("../error/db");
7exports.DB_QUERY = 'DB_QUERY';
8exports.NO_ROW_ERROR = 'DB_NO_SUCH_';
9pg_1.defaults.parseInt8 = true;
10class PgService {
11 constructor(pgPool) {
12 this.pool = pgPool;
13 }
14 async run(query, params) {
15 return await this._run(query, params);
16 }
17 async getRows(query, params) {
18 const items = await this._run(query, params);
19 return items.rows;
20 }
21 async getRow(query, params) {
22 const items = await this._run(query, params);
23 const rows = items.rows || [];
24 if (rows.length === 0) {
25 return false;
26 }
27 if (rows.length > 1) {
28 console.warn(db_service_1.ONE_ROW_WARNING, rows.length, query);
29 }
30 return rows[0];
31 }
32 async mustGetRow(errorCode, query, params) {
33 const row = await this.getRow(query, params);
34 if (row === false) {
35 throw new db_1.DbError({
36 code: errorCode,
37 status: base_1.BaseError.CODE_NOT_FOUND,
38 innerDetails: {}
39 });
40 }
41 return row;
42 }
43 async _run(query, params = []) {
44 try {
45 return await this.pool.query(query, params);
46 }
47 catch (err) {
48 throw new db_1.DbError({
49 code: exports.DB_QUERY,
50 innerDetails: err
51 });
52 }
53 }
54}
55exports.PgService = PgService;