1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const base_1 = require("../error/base");
|
4 | const pg_1 = require("pg");
|
5 | const db_service_1 = require("./db_service");
|
6 | const db_1 = require("../error/db");
|
7 | exports.DB_QUERY = 'DB_QUERY';
|
8 | exports.NO_ROW_ERROR = 'DB_NO_SUCH_';
|
9 | pg_1.defaults.parseInt8 = true;
|
10 | class 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 | }
|
55 | exports.PgService = PgService;
|