@scmbwis/bpg-gen 0.1.6

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.
Files changed (230) hide show
  1. package/README.md +103 -0
  2. package/dist/cli/config.d.ts +13 -0
  3. package/dist/cli/config.js +94 -0
  4. package/dist/cli/config.js.map +1 -0
  5. package/dist/cli/generate.d.ts +9 -0
  6. package/dist/cli/generate.js +97 -0
  7. package/dist/cli/generate.js.map +1 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/index.js +37 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/schema-loader.d.ts +2 -0
  12. package/dist/cli/schema-loader.js +104 -0
  13. package/dist/cli/schema-loader.js.map +1 -0
  14. package/dist/commands/gendata.d.ts +1 -0
  15. package/dist/commands/gendata.js +251 -0
  16. package/dist/commands/gendata.js.map +1 -0
  17. package/dist/commands/gendb.d.ts +5 -0
  18. package/dist/commands/gendb.js +82 -0
  19. package/dist/commands/gendb.js.map +1 -0
  20. package/dist/commands/nest-express/gennestservicemodels.d.ts +5 -0
  21. package/dist/commands/nest-express/gennestservicemodels.js +505 -0
  22. package/dist/commands/nest-express/gennestservicemodels.js.map +1 -0
  23. package/dist/commands/nest-express/gentsaccessmodel.d.ts +5 -0
  24. package/dist/commands/nest-express/gentsaccessmodel.js +396 -0
  25. package/dist/commands/nest-express/gentsaccessmodel.js.map +1 -0
  26. package/dist/commands/ng/genngbaseapi.d.ts +1 -0
  27. package/dist/commands/ng/genngbaseapi.js +289 -0
  28. package/dist/commands/ng/genngbaseapi.js.map +1 -0
  29. package/dist/configs/ddi.d.ts +2 -0
  30. package/dist/configs/ddi.js +564 -0
  31. package/dist/configs/ddi.js.map +1 -0
  32. package/dist/configs/index.d.ts +2 -0
  33. package/dist/configs/index.js +24 -0
  34. package/dist/configs/index.js.map +1 -0
  35. package/dist/configs/proef-old.d.ts +2 -0
  36. package/dist/configs/proef-old.js +592 -0
  37. package/dist/configs/proef-old.js.map +1 -0
  38. package/dist/configs/proef.d.ts +2 -0
  39. package/dist/configs/proef.js +1023 -0
  40. package/dist/configs/proef.js.map +1 -0
  41. package/dist/configs/tuvens.d.ts +2 -0
  42. package/dist/configs/tuvens.js +1249 -0
  43. package/dist/configs/tuvens.js.map +1 -0
  44. package/dist/data-access/data-types/common.d.ts +40 -0
  45. package/dist/data-access/data-types/common.js +60 -0
  46. package/dist/data-access/data-types/common.js.map +1 -0
  47. package/dist/data-access/data-types/index.d.ts +3 -0
  48. package/dist/data-access/data-types/index.js +110 -0
  49. package/dist/data-access/data-types/index.js.map +1 -0
  50. package/dist/data-access/data-types/support/reg-models.d.ts +16 -0
  51. package/dist/data-access/data-types/support/reg-models.js +4 -0
  52. package/dist/data-access/data-types/support/reg-models.js.map +1 -0
  53. package/dist/data-access/data-types/template.d.ts +22 -0
  54. package/dist/data-access/data-types/template.js +17 -0
  55. package/dist/data-access/data-types/template.js.map +1 -0
  56. package/dist/data-access/data-types/types/boolean-array.d.ts +18 -0
  57. package/dist/data-access/data-types/types/boolean-array.js +32 -0
  58. package/dist/data-access/data-types/types/boolean-array.js.map +1 -0
  59. package/dist/data-access/data-types/types/boolean.d.ts +18 -0
  60. package/dist/data-access/data-types/types/boolean.js +32 -0
  61. package/dist/data-access/data-types/types/boolean.js.map +1 -0
  62. package/dist/data-access/data-types/types/child-pub-id-seq.d.ts +16 -0
  63. package/dist/data-access/data-types/types/child-pub-id-seq.js +15 -0
  64. package/dist/data-access/data-types/types/child-pub-id-seq.js.map +1 -0
  65. package/dist/data-access/data-types/types/client/client-model.d.ts +223 -0
  66. package/dist/data-access/data-types/types/client/client-model.js +26 -0
  67. package/dist/data-access/data-types/types/client/client-model.js.map +1 -0
  68. package/dist/data-access/data-types/types/client/common.d.ts +23 -0
  69. package/dist/data-access/data-types/types/client/common.js +3 -0
  70. package/dist/data-access/data-types/types/client/common.js.map +1 -0
  71. package/dist/data-access/data-types/types/client/types/boolean-array.d.ts +10 -0
  72. package/dist/data-access/data-types/types/client/types/boolean-array.js +3 -0
  73. package/dist/data-access/data-types/types/client/types/boolean-array.js.map +1 -0
  74. package/dist/data-access/data-types/types/client/types/boolean.d.ts +10 -0
  75. package/dist/data-access/data-types/types/client/types/boolean.js +3 -0
  76. package/dist/data-access/data-types/types/client/types/boolean.js.map +1 -0
  77. package/dist/data-access/data-types/types/client/types/document.d.ts +7 -0
  78. package/dist/data-access/data-types/types/client/types/document.js +4 -0
  79. package/dist/data-access/data-types/types/client/types/document.js.map +1 -0
  80. package/dist/data-access/data-types/types/client/types/fk.d.ts +13 -0
  81. package/dist/data-access/data-types/types/client/types/fk.js +3 -0
  82. package/dist/data-access/data-types/types/client/types/fk.js.map +1 -0
  83. package/dist/data-access/data-types/types/client/types/object.d.ts +10 -0
  84. package/dist/data-access/data-types/types/client/types/object.js +3 -0
  85. package/dist/data-access/data-types/types/client/types/object.js.map +1 -0
  86. package/dist/data-access/data-types/types/client/types/pk.d.ts +9 -0
  87. package/dist/data-access/data-types/types/client/types/pk.js +3 -0
  88. package/dist/data-access/data-types/types/client/types/pk.js.map +1 -0
  89. package/dist/data-access/data-types/types/client/types/pub-id.d.ts +9 -0
  90. package/dist/data-access/data-types/types/client/types/pub-id.js +3 -0
  91. package/dist/data-access/data-types/types/client/types/pub-id.js.map +1 -0
  92. package/dist/data-access/data-types/types/client/types/real-num-array.d.ts +12 -0
  93. package/dist/data-access/data-types/types/client/types/real-num-array.js +3 -0
  94. package/dist/data-access/data-types/types/client/types/real-num-array.js.map +1 -0
  95. package/dist/data-access/data-types/types/client/types/real-num.d.ts +12 -0
  96. package/dist/data-access/data-types/types/client/types/real-num.js +3 -0
  97. package/dist/data-access/data-types/types/client/types/real-num.js.map +1 -0
  98. package/dist/data-access/data-types/types/client/types/string-array.d.ts +13 -0
  99. package/dist/data-access/data-types/types/client/types/string-array.js +3 -0
  100. package/dist/data-access/data-types/types/client/types/string-array.js.map +1 -0
  101. package/dist/data-access/data-types/types/client/types/string.d.ts +15 -0
  102. package/dist/data-access/data-types/types/client/types/string.js +3 -0
  103. package/dist/data-access/data-types/types/client/types/string.js.map +1 -0
  104. package/dist/data-access/data-types/types/client/types/timestamp-array.d.ts +10 -0
  105. package/dist/data-access/data-types/types/client/types/timestamp-array.js +3 -0
  106. package/dist/data-access/data-types/types/client/types/timestamp-array.js.map +1 -0
  107. package/dist/data-access/data-types/types/client/types/timestamp.d.ts +10 -0
  108. package/dist/data-access/data-types/types/client/types/timestamp.js +3 -0
  109. package/dist/data-access/data-types/types/client/types/timestamp.js.map +1 -0
  110. package/dist/data-access/data-types/types/client/types/type-key.d.ts +19 -0
  111. package/dist/data-access/data-types/types/client/types/type-key.js +3 -0
  112. package/dist/data-access/data-types/types/client/types/type-key.js.map +1 -0
  113. package/dist/data-access/data-types/types/client/types/user-picker.d.ts +0 -0
  114. package/dist/data-access/data-types/types/client/types/user-picker.js +2 -0
  115. package/dist/data-access/data-types/types/client/types/user-picker.js.map +1 -0
  116. package/dist/data-access/data-types/types/client/types/whole-num-array.d.ts +12 -0
  117. package/dist/data-access/data-types/types/client/types/whole-num-array.js +3 -0
  118. package/dist/data-access/data-types/types/client/types/whole-num-array.js.map +1 -0
  119. package/dist/data-access/data-types/types/client/types/whole-num.d.ts +12 -0
  120. package/dist/data-access/data-types/types/client/types/whole-num.js +3 -0
  121. package/dist/data-access/data-types/types/client/types/whole-num.js.map +1 -0
  122. package/dist/data-access/data-types/types/client/union.d.ts +25 -0
  123. package/dist/data-access/data-types/types/client/union.js +24 -0
  124. package/dist/data-access/data-types/types/client/union.js.map +1 -0
  125. package/dist/data-access/data-types/types/document.d.ts +16 -0
  126. package/dist/data-access/data-types/types/document.js +28 -0
  127. package/dist/data-access/data-types/types/document.js.map +1 -0
  128. package/dist/data-access/data-types/types/fk.d.ts +46 -0
  129. package/dist/data-access/data-types/types/fk.js +66 -0
  130. package/dist/data-access/data-types/types/fk.js.map +1 -0
  131. package/dist/data-access/data-types/types/object.d.ts +18 -0
  132. package/dist/data-access/data-types/types/object.js +30 -0
  133. package/dist/data-access/data-types/types/object.js.map +1 -0
  134. package/dist/data-access/data-types/types/pk.d.ts +11 -0
  135. package/dist/data-access/data-types/types/pk.js +25 -0
  136. package/dist/data-access/data-types/types/pk.js.map +1 -0
  137. package/dist/data-access/data-types/types/pub-id.d.ts +23 -0
  138. package/dist/data-access/data-types/types/pub-id.js +31 -0
  139. package/dist/data-access/data-types/types/pub-id.js.map +1 -0
  140. package/dist/data-access/data-types/types/real-num-array.d.ts +22 -0
  141. package/dist/data-access/data-types/types/real-num-array.js +38 -0
  142. package/dist/data-access/data-types/types/real-num-array.js.map +1 -0
  143. package/dist/data-access/data-types/types/real-num.d.ts +22 -0
  144. package/dist/data-access/data-types/types/real-num.js +37 -0
  145. package/dist/data-access/data-types/types/real-num.js.map +1 -0
  146. package/dist/data-access/data-types/types/string-array.d.ts +24 -0
  147. package/dist/data-access/data-types/types/string-array.js +47 -0
  148. package/dist/data-access/data-types/types/string-array.js.map +1 -0
  149. package/dist/data-access/data-types/types/string.d.ts +37 -0
  150. package/dist/data-access/data-types/types/string.js +63 -0
  151. package/dist/data-access/data-types/types/string.js.map +1 -0
  152. package/dist/data-access/data-types/types/timestamp-array.d.ts +18 -0
  153. package/dist/data-access/data-types/types/timestamp-array.js +32 -0
  154. package/dist/data-access/data-types/types/timestamp-array.js.map +1 -0
  155. package/dist/data-access/data-types/types/timestamp.d.ts +18 -0
  156. package/dist/data-access/data-types/types/timestamp.js +32 -0
  157. package/dist/data-access/data-types/types/timestamp.js.map +1 -0
  158. package/dist/data-access/data-types/types/type-key.d.ts +87 -0
  159. package/dist/data-access/data-types/types/type-key.js +56 -0
  160. package/dist/data-access/data-types/types/type-key.js.map +1 -0
  161. package/dist/data-access/data-types/types/user-picker.d.ts +0 -0
  162. package/dist/data-access/data-types/types/user-picker.js +2 -0
  163. package/dist/data-access/data-types/types/user-picker.js.map +1 -0
  164. package/dist/data-access/data-types/types/whole-num-array.d.ts +22 -0
  165. package/dist/data-access/data-types/types/whole-num-array.js +38 -0
  166. package/dist/data-access/data-types/types/whole-num-array.js.map +1 -0
  167. package/dist/data-access/data-types/types/whole-num.d.ts +22 -0
  168. package/dist/data-access/data-types/types/whole-num.js +37 -0
  169. package/dist/data-access/data-types/types/whole-num.js.map +1 -0
  170. package/dist/data-access/data-types/union.d.ts +36 -0
  171. package/dist/data-access/data-types/union.js +44 -0
  172. package/dist/data-access/data-types/union.js.map +1 -0
  173. package/dist/datamodel/db-model/app-model.d.ts +36 -0
  174. package/dist/datamodel/db-model/app-model.js +7 -0
  175. package/dist/datamodel/db-model/app-model.js.map +1 -0
  176. package/dist/datamodel/db-model/data-model-builder.d.ts +3 -0
  177. package/dist/datamodel/db-model/data-model-builder.js +437 -0
  178. package/dist/datamodel/db-model/data-model-builder.js.map +1 -0
  179. package/dist/datamodel/db-model/data-model.d.ts +74 -0
  180. package/dist/datamodel/db-model/data-model.js +8 -0
  181. package/dist/datamodel/db-model/data-model.js.map +1 -0
  182. package/dist/datamodel/db-model/data-type.d.ts +9 -0
  183. package/dist/datamodel/db-model/data-type.js +176 -0
  184. package/dist/datamodel/db-model/data-type.js.map +1 -0
  185. package/dist/datamodel/db-model/in-app-model.d.ts +9 -0
  186. package/dist/datamodel/db-model/in-app-model.js +6 -0
  187. package/dist/datamodel/db-model/in-app-model.js.map +1 -0
  188. package/dist/datamodel/db-model/in-data-model.d.ts +36 -0
  189. package/dist/datamodel/db-model/in-data-model.js +11 -0
  190. package/dist/datamodel/db-model/in-data-model.js.map +1 -0
  191. package/dist/datamodel/pg-migrate/infoschema-models.d.ts +40 -0
  192. package/dist/datamodel/pg-migrate/infoschema-models.js +3 -0
  193. package/dist/datamodel/pg-migrate/infoschema-models.js.map +1 -0
  194. package/dist/datamodel/pg-migrate/infoschema-queries.d.ts +2 -0
  195. package/dist/datamodel/pg-migrate/infoschema-queries.js +14 -0
  196. package/dist/datamodel/pg-migrate/infoschema-queries.js.map +1 -0
  197. package/dist/datamodel/pg-migrate/migration-methods.d.ts +19 -0
  198. package/dist/datamodel/pg-migrate/migration-methods.js +75 -0
  199. package/dist/datamodel/pg-migrate/migration-methods.js.map +1 -0
  200. package/dist/datamodel/pg-migrate/migration-queries.d.ts +2 -0
  201. package/dist/datamodel/pg-migrate/migration-queries.js +127 -0
  202. package/dist/datamodel/pg-migrate/migration-queries.js.map +1 -0
  203. package/dist/datamodel/ts-gen/app/api.d.ts +2 -0
  204. package/dist/datamodel/ts-gen/app/api.js +72 -0
  205. package/dist/datamodel/ts-gen/app/api.js.map +1 -0
  206. package/dist/datamodel/ts-gen/index.d.ts +6 -0
  207. package/dist/datamodel/ts-gen/index.js +98 -0
  208. package/dist/datamodel/ts-gen/index.js.map +1 -0
  209. package/dist/env.d.ts +3 -0
  210. package/dist/env.js +87 -0
  211. package/dist/env.js.map +1 -0
  212. package/dist/index.d.ts +2 -0
  213. package/dist/index.js +7 -0
  214. package/dist/index.js.map +1 -0
  215. package/dist/utils/casing.d.ts +17 -0
  216. package/dist/utils/casing.js +66 -0
  217. package/dist/utils/casing.js.map +1 -0
  218. package/dist/utils/conventions.d.ts +2 -0
  219. package/dist/utils/conventions.js +12 -0
  220. package/dist/utils/conventions.js.map +1 -0
  221. package/dist/utils/genutils.d.ts +55 -0
  222. package/dist/utils/genutils.js +501 -0
  223. package/dist/utils/genutils.js.map +1 -0
  224. package/dist/utils/pg.utils.d.ts +1 -0
  225. package/dist/utils/pg.utils.js +302 -0
  226. package/dist/utils/pg.utils.js.map +1 -0
  227. package/dist/utils/writingutils.d.ts +12 -0
  228. package/dist/utils/writingutils.js +63 -0
  229. package/dist/utils/writingutils.js.map +1 -0
  230. package/package.json +50 -0
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.valueAsSql = valueAsSql;
4
+ /* import { Client, Pool, PoolClient, PoolConfig, QueryConfig, QueryResult, types } from "pg"
5
+ import { Env } from "../env"
6
+
7
+ require("dotenv").config()
8
+ export const getQueryAsText = (text: string, values?: any[]): string => {
9
+ let returnMe = text
10
+ if (values) {
11
+ // need to do in reverse or $2 will replace start of $20
12
+ for (let i = values.length; i > 0; i--) {
13
+ const val = values[i - 1]
14
+ const replaceMe = new RegExp(`[$]${i}\\b`, "g")
15
+ returnMe = returnMe.replace(replaceMe, valueAsSql(val))
16
+ }
17
+ }
18
+ return returnMe
19
+ }
20
+ */
21
+ function valueAsSql(val) {
22
+ let sqlVal;
23
+ if (val == null || val == undefined) {
24
+ sqlVal = "null";
25
+ }
26
+ else {
27
+ sqlVal = val.toString();
28
+ if (typeof (val) == "string") {
29
+ sqlVal = `'${sqlVal}'`;
30
+ }
31
+ else if (val instanceof Date) {
32
+ const dateVal = val;
33
+ sqlVal = `'${dateVal.getFullYear()}-${dateVal.getMonth() + 1}-${dateVal.getDate()} ${dateVal.getHours()}:${dateVal.getMinutes()}:${dateVal.getSeconds()}'`;
34
+ //'2020-06-22 19:10:25-07'
35
+ }
36
+ else if (typeof (val) == "object") {
37
+ sqlVal = `'${JSON.stringify(val)}'`;
38
+ }
39
+ }
40
+ return sqlVal;
41
+ }
42
+ /*
43
+ export async function executeQuery<T>(query: QueryConfig, inClient?: PoolClient): Promise<T[]>
44
+ export async function executeQuery<T>(text: string, values?: any[]): Promise<T[]>
45
+ export async function executeQuery<T>(query: unknown, valuesOrClient?: any[] | PoolClient): Promise<T[]> {
46
+ let querySpec: QueryConfig
47
+ let client: PoolClient | Client | undefined = undefined
48
+ if (typeof query === 'string') {
49
+ if (valuesOrClient != undefined && !Array.isArray(valuesOrClient)) {
50
+ throw new Error("can't use pool client with text query")
51
+ }
52
+ querySpec = {
53
+ text: query,
54
+ values: valuesOrClient
55
+ }
56
+ }
57
+ else {
58
+ if (valuesOrClient != undefined && Array.isArray(valuesOrClient)) {
59
+ throw new Error("can't use values array with query config")
60
+ }
61
+ client = valuesOrClient
62
+ querySpec = query as QueryConfig
63
+ }
64
+ try {
65
+ let externalClient = true
66
+ if (client == undefined) {
67
+ externalClient = false
68
+ client = new Client(Env.pg)
69
+ await client.connect()
70
+ }
71
+ // console.log(getQueryAsText(querySpec.text, querySpec.values))
72
+
73
+ const result = await client.query(querySpec)
74
+ if (!externalClient) {
75
+ const cc = client as Client
76
+ cc.end()
77
+ }
78
+ return result.rows
79
+ } catch (err) {
80
+ console.log(getQueryAsText(querySpec.text, querySpec.values))
81
+ console.log(err)
82
+ throw err
83
+ }
84
+ finally {
85
+
86
+ }
87
+
88
+ return []
89
+ }
90
+ export async function executeQueryForOneDef<T>(query: QueryConfig): Promise<T>
91
+ export async function executeQueryForOneDef<T>(text: string, values?: any[]): Promise<T>
92
+ export async function executeQueryForOneDef<T>(query: unknown, values?: any[]): Promise<T> {
93
+ let querySpec: QueryConfig
94
+ if (typeof query === 'string') {
95
+ querySpec = {
96
+ text: query,
97
+ values
98
+ }
99
+ }
100
+ else {
101
+ querySpec = query as QueryConfig
102
+ }
103
+ const result = await executeQueryForOne<T>(querySpec)
104
+ if (!result) {
105
+ throw new Error("query resulted in an undefined result: " + getQueryAsText(querySpec.text, querySpec.values))
106
+ }
107
+ return result
108
+ }
109
+ export async function executeQueryForOne<T>(query: QueryConfig): Promise<T | undefined>
110
+ export async function executeQueryForOne<T>(query: string, values?: any[]): Promise<T | undefined>
111
+ export async function executeQueryForOne<T>(query: unknown, values?: any[]): Promise<T | undefined> {
112
+ let querySpec: QueryConfig
113
+ if (typeof query === 'string') {
114
+ querySpec = {
115
+ text: query,
116
+ values
117
+ }
118
+ }
119
+ else {
120
+ querySpec = query as QueryConfig
121
+ }
122
+
123
+ const rows = await executeQuery<T>(querySpec)
124
+ if (rows.length == 0) {
125
+ return
126
+ }
127
+ if (rows.length >= 1) {
128
+ return rows[0]
129
+ }
130
+ }
131
+
132
+ export interface DbConfig extends PoolConfig {
133
+ host: string;
134
+ database: string;
135
+ user: string;
136
+ password: string;
137
+ port?: number;
138
+ }
139
+
140
+ export interface PgConnection {
141
+ pool: Pool;
142
+ config: DbConfig;
143
+ }
144
+ export interface PgResultSet {
145
+ couldConnect: boolean;
146
+ hadQueryErrors: boolean;
147
+ queries: PgResult[];
148
+ connectionError?: Error;
149
+ }
150
+ export interface PgResult {
151
+ success: boolean;
152
+ query: QueryConfig;
153
+ error?: any;
154
+ results?: QueryResult<any>;// only undefined if error
155
+ }
156
+ export const getConn = (dbConfig: DbConfig): PgConnection => {
157
+ const config: DbConfig = {
158
+ ...dbConfig,
159
+ max: 20,
160
+ idleTimeoutMillis: 30000,
161
+ connectionTimeoutMillis: 2000
162
+ };
163
+ const pool = new Pool(config);
164
+ const conn = {
165
+ pool: pool,
166
+ config: config
167
+ }
168
+ return conn;
169
+ }
170
+ export const runQueries = async (conn: PgConnection, queries: string[] | QueryConfig[] | string | QueryConfig, breakOnError: boolean = true): Promise<PgResultSet> => {
171
+ const results: PgResultSet = {
172
+ queries: [],
173
+ couldConnect: false,
174
+ hadQueryErrors: false
175
+ }
176
+ let client: PoolClient | undefined;
177
+ // turn the queries into same format - QueryConfigs can be paremerterised
178
+ // https://node-postgres.com/features/queries
179
+ const queryArray: QueryConfig[] = [];
180
+ if (Array.isArray(queries)) {
181
+ for (let i = 0; i < queries.length; i++) {
182
+ const query = queries[i];
183
+ if (typeof query === 'string' || query instanceof String) {
184
+ queryArray.push({ text: query as string });
185
+ }
186
+ else {
187
+ queryArray.push(query as QueryConfig);
188
+ }
189
+ }
190
+ }
191
+ else {
192
+ const query = queries;
193
+ if (typeof query === 'string' || query instanceof String) {
194
+ queryArray.push({ text: query as string });
195
+ }
196
+ else {
197
+ queryArray.push(query as QueryConfig);
198
+ }
199
+ }
200
+ // run them
201
+ try {
202
+ client = await conn.pool.connect();
203
+ results.couldConnect = true;
204
+ for (let i = 0; i < queryArray.length && !(breakOnError && results.hadQueryErrors); i++) {
205
+ const query = queryArray[i];
206
+ try {
207
+ results.queries.push({
208
+ query: query,
209
+ success: true,
210
+ results: await client.query(query)
211
+ });
212
+ }
213
+ catch (err) {
214
+ results.queries.push({
215
+ query: query,
216
+ success: false,
217
+ error: err
218
+ });
219
+ console.log(query.text);
220
+ results.hadQueryErrors = true;
221
+ }
222
+ }
223
+ }
224
+ catch (err: any) {
225
+ results.connectionError = err;
226
+ }
227
+ finally {
228
+ if (client) client.release();
229
+ }
230
+ return results;
231
+ }
232
+
233
+ export const canConnect = async (conn: PgConnection): Promise<boolean> => {
234
+ const results = await runQueries(conn, "SELECT * FROM NOW()");
235
+ return results.couldConnect && !results.hadQueryErrors;
236
+ }
237
+ export const validateConnection = async (conn: PgConnection): Promise<void> => {
238
+ const results = await runQueries(conn, "SELECT * FROM NOW()");
239
+ if (results.hadQueryErrors) {
240
+ throw new Error(`db connect issue: ${results.connectionError?.message}`);
241
+ }
242
+ }
243
+ export const pgToJson = {
244
+ entityId: (pgVal: string): number => {
245
+ if (pgVal == null) return 0;
246
+ return parseInt(pgVal.toString());
247
+ },
248
+ string: (pgVal: string): string => {
249
+ if (pgVal == null) return "";
250
+ return pgVal.replace(/''/g, "'");
251
+ },
252
+ object: (pgVal: object): object => {
253
+ if (pgVal == null) return {};
254
+ return pgVal;
255
+ },
256
+ complexProp: (pgVal: object): undefined => {
257
+ throw new Error("complex prop shouldn't be translated");
258
+ },
259
+ wholeNum: (pgVal: string): number => {
260
+ if (pgVal == null) return 0;
261
+ return parseInt(pgVal.toString());
262
+ },
263
+ realNum: (pgVal: string): number => {
264
+ if (pgVal == null) return 0;
265
+ return parseFloat(pgVal.toString());
266
+ },
267
+ timestamp: (pgVal: string): Date => {
268
+ return new Date(pgVal);
269
+ },
270
+ bool: (pgVal: boolean): boolean => {
271
+ if (pgVal == null) return false;
272
+ return pgVal;
273
+ }
274
+ }
275
+ export function getDb(env: NodeJS.ProcessEnv, prefix: string = ''): DbConfig {
276
+ const config: DbConfig = {
277
+ host: env[`${prefix}DB_HOST`] || 'localhost',
278
+ database: env[`${prefix}DB_DATABASE`] || '',
279
+ user: env[`${prefix}DB_USER`] || '',
280
+ password: env[`${prefix}DB_PASS_SECRET`] || ''
281
+ }
282
+ if (env[`${prefix}DB_PORT`]) {
283
+ config.port = parseInt(env[`${prefix}DB_PORT`] || 'NaN');
284
+ }
285
+ return config;
286
+ }
287
+ export async function createSchema(schema: string, comment: string) {
288
+ const user = Env.pg.user.split("@")[0]
289
+ await executeQuery(`
290
+ CREATE SCHEMA ${schema}
291
+ AUTHORIZATION ${user};
292
+
293
+ COMMENT ON SCHEMA public
294
+ IS '${comment}';
295
+
296
+ GRANT ALL ON SCHEMA ${schema} TO PUBLIC;
297
+
298
+ GRANT ALL ON SCHEMA ${schema} TO ${user};
299
+ `)
300
+ }
301
+ */
302
+ //# sourceMappingURL=pg.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg.utils.js","sourceRoot":"","sources":["../../lib/utils/pg.utils.ts"],"names":[],"mappings":";;AAiBA,gCAqBC;AAtCD;;;;;;;;;;;;;;;;EAgBE;AACF,SAAgB,UAAU,CAAC,GAAQ;IAClC,IAAI,MAAc,CAAA;IAClB,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,CAAA;IAChB,CAAC;SACI,CAAC;QACL,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,IAAI,MAAM,GAAG,CAAA;QACvB,CAAC;aACI,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAW,CAAA;YAC3B,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAA;YAC1J,0BAA0B;QAC3B,CAAC;aACI,IAAG,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAA;QACpC,CAAC;IAEF,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmQI"}
@@ -0,0 +1,12 @@
1
+ export declare function writeDirsAndFiles(dir: WriteMeDir): Promise<void>;
2
+ export type WriteMe = WriteMeDir | WriteMeFile;
3
+ export type WriteMeFile = {
4
+ type: "file";
5
+ outpath: string;
6
+ content: string;
7
+ };
8
+ export type WriteMeDir = {
9
+ type: "dir";
10
+ outpath: string;
11
+ children: WriteMe[];
12
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.writeDirsAndFiles = writeDirsAndFiles;
46
+ const genutils_1 = require("./genutils");
47
+ const fs = __importStar(require("fs/promises"));
48
+ function writeDirsAndFiles(dir) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ if (!(yield (0, genutils_1.exists)(dir.outpath))) {
51
+ yield (0, genutils_1.mkDir)(dir.outpath);
52
+ }
53
+ for (let child of dir.children) {
54
+ if (child.type === "dir") {
55
+ yield writeDirsAndFiles(child);
56
+ }
57
+ else if (child.type === "file") {
58
+ yield fs.writeFile(child.outpath, child.content);
59
+ }
60
+ }
61
+ });
62
+ }
63
+ //# sourceMappingURL=writingutils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writingutils.js","sourceRoot":"","sources":["../../lib/utils/writingutils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,8CAYC;AAfD,yCAA0C;AAC1C,gDAAiC;AAEjC,SAAsB,iBAAiB,CAAC,GAAe;;QACnD,IAAI,CAAC,CAAC,MAAM,IAAA,iBAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;QACD,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACvB,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;iBACI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACpD,CAAC;QACL,CAAC;IACL,CAAC;CAAA"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@scmbwis/bpg-gen",
3
+ "version": "0.1.6",
4
+ "description": "Local project code generator CLI",
5
+ "main": "./dist/index.js",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "require": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "clean": "node ./scripts/clean-dist.mjs",
15
+ "build": "npm run clean && tsc",
16
+ "typecheck": "tsc --noEmit",
17
+ "test:hardening": "npm run build && node ./scripts/hardening-check.mjs",
18
+ "prepack": "npm run build"
19
+ },
20
+ "author": "",
21
+ "license": "UNLICENSED",
22
+ "dependencies": {
23
+ "@faker-js/faker": "^10.1.0",
24
+ "dotenv": "^17.2.3",
25
+ "pluralize": "^8.0.0",
26
+ "tsx": "^4.20.6"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^24.10.1",
30
+ "@types/pluralize": "^0.0.33"
31
+ },
32
+ "types": "./dist/index.d.ts",
33
+ "bin": {
34
+ "bpg-gen": "./dist/cli/index.js",
35
+ "bgen": "./dist/cli/index.js"
36
+ },
37
+ "files": [
38
+ "dist/**",
39
+ "README.md"
40
+ ],
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/scmbwis/pg-express-toolbox.git",
44
+ "directory": "bpg-gen"
45
+ },
46
+ "publishConfig": {
47
+ "registry": "https://registry.npmjs.org/",
48
+ "access": "public"
49
+ }
50
+ }