@dascompany/database 0.0.1

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 (279) hide show
  1. package/README.md +1 -0
  2. package/dist/Connection.d.ts +11 -0
  3. package/dist/Connection.js +22 -0
  4. package/dist/Database.d.ts +4 -0
  5. package/dist/Database.js +14 -0
  6. package/dist/DatabaseConfig.d.ts +7 -0
  7. package/dist/DatabaseConfig.js +1 -0
  8. package/dist/DatabaseConnection.d.ts +11 -0
  9. package/dist/DatabaseConnection.js +28 -0
  10. package/dist/SQL.json +123 -0
  11. package/dist/Table.d.ts +8 -0
  12. package/dist/Table.js +18 -0
  13. package/dist/TableConnection.d.ts +68 -0
  14. package/dist/TableConnection.js +132 -0
  15. package/dist/index.d.ts +42 -0
  16. package/dist/index.js +42 -0
  17. package/dist/mappers/AddressMapper.d.ts +9 -0
  18. package/dist/mappers/AddressMapper.js +17 -0
  19. package/dist/mappers/AdminMapper.d.ts +9 -0
  20. package/dist/mappers/AdminMapper.js +24 -0
  21. package/dist/mappers/ClientMapper.d.ts +9 -0
  22. package/dist/mappers/ClientMapper.js +24 -0
  23. package/dist/mappers/CompanyDetailsMapper.d.ts +9 -0
  24. package/dist/mappers/CompanyDetailsMapper.js +22 -0
  25. package/dist/mappers/ContactDetailsMapper.d.ts +9 -0
  26. package/dist/mappers/ContactDetailsMapper.js +18 -0
  27. package/dist/mappers/DeliveryDetailsMapper.d.ts +9 -0
  28. package/dist/mappers/DeliveryDetailsMapper.js +17 -0
  29. package/dist/mappers/DeliveryStatusMapper.d.ts +9 -0
  30. package/dist/mappers/DeliveryStatusMapper.js +15 -0
  31. package/dist/mappers/InvoiceDetailsMapper.d.ts +9 -0
  32. package/dist/mappers/InvoiceDetailsMapper.js +17 -0
  33. package/dist/mappers/OrderMapper.d.ts +9 -0
  34. package/dist/mappers/OrderMapper.js +19 -0
  35. package/dist/mappers/OrderProductMapper.d.ts +9 -0
  36. package/dist/mappers/OrderProductMapper.js +15 -0
  37. package/dist/mappers/PaymentDetailsMapper.d.ts +9 -0
  38. package/dist/mappers/PaymentDetailsMapper.js +17 -0
  39. package/dist/mappers/PaymentStatusMapper.d.ts +9 -0
  40. package/dist/mappers/PaymentStatusMapper.js +15 -0
  41. package/dist/mappers/PersonalDataMapper.d.ts +9 -0
  42. package/dist/mappers/PersonalDataMapper.js +17 -0
  43. package/dist/mappers/StatusMapper.d.ts +9 -0
  44. package/dist/mappers/StatusMapper.js +15 -0
  45. package/dist/query/BindParams.d.ts +9 -0
  46. package/dist/query/BindParams.js +56 -0
  47. package/dist/query/Parameters.d.ts +11 -0
  48. package/dist/query/Parameters.js +54 -0
  49. package/dist/query/Query.d.ts +11 -0
  50. package/dist/query/Query.js +42 -0
  51. package/dist/query/QueryParamCreator.d.ts +10 -0
  52. package/dist/query/QueryParamCreator.js +67 -0
  53. package/dist/query/QueryParams.d.ts +20 -0
  54. package/dist/query/QueryParams.js +113 -0
  55. package/dist/query/Result.d.ts +11 -0
  56. package/dist/query/Result.js +43 -0
  57. package/dist/query/ResultsCorrector.d.ts +4 -0
  58. package/dist/query/ResultsCorrector.js +14 -0
  59. package/dist/reader/AddressesReader.d.ts +6 -0
  60. package/dist/reader/AddressesReader.js +24 -0
  61. package/dist/reader/ClientAccountReader.d.ts +7 -0
  62. package/dist/reader/ClientAccountReader.js +30 -0
  63. package/dist/reader/CompanyDetailsReader.d.ts +4 -0
  64. package/dist/reader/CompanyDetailsReader.js +15 -0
  65. package/dist/reader/ContactDetailsReader.d.ts +4 -0
  66. package/dist/reader/ContactDetailsReader.js +16 -0
  67. package/dist/reader/DeliveryDetailsReader.d.ts +4 -0
  68. package/dist/reader/DeliveryDetailsReader.js +31 -0
  69. package/dist/reader/DeliveryMethodReader.d.ts +5 -0
  70. package/dist/reader/DeliveryMethodReader.js +13 -0
  71. package/dist/reader/DeliveryStatusReader.d.ts +5 -0
  72. package/dist/reader/DeliveryStatusReader.js +31 -0
  73. package/dist/reader/FilesReader.d.ts +7 -0
  74. package/dist/reader/FilesReader.js +26 -0
  75. package/dist/reader/InvoiceDetailsReader.d.ts +4 -0
  76. package/dist/reader/InvoiceDetailsReader.js +21 -0
  77. package/dist/reader/OrderProductsReader.d.ts +6 -0
  78. package/dist/reader/OrderProductsReader.js +50 -0
  79. package/dist/reader/OrderReader.d.ts +6 -0
  80. package/dist/reader/OrderReader.js +37 -0
  81. package/dist/reader/OrderStatusReader.d.ts +6 -0
  82. package/dist/reader/OrderStatusReader.js +28 -0
  83. package/dist/reader/PersonalDataReader.d.ts +5 -0
  84. package/dist/reader/PersonalDataReader.js +27 -0
  85. package/dist/reader/ProductReader.d.ts +10 -0
  86. package/dist/reader/ProductReader.js +52 -0
  87. package/dist/reader/payment/PaymentDetailsReader.d.ts +5 -0
  88. package/dist/reader/payment/PaymentDetailsReader.js +27 -0
  89. package/dist/reader/payment/PaymentMethodReader.d.ts +5 -0
  90. package/dist/reader/payment/PaymentMethodReader.js +13 -0
  91. package/dist/reader/payment/PaymentStatusesReader.d.ts +5 -0
  92. package/dist/reader/payment/PaymentStatusesReader.js +30 -0
  93. package/dist/repo/AddressesRepo.d.ts +5 -0
  94. package/dist/repo/AddressesRepo.js +14 -0
  95. package/dist/repo/ClientAccountRepo.d.ts +5 -0
  96. package/dist/repo/ClientAccountRepo.js +14 -0
  97. package/dist/repo/CompanyDetailsRepo.d.ts +5 -0
  98. package/dist/repo/CompanyDetailsRepo.js +14 -0
  99. package/dist/repo/ContactDetailsRepo.d.ts +5 -0
  100. package/dist/repo/ContactDetailsRepo.js +14 -0
  101. package/dist/repo/DeliveryDetailsRepo.d.ts +5 -0
  102. package/dist/repo/DeliveryDetailsRepo.js +14 -0
  103. package/dist/repo/InvoiceDetailsRepo.d.ts +5 -0
  104. package/dist/repo/InvoiceDetailsRepo.js +14 -0
  105. package/dist/repo/OrderRepo.d.ts +5 -0
  106. package/dist/repo/OrderRepo.js +14 -0
  107. package/dist/repo/PaymentDetailsRepo.d.ts +5 -0
  108. package/dist/repo/PaymentDetailsRepo.js +14 -0
  109. package/dist/repo/PersonalDataRepo.d.ts +5 -0
  110. package/dist/repo/PersonalDataRepo.js +16 -0
  111. package/dist/repo/ProductRepo.d.ts +5 -0
  112. package/dist/repo/ProductRepo.js +15 -0
  113. package/dist/stockObjects/Address.d.ts +33 -0
  114. package/dist/stockObjects/Address.js +69 -0
  115. package/dist/stockObjects/Admin.d.ts +25 -0
  116. package/dist/stockObjects/Admin.js +57 -0
  117. package/dist/stockObjects/Client.d.ts +24 -0
  118. package/dist/stockObjects/Client.js +57 -0
  119. package/dist/stockObjects/CompanyDetails.d.ts +17 -0
  120. package/dist/stockObjects/CompanyDetails.js +34 -0
  121. package/dist/stockObjects/ContactDetails.d.ts +12 -0
  122. package/dist/stockObjects/ContactDetails.js +26 -0
  123. package/dist/stockObjects/DeliveryDetails.d.ts +15 -0
  124. package/dist/stockObjects/DeliveryDetails.js +34 -0
  125. package/dist/stockObjects/DeliveryStatus.d.ts +18 -0
  126. package/dist/stockObjects/DeliveryStatus.js +42 -0
  127. package/dist/stockObjects/InvoiceDetails.d.ts +12 -0
  128. package/dist/stockObjects/InvoiceDetails.js +26 -0
  129. package/dist/stockObjects/Order.d.ts +40 -0
  130. package/dist/stockObjects/Order.js +88 -0
  131. package/dist/stockObjects/OrderProduct.d.ts +15 -0
  132. package/dist/stockObjects/OrderProduct.js +33 -0
  133. package/dist/stockObjects/PaymentDetails.d.ts +12 -0
  134. package/dist/stockObjects/PaymentDetails.js +26 -0
  135. package/dist/stockObjects/PaymentStatus.d.ts +13 -0
  136. package/dist/stockObjects/PaymentStatus.js +26 -0
  137. package/dist/stockObjects/PersonalData.d.ts +42 -0
  138. package/dist/stockObjects/PersonalData.js +81 -0
  139. package/dist/stockObjects/Product.d.ts +40 -0
  140. package/dist/stockObjects/Product.js +101 -0
  141. package/dist/stockObjects/Status.d.ts +15 -0
  142. package/dist/stockObjects/Status.js +34 -0
  143. package/dist/tables/AdminAccountsTable.d.ts +15 -0
  144. package/dist/tables/AdminAccountsTable.js +64 -0
  145. package/dist/tables/ClientAccountsTable.d.ts +14 -0
  146. package/dist/tables/ClientAccountsTable.js +62 -0
  147. package/dist/tables/DeliveryStatusTypesTable.d.ts +7 -0
  148. package/dist/tables/DeliveryStatusTypesTable.js +10 -0
  149. package/dist/tables/DeliveryStatusesTable.d.ts +9 -0
  150. package/dist/tables/DeliveryStatusesTable.js +31 -0
  151. package/dist/tables/ProductsTable.d.ts +9 -0
  152. package/dist/tables/ProductsTable.js +26 -0
  153. package/dist/tables/StatusTypesTable.d.ts +4 -0
  154. package/dist/tables/StatusTypesTable.js +9 -0
  155. package/dist/tables/files/FilesTable.d.ts +7 -0
  156. package/dist/tables/files/FilesTable.js +17 -0
  157. package/dist/tables/orders/OrdersProductsTable.d.ts +8 -0
  158. package/dist/tables/orders/OrdersProductsTable.js +25 -0
  159. package/dist/tables/orders/OrdersTable.d.ts +12 -0
  160. package/dist/tables/orders/OrdersTable.js +50 -0
  161. package/dist/tables/orders/PaymentDetailsTable.d.ts +10 -0
  162. package/dist/tables/orders/PaymentDetailsTable.js +34 -0
  163. package/dist/tables/orders/PaymentStatusTypesTable.d.ts +7 -0
  164. package/dist/tables/orders/PaymentStatusTypesTable.js +10 -0
  165. package/dist/tables/orders/PaymentStatusesTable.d.ts +9 -0
  166. package/dist/tables/orders/PaymentStatusesTable.js +30 -0
  167. package/dist/tables/orders/StatusTypesTable.d.ts +4 -0
  168. package/dist/tables/orders/StatusTypesTable.js +9 -0
  169. package/dist/tables/orders/StatusesTable.d.ts +10 -0
  170. package/dist/tables/orders/StatusesTable.js +34 -0
  171. package/dist/tables/personalInformation/AddressesTable.d.ts +10 -0
  172. package/dist/tables/personalInformation/AddressesTable.js +37 -0
  173. package/dist/tables/personalInformation/CompanyDetailsTable.d.ts +11 -0
  174. package/dist/tables/personalInformation/CompanyDetailsTable.js +38 -0
  175. package/dist/tables/personalInformation/ContactDetailsTable.d.ts +10 -0
  176. package/dist/tables/personalInformation/ContactDetailsTable.js +34 -0
  177. package/dist/tables/personalInformation/DeliveryDetailsTable.d.ts +10 -0
  178. package/dist/tables/personalInformation/DeliveryDetailsTable.js +35 -0
  179. package/dist/tables/personalInformation/InvoiceDetailsTable.d.ts +10 -0
  180. package/dist/tables/personalInformation/InvoiceDetailsTable.js +34 -0
  181. package/dist/tables/personalInformation/PersonalDataTable.d.ts +10 -0
  182. package/dist/tables/personalInformation/PersonalDataTable.js +37 -0
  183. package/dist/tables/store-settings/DeliveryMethodsTable.d.ts +6 -0
  184. package/dist/tables/store-settings/DeliveryMethodsTable.js +15 -0
  185. package/dist/tables/store-settings/PaymentMethodsTable.d.ts +6 -0
  186. package/dist/tables/store-settings/PaymentMethodsTable.js +15 -0
  187. package/dist/types/AddressI.d.ts +9 -0
  188. package/dist/types/AddressI.js +1 -0
  189. package/dist/types/ClaimI.d.ts +4 -0
  190. package/dist/types/ClaimI.js +1 -0
  191. package/dist/types/ClientAccountI.d.ts +10 -0
  192. package/dist/types/ClientAccountI.js +1 -0
  193. package/dist/types/CompanyDetailsI.d.ts +5 -0
  194. package/dist/types/CompanyDetailsI.js +1 -0
  195. package/dist/types/ConnectorE.d.ts +5 -0
  196. package/dist/types/ConnectorE.js +6 -0
  197. package/dist/types/ContactDetailsI.d.ts +7 -0
  198. package/dist/types/ContactDetailsI.js +1 -0
  199. package/dist/types/DeliveryDetailsI.d.ts +8 -0
  200. package/dist/types/DeliveryDetailsI.js +1 -0
  201. package/dist/types/DeliveryMethodI.d.ts +5 -0
  202. package/dist/types/DeliveryMethodI.js +1 -0
  203. package/dist/types/FileConnectionE.d.ts +4 -0
  204. package/dist/types/FileConnectionE.js +5 -0
  205. package/dist/types/FileI.d.ts +6 -0
  206. package/dist/types/FileI.js +1 -0
  207. package/dist/types/InvoiceDetailsI.d.ts +7 -0
  208. package/dist/types/InvoiceDetailsI.js +1 -0
  209. package/dist/types/OrderI.d.ts +12 -0
  210. package/dist/types/OrderI.js +1 -0
  211. package/dist/types/OrderProductI.d.ts +9 -0
  212. package/dist/types/OrderProductI.js +1 -0
  213. package/dist/types/OrderStatusI.d.ts +7 -0
  214. package/dist/types/OrderStatusI.js +1 -0
  215. package/dist/types/ParameterI.d.ts +6 -0
  216. package/dist/types/ParameterI.js +1 -0
  217. package/dist/types/PaymentDetailsI.d.ts +6 -0
  218. package/dist/types/PaymentDetailsI.js +1 -0
  219. package/dist/types/PaymentMethodE.d.ts +5 -0
  220. package/dist/types/PaymentMethodE.js +6 -0
  221. package/dist/types/PaymentMethodI.d.ts +5 -0
  222. package/dist/types/PaymentMethodI.js +1 -0
  223. package/dist/types/PaymentStatusE.d.ts +6 -0
  224. package/dist/types/PaymentStatusE.js +7 -0
  225. package/dist/types/PersonalDataI.d.ts +10 -0
  226. package/dist/types/PersonalDataI.js +1 -0
  227. package/dist/types/ProductI.d.ts +21 -0
  228. package/dist/types/ProductI.js +1 -0
  229. package/dist/types/QueryOptionsI.d.ts +9 -0
  230. package/dist/types/QueryOptionsI.js +1 -0
  231. package/dist/types/ResultLimitationI.d.ts +4 -0
  232. package/dist/types/ResultLimitationI.js +1 -0
  233. package/dist/types/StockObject.d.ts +9 -0
  234. package/dist/types/StockObject.js +15 -0
  235. package/dist/types/StockObjectMapper.d.ts +4 -0
  236. package/dist/types/StockObjectMapper.js +1 -0
  237. package/dist/types/WhereOptionI.d.ts +6 -0
  238. package/dist/types/WhereOptionI.js +1 -0
  239. package/dist/types/parameters/ParameterFilter.d.ts +6 -0
  240. package/dist/types/parameters/ParameterFilter.js +1 -0
  241. package/dist/types/parameters/ParameterType.d.ts +13 -0
  242. package/dist/types/parameters/ParameterType.js +14 -0
  243. package/dist/types/rows/AddressRow.d.ts +9 -0
  244. package/dist/types/rows/AddressRow.js +1 -0
  245. package/dist/types/rows/AdminRow.d.ts +9 -0
  246. package/dist/types/rows/AdminRow.js +1 -0
  247. package/dist/types/rows/ClientAccountRow.d.ts +10 -0
  248. package/dist/types/rows/ClientAccountRow.js +1 -0
  249. package/dist/types/rows/CompanyDetailsRow.d.ts +5 -0
  250. package/dist/types/rows/CompanyDetailsRow.js +1 -0
  251. package/dist/types/rows/ContactDetailsRow.d.ts +5 -0
  252. package/dist/types/rows/ContactDetailsRow.js +1 -0
  253. package/dist/types/rows/DeliveryDetailsRow.d.ts +6 -0
  254. package/dist/types/rows/DeliveryDetailsRow.js +1 -0
  255. package/dist/types/rows/DeliveryStatusRow.d.ts +7 -0
  256. package/dist/types/rows/DeliveryStatusRow.js +1 -0
  257. package/dist/types/rows/FileRow.d.ts +9 -0
  258. package/dist/types/rows/FileRow.js +1 -0
  259. package/dist/types/rows/InvoiceDetailsRow.d.ts +5 -0
  260. package/dist/types/rows/InvoiceDetailsRow.js +1 -0
  261. package/dist/types/rows/OrderProductRow.d.ts +6 -0
  262. package/dist/types/rows/OrderProductRow.js +1 -0
  263. package/dist/types/rows/OrderRow.d.ts +12 -0
  264. package/dist/types/rows/OrderRow.js +1 -0
  265. package/dist/types/rows/PaymentDetailsRow.d.ts +6 -0
  266. package/dist/types/rows/PaymentDetailsRow.js +1 -0
  267. package/dist/types/rows/PaymentStatusRow.d.ts +6 -0
  268. package/dist/types/rows/PaymentStatusRow.js +1 -0
  269. package/dist/types/rows/PersonalDataRow.d.ts +8 -0
  270. package/dist/types/rows/PersonalDataRow.js +1 -0
  271. package/dist/types/rows/ProductRow.d.ts +17 -0
  272. package/dist/types/rows/ProductRow.js +1 -0
  273. package/dist/types/rows/StatusRow.d.ts +7 -0
  274. package/dist/types/rows/StatusRow.js +1 -0
  275. package/dist/utils/calculateNetToGrossPrice.d.ts +1 -0
  276. package/dist/utils/calculateNetToGrossPrice.js +7 -0
  277. package/dist/utils/correctPhoneNumber.d.ts +1 -0
  278. package/dist/utils/correctPhoneNumber.js +14 -0
  279. package/package.json +27 -0
@@ -0,0 +1,113 @@
1
+ import QueryParamCreator from './QueryParamCreator';
2
+ import QueryParamsCreator from './QueryParamCreator';
3
+ export default class QueryParams {
4
+ static where = '$WHERE';
5
+ static params = '$PARAMS';
6
+ static order = '$ORDERBY';
7
+ static limit = '$LIMIT';
8
+ static values = '$VALUES';
9
+ static paramConnector = 'AND';
10
+ static createParams(queryString, options) {
11
+ if (options.where && (queryString.includes(this.where) || queryString.includes(this.params)))
12
+ queryString = QueryParams.createWhereParams(queryString, options.where);
13
+ if (options && queryString.includes(this.order))
14
+ queryString = QueryParams.createOrderParams(queryString, options.order);
15
+ if (options && queryString.includes(this.limit))
16
+ queryString = QueryParams.createLimitParams(queryString, options.limit);
17
+ if (options.values && queryString.includes(this.values))
18
+ queryString = QueryParams.createValuesParams(queryString, options.values);
19
+ return queryString;
20
+ }
21
+ static createValuesParams(sql, values) {
22
+ const vals = [];
23
+ if (Array.isArray(values[0].value)) {
24
+ const quantity = values[0].value.length;
25
+ for (let i = 0; i < quantity; i++) {
26
+ vals.push(this.createValueParams(values, i));
27
+ }
28
+ }
29
+ else {
30
+ vals.push(this.createValueParams(values));
31
+ }
32
+ sql = sql.replaceAll(this.values, `VALUES ${vals.join(', ')}`);
33
+ return sql;
34
+ }
35
+ static createValueParams(values, index) {
36
+ const creatingValues = [];
37
+ values.forEach((value) => {
38
+ let valueall;
39
+ if (index) {
40
+ const paramType = QueryParamCreator.getBaseTypeForArrayType(value.type);
41
+ valueall = QueryParamCreator.createParamValue(`${value.name}_${index}`, paramType);
42
+ }
43
+ else {
44
+ valueall = QueryParamCreator.createParamValue(`${value.name}_0`, value.type);
45
+ }
46
+ creatingValues.push(valueall);
47
+ });
48
+ return `( ${creatingValues.join(', ')} )`;
49
+ }
50
+ static createWhereParams(sql, where) {
51
+ let sqlWithParams = '';
52
+ const params = this.createParamsSql(where.parameters);
53
+ if (sql.includes(this.where) || sql.includes(this.params)) {
54
+ if (params.length > 0) {
55
+ const { leftSql, rightSql } = this.splitSql(sql);
56
+ const connector = this.getWhereConnector(sql);
57
+ sqlWithParams = `${leftSql} ${connector} ${params.join(` ${where.connector}`)} ${rightSql}`;
58
+ }
59
+ else
60
+ sqlWithParams = this.removeWhereVariable(sql);
61
+ }
62
+ else
63
+ throw new Error(`Brak zmiennej: ${this.where} lub ${this.params} w zapytaniu sql`);
64
+ return sqlWithParams;
65
+ }
66
+ static createOrderParams(sql, order) {
67
+ if (order) {
68
+ sql = sql.replaceAll(this.order, `ORDER BY ${order}`);
69
+ }
70
+ else
71
+ sql = sql.replaceAll(this.order, '');
72
+ return sql;
73
+ }
74
+ static createLimitParams(sql, resultLimitation) {
75
+ if (resultLimitation) {
76
+ sql = sql.replaceAll(this.limit, `LIMIT $limit::BIGINT OFFSET $offset::BIGINT`);
77
+ }
78
+ else
79
+ sql = sql.replaceAll(this.limit, '');
80
+ return sql;
81
+ }
82
+ static createParamsSql(parameters) {
83
+ let sqlParams = [];
84
+ parameters.forEach((parameter) => {
85
+ if ((Array.isArray(parameter.value) && parameter.value.length > 0) ||
86
+ (!Array.isArray(parameter.value) && parameter.value))
87
+ sqlParams.push(QueryParamsCreator.createParam(parameter));
88
+ });
89
+ return sqlParams;
90
+ }
91
+ static removeWhereVariable(sql) {
92
+ sql = sql.replaceAll(this.where, '');
93
+ sql = sql.replaceAll(this.params, '');
94
+ return sql;
95
+ }
96
+ static splitSql(sql) {
97
+ let sqlArray = [];
98
+ if (sql.includes(this.where))
99
+ sqlArray = sql.split(this.where);
100
+ else if (sql.includes(this.params))
101
+ sqlArray = sql.split(this.params);
102
+ return {
103
+ leftSql: sqlArray[0],
104
+ rightSql: sqlArray[1]
105
+ };
106
+ }
107
+ static getWhereConnector(sql) {
108
+ if (sql.includes(this.where))
109
+ return 'WHERE';
110
+ else if (sql.includes(this.params))
111
+ return 'AND';
112
+ }
113
+ }
@@ -0,0 +1,11 @@
1
+ export default class Result {
2
+ private pgResult;
3
+ constructor(pgResult: any);
4
+ getRows(): Array<any>;
5
+ getRow(): any;
6
+ getRowCount(): number;
7
+ private getFields;
8
+ isFiledExists(fieldName: string): boolean;
9
+ private geFieldNames;
10
+ getValue(fieldName?: string | null): any;
11
+ }
@@ -0,0 +1,43 @@
1
+ import ResultsCorrector from './ResultsCorrector';
2
+ export default class Result {
3
+ pgResult;
4
+ constructor(pgResult) {
5
+ this.pgResult = pgResult;
6
+ }
7
+ getRows() {
8
+ const rows = this.pgResult.rows;
9
+ return ResultsCorrector.correctRows(rows);
10
+ }
11
+ getRow() {
12
+ if (this.getRowCount() > 0)
13
+ return this.getRows()[0];
14
+ else
15
+ return null;
16
+ }
17
+ getRowCount() {
18
+ return this.pgResult.rowCount;
19
+ }
20
+ getFields() {
21
+ return this.pgResult.fields;
22
+ }
23
+ isFiledExists(fieldName) {
24
+ return this.getFields().some((field) => field.name == fieldName);
25
+ }
26
+ geFieldNames() {
27
+ return this.getFields().map((element) => element.name);
28
+ }
29
+ getValue(fieldName = null) {
30
+ if (this.getRowCount() > 0) {
31
+ if (fieldName) {
32
+ if (this.isFiledExists(fieldName))
33
+ return this.getRows()[0][fieldName];
34
+ else
35
+ throw Error(`Field: '${fieldName}' not exists in query result. Available fileds: ${this.geFieldNames().join(', ')}`);
36
+ }
37
+ else
38
+ return this.getRows()[0][this.getFields()[0].name];
39
+ }
40
+ else
41
+ return null;
42
+ }
43
+ }
@@ -0,0 +1,4 @@
1
+ export default class ResultsCorrector {
2
+ static correctRows(rows: Array<any>): Array<any>;
3
+ private static isNumber;
4
+ }
@@ -0,0 +1,14 @@
1
+ export default class ResultsCorrector {
2
+ static correctRows(rows) {
3
+ rows.forEach((row) => {
4
+ Object.keys(row).forEach((key) => {
5
+ if (this.isNumber(row[key]))
6
+ row[key] = Number(row[key]);
7
+ });
8
+ });
9
+ return rows;
10
+ }
11
+ static isNumber(n) {
12
+ return !isNaN(parseFloat(n)) && !isNaN(n - 0);
13
+ }
14
+ }
@@ -0,0 +1,6 @@
1
+ import AddressI from "../types/AddressI";
2
+ export default class AddressesReader {
3
+ static get(addressId: number): Promise<AddressI>;
4
+ static getCompanyAddress(): Promise<AddressI>;
5
+ private static getCorrectData;
6
+ }
@@ -0,0 +1,24 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class AddressesReader {
3
+ static async get(addressId) {
4
+ const connection = DatabaseConnection.get();
5
+ const address = await connection.addresses.select(addressId);
6
+ return this.getCorrectData(address);
7
+ }
8
+ static async getCompanyAddress() {
9
+ const connection = DatabaseConnection.get();
10
+ const address = await connection.addresses.select(1);
11
+ return this.getCorrectData(address);
12
+ }
13
+ static getCorrectData(address) {
14
+ return {
15
+ id: address.id,
16
+ country: address.country,
17
+ city: address.city,
18
+ postalCode: address.postal_code,
19
+ street: address.street,
20
+ houseNumber: address.house_number,
21
+ apartmentNumber: address.apartment_number,
22
+ };
23
+ }
24
+ }
@@ -0,0 +1,7 @@
1
+ import ClientAccountI from "../types/ClientAccountI";
2
+ export default class ClientAccountReader {
3
+ static get(accountId: number): Promise<ClientAccountI>;
4
+ static getForEmail(email: string): Promise<ClientAccountI>;
5
+ static getIdForEmail(email: string): Promise<number>;
6
+ private static correctData;
7
+ }
@@ -0,0 +1,30 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class ClientAccountReader {
3
+ static async get(accountId) {
4
+ const connection = DatabaseConnection.get();
5
+ const account = await connection.accounts.select(accountId);
6
+ return this.correctData(account);
7
+ }
8
+ static async getForEmail(email) {
9
+ const connection = DatabaseConnection.get();
10
+ const account = await connection.accounts.selectForEmail(email);
11
+ return this.correctData(account);
12
+ }
13
+ static async getIdForEmail(email) {
14
+ const connection = DatabaseConnection.get();
15
+ const accountId = await connection.accounts.selectIdForEmail(email);
16
+ return accountId;
17
+ }
18
+ static correctData(account) {
19
+ return {
20
+ id: account.id,
21
+ email: account.email,
22
+ createdAt: account.created_at,
23
+ activated: account.activated,
24
+ deleted: account.deleted,
25
+ contactDetailsId: account.contact_details_id,
26
+ deliveryDetailsId: account.delivery_details_id,
27
+ invoiceDetailsId: account.invoice_details_id,
28
+ };
29
+ }
30
+ }
@@ -0,0 +1,4 @@
1
+ import CompanyDetailsI from "../types/CompanyDetailsI";
2
+ export default class CompanyDetailsReader {
3
+ static get(companyDetailsId: number): Promise<CompanyDetailsI>;
4
+ }
@@ -0,0 +1,15 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class CompanyDetailsReader {
3
+ static async get(companyDetailsId) {
4
+ const connection = DatabaseConnection.get();
5
+ const companyDetails = await connection.companyDetails.select(companyDetailsId);
6
+ if (companyDetails)
7
+ return {
8
+ id: companyDetails.id,
9
+ name: companyDetails.name,
10
+ taxNumber: companyDetails.tax_number
11
+ };
12
+ else
13
+ throw Error(`no companyDetails found for id: ${companyDetailsId}`);
14
+ }
15
+ }
@@ -0,0 +1,4 @@
1
+ import ContactDetailsI from "../types/ContactDetailsI";
2
+ export default class ContactDetailsReader {
3
+ static get(contactDetailsId: number): Promise<ContactDetailsI>;
4
+ }
@@ -0,0 +1,16 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import AddressesReader from "./AddressesReader";
3
+ import PersonalDataReader from "./PersonalDataReader";
4
+ export default class ContactDetailsReader {
5
+ static async get(contactDetailsId) {
6
+ const connection = DatabaseConnection.get();
7
+ const contactDetails = await connection.contactDetails.select(contactDetailsId);
8
+ const personalData = await PersonalDataReader.get(contactDetails.personal_data_id);
9
+ const address = contactDetails.address_id ? await AddressesReader.get(contactDetails.address_id) : null;
10
+ return {
11
+ id: contactDetails.id,
12
+ personalData,
13
+ address
14
+ };
15
+ }
16
+ }
@@ -0,0 +1,4 @@
1
+ import DeliveryDetailsI from "../types/DeliveryDetailsI";
2
+ export default class DeliveryDetailsReader {
3
+ static get(deliveryDetailsId: number): Promise<DeliveryDetailsI>;
4
+ }
@@ -0,0 +1,31 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import AddressesReader from "./AddressesReader";
3
+ import DeliveryMethodReader from "./DeliveryMethodReader";
4
+ import DeliveryStatusReader from "./DeliveryStatusReader";
5
+ import PersonalDataReader from "./PersonalDataReader";
6
+ export default class DeliveryDetailsReader {
7
+ static async get(deliveryDetailsId) {
8
+ const connection = DatabaseConnection.get();
9
+ const deliveryDetails = await connection.deliveryDetails.select(deliveryDetailsId);
10
+ const id = deliveryDetails.id;
11
+ let personalData = null;
12
+ let address = null;
13
+ let deliveryMethod = null;
14
+ if (deliveryDetails.personal_data_id)
15
+ personalData = await PersonalDataReader.get(deliveryDetails.personal_data_id);
16
+ if (deliveryDetails.address_id)
17
+ address = await AddressesReader.get(deliveryDetails.address_id);
18
+ if (deliveryDetails.delivery_method_id)
19
+ deliveryMethod = await DeliveryMethodReader.get(deliveryDetails.delivery_method_id);
20
+ const status = await DeliveryStatusReader.get(deliveryDetails.id);
21
+ const statuses = await DeliveryStatusReader.getAll(deliveryDetails.id);
22
+ return {
23
+ id,
24
+ personalData,
25
+ address,
26
+ deliveryMethod,
27
+ status,
28
+ statuses,
29
+ };
30
+ }
31
+ }
@@ -0,0 +1,5 @@
1
+ import DeliveryMethodI from "../types/DeliveryMethodI";
2
+ export default class DeliveryMethodReader {
3
+ static get(id: number): Promise<DeliveryMethodI>;
4
+ static getAll(): Promise<DeliveryMethodI[]>;
5
+ }
@@ -0,0 +1,13 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class DeliveryMethodReader {
3
+ static async get(id) {
4
+ const connection = DatabaseConnection.get();
5
+ const deliveryMethod = await connection.deliveryMethods.select(id);
6
+ return deliveryMethod;
7
+ }
8
+ static async getAll() {
9
+ const connection = DatabaseConnection.get();
10
+ const deliveryMethods = await connection.deliveryMethods.selectAll();
11
+ return deliveryMethods;
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ export default class DeliveryStatusReader {
2
+ static get(deliveryDetailsId: number): Promise<any>;
3
+ static getAll(deliveryDetailsId: number): Promise<any[]>;
4
+ private static correctDeliveryStatus;
5
+ }
@@ -0,0 +1,31 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class DeliveryStatusReader {
3
+ static async get(deliveryDetailsId) {
4
+ const connection = DatabaseConnection.get();
5
+ const deliveryStatus = await connection.deliveryStatuses.select(deliveryDetailsId);
6
+ if (deliveryStatus)
7
+ return await this.correctDeliveryStatus(deliveryStatus);
8
+ else
9
+ return {};
10
+ }
11
+ static async getAll(deliveryDetailsId) {
12
+ const connection = DatabaseConnection.get();
13
+ const deliveryStatusesData = await connection.deliveryStatuses.selectAll(deliveryDetailsId);
14
+ const deliveryStatuses = [];
15
+ for (let i = 0; i < deliveryStatusesData.length; i++) {
16
+ const deliveryStatus = await this.correctDeliveryStatus(deliveryStatusesData[i]);
17
+ deliveryStatuses.push(deliveryStatus);
18
+ }
19
+ return deliveryStatuses;
20
+ }
21
+ static async correctDeliveryStatus(deliveryStatus) {
22
+ const connection = DatabaseConnection.get();
23
+ const deliveryStatusType = await connection.deliveryStatusTypes.select(deliveryStatus.delivery_status_type_id);
24
+ return {
25
+ id: deliveryStatus.id,
26
+ type: deliveryStatusType,
27
+ userId: deliveryStatus.user_id,
28
+ createdAt: deliveryStatus.created_at
29
+ };
30
+ }
31
+ }
@@ -0,0 +1,7 @@
1
+ import FileConnectionE from "../types/FileConnectionE";
2
+ import FileI from "../types/FileI";
3
+ export default class FilesReader {
4
+ static get(fileId: number): Promise<FileI>;
5
+ static getForConnection(connectionType: FileConnectionE, connectionId: number): Promise<FileI[]>;
6
+ private static correctFile;
7
+ }
@@ -0,0 +1,26 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class FilesReader {
3
+ static async get(fileId) {
4
+ const connection = DatabaseConnection.get();
5
+ const file = await connection.files.select(fileId);
6
+ return this.correctFile(file);
7
+ }
8
+ static async getForConnection(connectionType, connectionId) {
9
+ const connection = DatabaseConnection.get();
10
+ const files = await connection.files.selectForConnection(connectionType, connectionId);
11
+ const correctFiles = [];
12
+ files.forEach((file) => {
13
+ correctFiles.push(this.correctFile(file));
14
+ });
15
+ return correctFiles;
16
+ }
17
+ static correctFile(file) {
18
+ const correctFile = {
19
+ id: file.id,
20
+ name: file.name,
21
+ catalog: file.catalog,
22
+ type: file.type,
23
+ };
24
+ return correctFile;
25
+ }
26
+ }
@@ -0,0 +1,4 @@
1
+ import InvoiceDetailsI from "../types/InvoiceDetailsI";
2
+ export default class InvoiceDetailsReader {
3
+ static get(invoiceDetailsId: number): Promise<InvoiceDetailsI>;
4
+ }
@@ -0,0 +1,21 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import AddressesReader from "./AddressesReader";
3
+ import PersonalDataReader from "./PersonalDataReader";
4
+ export default class InvoiceDetailsReader {
5
+ static async get(invoiceDetailsId) {
6
+ const connection = DatabaseConnection.get();
7
+ const invoiceDetails = await connection.invoiceDetails.select(invoiceDetailsId);
8
+ const id = invoiceDetails.id;
9
+ let personalData = null;
10
+ let address = null;
11
+ if (invoiceDetails.personal_data_id)
12
+ personalData = await PersonalDataReader.get(invoiceDetails.personal_data_id);
13
+ if (invoiceDetails.address_id)
14
+ address = await AddressesReader.get(invoiceDetails.address_id);
15
+ return {
16
+ id,
17
+ personalData,
18
+ address
19
+ };
20
+ }
21
+ }
@@ -0,0 +1,6 @@
1
+ import OrderProductI from "../types/OrderProductI";
2
+ export default class OrderProductsReader {
3
+ static getForOrder(orderId: number): Promise<OrderProductI[]>;
4
+ static getAll(orderId: number): Promise<OrderProductI[]>;
5
+ private static correctProduct;
6
+ }
@@ -0,0 +1,50 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import calculateNetToGrossPrice from "../utils/calculateNetToGrossPrice";
3
+ import FilesReader from "./FilesReader";
4
+ import ProductReader from "./ProductReader";
5
+ export default class OrderProductsReader {
6
+ static async getForOrder(orderId) {
7
+ const connection = DatabaseConnection.get();
8
+ const products = await connection.ordersProducts.selectAll(orderId);
9
+ const correctProducts = [];
10
+ for (let i = 0; i < products.length; i++) {
11
+ const correctProduct = {
12
+ id: products[i].id,
13
+ orderId: products[i].order_id,
14
+ productId: products[i].product_id,
15
+ netPrice: products[i].net_price,
16
+ };
17
+ correctProducts.push(correctProduct);
18
+ }
19
+ return correctProducts;
20
+ }
21
+ static async getAll(orderId) {
22
+ const connection = DatabaseConnection.get();
23
+ const products = await connection.ordersProducts.selectAll(orderId);
24
+ const correctProducts = [];
25
+ for (let i = 0; i < products.length; i++) {
26
+ const correctProduct = await this.correctProduct(products[i]);
27
+ correctProducts.push(correctProduct);
28
+ }
29
+ return correctProducts;
30
+ }
31
+ static async correctProduct(orderProduct) {
32
+ const product = await ProductReader.get(orderProduct.product_id);
33
+ const file = await FilesReader.get(product.fileId);
34
+ const correctProduct = {
35
+ id: orderProduct.id,
36
+ productId: orderProduct.product_id,
37
+ orderId: orderProduct.order_id,
38
+ product: {
39
+ id: product.id,
40
+ sku: product.sku,
41
+ title: product.title,
42
+ netPrice: product.netPrice,
43
+ grossPrice: calculateNetToGrossPrice(product.netPrice, product.vat),
44
+ vat: product.vat,
45
+ file,
46
+ }
47
+ };
48
+ return correctProduct;
49
+ }
50
+ }
@@ -0,0 +1,6 @@
1
+ import OrderI from "../types/OrderI";
2
+ export default class OrderReader {
3
+ static get(orderId: number): Promise<OrderI>;
4
+ static getForClient(clientAccountId: number): Promise<OrderI[]>;
5
+ private static correctOrder;
6
+ }
@@ -0,0 +1,37 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import OrderProductsReader from "./OrderProductsReader";
3
+ import OrderStatusReader from "./OrderStatusReader";
4
+ export default class OrderReader {
5
+ static async get(orderId) {
6
+ const connection = DatabaseConnection.get();
7
+ const orderData = await connection.orders.select(orderId);
8
+ return this.correctOrder(orderData);
9
+ }
10
+ static async getForClient(clientAccountId) {
11
+ const connection = DatabaseConnection.get();
12
+ const orders = await connection.orders.selectForClient(clientAccountId);
13
+ const correctOrders = [];
14
+ for (let i = 0; i < orders.length; i++) {
15
+ const correctOrder = this.correctOrder(orders[i]);
16
+ const products = await OrderProductsReader.getAll(orders[i].id);
17
+ const status = await OrderStatusReader.get(orders[i].id);
18
+ correctOrders.push({ ...correctOrder, status, products });
19
+ }
20
+ return correctOrders;
21
+ }
22
+ static correctOrder(order) {
23
+ const correctOrder = {
24
+ id: order.id,
25
+ email: order.email,
26
+ price: order.price,
27
+ createdAt: order.created_at,
28
+ clientId: order.client_id,
29
+ contactDetailsId: order.contact_details_id,
30
+ deliveryDetailsId: order.delivery_details_id,
31
+ invoiceDetailsId: order.invoice_details_id,
32
+ paymentDetailsId: order.payment_details_id,
33
+ zsiId: order.zsi_id
34
+ };
35
+ return correctOrder;
36
+ }
37
+ }
@@ -0,0 +1,6 @@
1
+ import OrderStatusI from "../types/OrderStatusI";
2
+ export default class OrderStatusReader {
3
+ static get(orderId: number): Promise<OrderStatusI>;
4
+ static getAll(orderId: number): Promise<OrderStatusI[]>;
5
+ private static correctStatus;
6
+ }
@@ -0,0 +1,28 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class OrderStatusReader {
3
+ static async get(orderId) {
4
+ const connection = DatabaseConnection.get();
5
+ const statusRow = await connection.statuses.selectForOrder(orderId);
6
+ return this.correctStatus(statusRow);
7
+ }
8
+ static async getAll(orderId) {
9
+ const connection = DatabaseConnection.get();
10
+ const statuses = await connection.statuses.selectAllForOrder(orderId);
11
+ const correctStatuss = [];
12
+ for (let i = 0; i < statuses.length; i++) {
13
+ const correctStatus = this.correctStatus(statuses[i]);
14
+ correctStatuss.push(correctStatus);
15
+ }
16
+ return correctStatuss;
17
+ }
18
+ static correctStatus(status) {
19
+ const correctStatus = {
20
+ id: status.id,
21
+ orderId: status.order_id,
22
+ createdAt: status.created_at,
23
+ userId: status.user_id,
24
+ type: status.type,
25
+ };
26
+ return correctStatus;
27
+ }
28
+ }
@@ -0,0 +1,5 @@
1
+ import PersonalDataI from "../types/PersonalDataI";
2
+ export default class PersonalDataReader {
3
+ static get(personalDataId: number): Promise<PersonalDataI>;
4
+ private static getCorrectData;
5
+ }
@@ -0,0 +1,27 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import correctPhoneNumber from "../utils/correctPhoneNumber";
3
+ import CompanyDetailsReader from "./CompanyDetailsReader";
4
+ export default class PersonalDataReader {
5
+ static async get(personalDataId) {
6
+ const connection = DatabaseConnection.get();
7
+ const data = await connection.personalData.select(personalDataId);
8
+ const correctData = this.getCorrectData(data);
9
+ if (data.company_details_id) {
10
+ correctData.companyDetails = await CompanyDetailsReader.get(data.company_details_id);
11
+ correctData.isCompany = true;
12
+ }
13
+ return correctData;
14
+ }
15
+ static getCorrectData(data) {
16
+ const phoneNumber = correctPhoneNumber(data.phone_number);
17
+ return {
18
+ id: data.id,
19
+ firstName: data.first_name,
20
+ lastName: data.last_name,
21
+ email: data.email,
22
+ phoneNumber,
23
+ companyDetails: null,
24
+ isCompany: false
25
+ };
26
+ }
27
+ }
@@ -0,0 +1,10 @@
1
+ import ProductI from "../types/ProductI";
2
+ import QueryOptionsI from "../types/QueryOptionsI";
3
+ export default class ProductReader {
4
+ static get(productId: number): Promise<ProductI>;
5
+ static getForUrl(productUrl: string): Promise<ProductI>;
6
+ static getAll(queryOptions: QueryOptionsI): Promise<ProductI[]>;
7
+ static getQuantity(queryOptions: QueryOptionsI): Promise<number>;
8
+ private static correctProducts;
9
+ private static correctProduct;
10
+ }