triangle-utils 1.4.133 → 1.4.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  export declare class UtilsRDS {
2
2
  private readonly postgres;
3
- private is_connected;
4
3
  private readonly rds_data;
5
4
  private readonly rds_cluster_arn;
6
5
  private readonly rds_secret_arn;
@@ -9,9 +8,7 @@ export declare class UtilsRDS {
9
8
  disconnect(): Promise<void>;
10
9
  query(sql: string, options?: {
11
10
  is_verbose?: boolean;
12
- }): Promise<{
13
- [k: string]: unknown;
14
- }[]>;
11
+ }): Promise<any[]>;
15
12
  exec(sql: string, options?: {
16
13
  is_verbose?: boolean;
17
14
  }): Promise<any[]>;
@@ -20,14 +20,27 @@ function convert_rds_input(input) {
20
20
  }
21
21
  return "NULL";
22
22
  }
23
+ function convert_rds_output(input) {
24
+ if (input.isNull) {
25
+ return undefined;
26
+ }
27
+ else if (input.stringValue !== undefined) {
28
+ return input.stringValue;
29
+ }
30
+ else if (input.longValue !== undefined) {
31
+ return input.longValue;
32
+ }
33
+ else if (input.booleanValue !== undefined) {
34
+ return input.booleanValue;
35
+ }
36
+ return undefined;
37
+ }
23
38
  export class UtilsRDS {
24
39
  postgres;
25
- is_connected;
26
40
  rds_data;
27
41
  rds_cluster_arn;
28
42
  rds_secret_arn;
29
43
  constructor(region, rds_cluster_arn, rds_secret_arn, rds_host, rds_username, rds_password) {
30
- this.is_connected = false;
31
44
  this.postgres = new Client({
32
45
  host: rds_host,
33
46
  user: rds_username,
@@ -54,7 +67,8 @@ export class UtilsRDS {
54
67
  console.log(sql);
55
68
  }
56
69
  const response = await this.postgres.query(sql);
57
- return response.rows.map(item => Object.fromEntries(Object.entries(item).filter(([key, value]) => value !== null)));
70
+ return response.rows.map(item => Object.fromEntries(response.fields.map(field => [field.name, field.dataTypeID === 1700 ? Number(item[field.name]) : item[field.name]])
71
+ .filter(([attribute_name, attribute_value]) => attribute_value !== null && attribute_value !== undefined)));
58
72
  }
59
73
  async exec(sql, options = {}) {
60
74
  const is_verbose = Boolean(options.is_verbose);
@@ -67,10 +81,16 @@ export class UtilsRDS {
67
81
  secretArn: this.rds_secret_arn,
68
82
  database: "postgres",
69
83
  sql: sql,
70
- formatRecordsAs: "JSON"
84
+ includeResultMetadata: true
71
85
  })
72
- .then(response => JSON.parse(response.formattedRecords || "[]"))
73
- .then(items => items.map((item) => Object.fromEntries(Object.entries(item).filter(([key, value]) => value !== null))))
86
+ // .then(response => {
87
+ // console.log(response)
88
+ // return response
89
+ // })
90
+ .then(response => (response.records || [])
91
+ .map((item) => Object.fromEntries((response.columnMetadata || [])
92
+ .map((column, i) => [column.name || "", column.typeName === "numeric" ? Number(convert_rds_output(item[i])) : convert_rds_output(item[i])])
93
+ .filter(([key, value]) => value !== null))))
74
94
  :
75
95
  await this.query(sql, options);
76
96
  if (!Array.isArray(items)) {
package/dist/src/f.js CHANGED
@@ -67,5 +67,7 @@ const utils = new TriangleUtils(config);
67
67
  // }, { is_verbose : true })
68
68
  // console.log(response)
69
69
  // }
70
- const lal_file_voters = await utils.rds.query("SELECT * FROM lal_file_voters LIMIT 3;");
70
+ await utils.rds.connect();
71
+ const lal_file_voters = await utils.rds.query("SELECT lal_file_voter_id, address_residence_city, address_residence_latitude, address_residence_longitude, address_residence_property_sqft FROM lal_file_voters LIMIT 3;");
71
72
  console.log(lal_file_voters);
73
+ await utils.rds.disconnect();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "triangle-utils",
3
- "version": "1.4.133",
3
+ "version": "1.4.134",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "directories": {
package/src/UtilsRDS.ts CHANGED
@@ -18,10 +18,22 @@ function convert_rds_input(input : string | boolean | number | Record<string, an
18
18
  return "NULL"
19
19
  }
20
20
 
21
+ function convert_rds_output(input : Field) {
22
+ if (input.isNull) {
23
+ return undefined
24
+ } else if (input.stringValue !== undefined) {
25
+ return input.stringValue
26
+ } else if (input.longValue !== undefined) {
27
+ return input.longValue
28
+ } else if (input.booleanValue !== undefined) {
29
+ return input.booleanValue
30
+ }
31
+ return undefined
32
+ }
33
+
21
34
  export class UtilsRDS {
22
35
 
23
36
  private readonly postgres : Client
24
- private is_connected : boolean
25
37
  private readonly rds_data : RDSData
26
38
  private readonly rds_cluster_arn : string
27
39
  private readonly rds_secret_arn : string
@@ -34,7 +46,6 @@ export class UtilsRDS {
34
46
  rds_username : string,
35
47
  rds_password : string
36
48
  ) {
37
- this.is_connected = false
38
49
  this.postgres = new Client({
39
50
  host : rds_host,
40
51
  user : rds_username,
@@ -69,7 +80,10 @@ export class UtilsRDS {
69
80
  console.log(sql)
70
81
  }
71
82
  const response = await this.postgres.query(sql)
72
- return response.rows.map(item => Object.fromEntries(Object.entries(item).filter(([key, value]) => value !== null)))
83
+ return response.rows.map(item => Object.fromEntries(
84
+ response.fields.map(field => [field.name, field.dataTypeID === 1700 ? Number(item[field.name]) : item[field.name]])
85
+ .filter(([attribute_name, attribute_value]) => attribute_value !== null && attribute_value !== undefined)
86
+ ))
73
87
  }
74
88
 
75
89
  async exec(
@@ -88,10 +102,18 @@ export class UtilsRDS {
88
102
  secretArn : this.rds_secret_arn,
89
103
  database : "postgres",
90
104
  sql : sql,
91
- formatRecordsAs : "JSON"
105
+ includeResultMetadata : true
92
106
  })
93
- .then(response => JSON.parse(response.formattedRecords || "[]"))
94
- .then(items => items.map((item : any) => Object.fromEntries(Object.entries(item).filter(([key, value]) => value !== null))))
107
+ // .then(response => {
108
+ // console.log(response)
109
+ // return response
110
+ // })
111
+ .then(response => (response.records || [])
112
+ .map((item : any) => Object.fromEntries((response.columnMetadata || [])
113
+ .map((column, i) => [column.name || "", column.typeName === "numeric" ? Number(convert_rds_output(item[i])) : convert_rds_output(item[i])])
114
+ .filter(([key, value]) => value !== null)
115
+ ))
116
+ )
95
117
  :
96
118
  await this.query(sql, options)
97
119
  if (!Array.isArray(items)) {
package/src/f.ts CHANGED
@@ -84,5 +84,7 @@ const utils = new TriangleUtils(config)
84
84
  // console.log(response)
85
85
  // }
86
86
 
87
- const lal_file_voters = await utils.rds.query("SELECT * FROM lal_file_voters LIMIT 3;")
88
- console.log(lal_file_voters)
87
+ await utils.rds.connect()
88
+ const lal_file_voters = await utils.rds.query("SELECT lal_file_voter_id, address_residence_city, address_residence_latitude, address_residence_longitude, address_residence_property_sqft FROM lal_file_voters LIMIT 3;")
89
+ console.log(lal_file_voters)
90
+ await utils.rds.disconnect()