@dascompany/database 0.0.2 → 0.0.4

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 (108) hide show
  1. package/dist/SQL.json +35 -3
  2. package/dist/TableConnection.d.ts +8 -2
  3. package/dist/TableConnection.js +14 -2
  4. package/dist/index.d.ts +21 -1
  5. package/dist/index.js +16 -1
  6. package/dist/mappers/CompanyDataMapper.d.ts +9 -0
  7. package/dist/mappers/CompanyDataMapper.js +17 -0
  8. package/dist/mappers/DeliveryMethodsMapper.d.ts +9 -0
  9. package/dist/mappers/DeliveryMethodsMapper.js +17 -0
  10. package/dist/mappers/FileConnectionMapper.d.ts +9 -0
  11. package/dist/mappers/FileConnectionMapper.js +17 -0
  12. package/dist/mappers/PaymentMethodsMapper.d.ts +9 -0
  13. package/dist/mappers/PaymentMethodsMapper.js +17 -0
  14. package/dist/query/QueryOptions.d.ts +6 -0
  15. package/dist/query/QueryOptions.js +25 -0
  16. package/dist/reader/ClientAccountReader.d.ts +6 -0
  17. package/dist/reader/ClientAccountReader.js +27 -10
  18. package/dist/reader/CompanyDataReader.d.ts +4 -0
  19. package/dist/reader/CompanyDataReader.js +27 -0
  20. package/dist/reader/DeliveryMethodReader.d.ts +1 -0
  21. package/dist/reader/DeliveryMethodReader.js +5 -0
  22. package/dist/reader/FileConnectionsReader.d.ts +6 -0
  23. package/dist/reader/FileConnectionsReader.js +25 -0
  24. package/dist/reader/ProductReader.d.ts +2 -0
  25. package/dist/reader/ProductReader.js +21 -0
  26. package/dist/reader/StatusTypesReader.d.ts +3 -0
  27. package/dist/reader/StatusTypesReader.js +8 -0
  28. package/dist/reader/payment/PaymentMethodReader.d.ts +1 -0
  29. package/dist/reader/payment/PaymentMethodReader.js +5 -0
  30. package/dist/repo/AdminRepo.d.ts +12 -0
  31. package/dist/repo/AdminRepo.js +32 -0
  32. package/dist/repo/ClientAccountRepo.d.ts +2 -0
  33. package/dist/repo/ClientAccountRepo.js +10 -0
  34. package/dist/repo/CompanyDataRepo.d.ts +4 -0
  35. package/dist/repo/CompanyDataRepo.js +11 -0
  36. package/dist/repo/ContactDetailsRepo.d.ts +1 -0
  37. package/dist/repo/ContactDetailsRepo.js +8 -3
  38. package/dist/repo/DeliveryMethodRepo.d.ts +4 -0
  39. package/dist/repo/DeliveryMethodRepo.js +11 -0
  40. package/dist/repo/FileConnectionsRepo.d.ts +7 -0
  41. package/dist/repo/FileConnectionsRepo.js +25 -0
  42. package/dist/repo/PaymentMethodRepo.d.ts +4 -0
  43. package/dist/repo/PaymentMethodRepo.js +11 -0
  44. package/dist/repo/ProductRepo.d.ts +1 -0
  45. package/dist/repo/ProductRepo.js +5 -0
  46. package/dist/stockObjects/CompanyData.d.ts +21 -0
  47. package/dist/stockObjects/CompanyData.js +51 -0
  48. package/dist/stockObjects/DeliveryDetails.d.ts +1 -0
  49. package/dist/stockObjects/DeliveryDetails.js +3 -0
  50. package/dist/stockObjects/DeliveryMethods.d.ts +12 -0
  51. package/dist/stockObjects/DeliveryMethods.js +26 -0
  52. package/dist/stockObjects/FileConnection.d.ts +18 -0
  53. package/dist/stockObjects/FileConnection.js +42 -0
  54. package/dist/stockObjects/Order.d.ts +1 -1
  55. package/dist/stockObjects/PaymentDetails.d.ts +1 -1
  56. package/dist/stockObjects/PaymentDetails.js +1 -1
  57. package/dist/stockObjects/PaymentMethods.d.ts +12 -0
  58. package/dist/stockObjects/PaymentMethods.js +26 -0
  59. package/dist/stockObjects/Product.d.ts +1 -1
  60. package/dist/stockObjects/Product.js +5 -2
  61. package/dist/tables/ClientAccountsTable.d.ts +5 -2
  62. package/dist/tables/ClientAccountsTable.js +16 -4
  63. package/dist/tables/ProductsTable.d.ts +10 -0
  64. package/dist/tables/ProductsTable.js +72 -0
  65. package/dist/tables/files/FileConnectionsTable.d.ts +12 -0
  66. package/dist/tables/files/FileConnectionsTable.js +41 -0
  67. package/dist/tables/personalInformation/ContactDetailsTable.d.ts +1 -1
  68. package/dist/tables/settings/CompanyDataTable.d.ts +10 -0
  69. package/dist/tables/settings/CompanyDataTable.js +37 -0
  70. package/dist/tables/settings/DeliveryMethodsTable.d.ts +12 -0
  71. package/dist/tables/settings/DeliveryMethodsTable.js +43 -0
  72. package/dist/tables/settings/PaymentMethodsTable.d.ts +12 -0
  73. package/dist/tables/settings/PaymentMethodsTable.js +43 -0
  74. package/dist/types/CompanyDataI.d.ts +8 -0
  75. package/dist/types/CompanyDataI.js +1 -0
  76. package/dist/types/FileConnectionI.d.ts +6 -0
  77. package/dist/types/FileConnectionI.js +1 -0
  78. package/dist/types/FileConnectionTypeE.d.ts +4 -0
  79. package/dist/types/FileConnectionTypeE.js +5 -0
  80. package/dist/types/PersonalDataI.d.ts +1 -1
  81. package/dist/types/QueryOptionsI.d.ts +2 -1
  82. package/dist/types/parameters/ParameterType.d.ts +12 -9
  83. package/dist/types/parameters/ParameterType.js +12 -9
  84. package/dist/types/rows/CompanyDataRow.d.ts +8 -0
  85. package/dist/types/rows/CompanyDataRow.js +1 -0
  86. package/dist/types/rows/DeliveryMethodRow.d.ts +5 -0
  87. package/dist/types/rows/DeliveryMethodRow.js +1 -0
  88. package/dist/types/rows/FileConnectionRow.d.ts +6 -0
  89. package/dist/types/rows/FileConnectionRow.js +1 -0
  90. package/dist/types/rows/PaymentMethodRow.d.ts +5 -0
  91. package/dist/types/rows/PaymentMethodRow.js +1 -0
  92. package/dist/utils/Filters.d.ts +6 -0
  93. package/dist/utils/Filters.js +31 -0
  94. package/dist/utils/OrderByI.d.ts +4 -0
  95. package/dist/utils/OrderByI.js +1 -0
  96. package/dist/utils/Parameters.d.ts +5 -0
  97. package/dist/utils/Parameters.js +23 -0
  98. package/dist/utils/parameters/ParameterConversionSystem.d.ts +5 -0
  99. package/dist/utils/parameters/ParameterConversionSystem.js +28 -0
  100. package/dist/utils/parameters/ParameterFilterSystem.d.ts +4 -0
  101. package/dist/utils/parameters/ParameterFilterSystem.js +11 -0
  102. package/dist/utils/parameters/ParameterRulesSystem.d.ts +3 -0
  103. package/dist/utils/parameters/ParameterRulesSystem.js +8 -0
  104. package/package.json +1 -1
  105. package/dist/tables/store-settings/DeliveryMethodsTable.d.ts +0 -6
  106. package/dist/tables/store-settings/DeliveryMethodsTable.js +0 -15
  107. package/dist/tables/store-settings/PaymentMethodsTable.d.ts +0 -6
  108. package/dist/tables/store-settings/PaymentMethodsTable.js +0 -15
@@ -7,6 +7,23 @@ export default class ProductsTable extends Table {
7
7
  const result = await query.execute();
8
8
  return result.getRow();
9
9
  }
10
+ async selectForSku(sku) {
11
+ const query = this.createQuery(SQL.products.selectForSku);
12
+ query.bindParameter('sku', String(sku).toUpperCase());
13
+ const result = await query.execute();
14
+ return result.getRow();
15
+ }
16
+ async selectIdForSku(sku) {
17
+ const query = this.createQuery(SQL.products.selectIdForSku);
18
+ query.bindParameter('sku', String(sku).toUpperCase());
19
+ const result = await query.execute();
20
+ return result.getValue();
21
+ }
22
+ async selectListForOrder() {
23
+ const query = this.createQuery(SQL.products.selectListForOrder);
24
+ const result = await query.execute();
25
+ return result.getRows();
26
+ }
10
27
  async selectAll(queryOption) {
11
28
  const query = this.createQuery(SQL.products.selectAll, queryOption);
12
29
  const result = await query.execute();
@@ -18,9 +35,64 @@ export default class ProductsTable extends Table {
18
35
  const result = await query.execute();
19
36
  return result.getRow();
20
37
  }
38
+ async insert(productData) {
39
+ const sku = productData.getSku();
40
+ let productId = await this.selectIdForSku(sku);
41
+ if (productId)
42
+ throw new Error(`Product with SKU: ${sku} already exist!`);
43
+ else
44
+ productId = await this.selectNextId();
45
+ const query = this.createQuery(SQL.products.insert);
46
+ query.bindParameter('id', productId);
47
+ this.bindParameters(query, productData);
48
+ productData.setId(productId);
49
+ await query.execute();
50
+ return productId;
51
+ }
21
52
  async count(queryOption) {
22
53
  const query = this.createQuery(SQL.products.count, queryOption);
23
54
  const result = await query.execute();
24
55
  return result.getValue();
25
56
  }
57
+ async update(product) {
58
+ const query = this.createQuery(SQL.products.update);
59
+ query.bindParameter('id', product.getId());
60
+ this.bindParameters(query, product);
61
+ await query.execute();
62
+ return true;
63
+ }
64
+ async delete(productId) {
65
+ const query = this.createQuery(SQL.products.delete);
66
+ query.bindParameter('id', productId);
67
+ const result = await query.execute();
68
+ return result.getRowCount();
69
+ }
70
+ async restore(product) {
71
+ const productId = await this.selectIdForSku(product.getSku());
72
+ if (productId)
73
+ throw Error(`This product cannot be restored because it has been edited. There is a newer version of this product (id: ${productId})`);
74
+ const query = this.createQuery(SQL.products.restore);
75
+ query.bindParameter('id', product.getId());
76
+ const result = await query.execute();
77
+ return result.getRowCount();
78
+ }
79
+ bindParameters(query, productData) {
80
+ query.bindParameter('sku', productData.getSku());
81
+ query.bindParameter('url', productData.getUrl());
82
+ query.bindParameter('title', productData.getTitle());
83
+ query.bindParameter('description', productData.getDescription());
84
+ query.bindParameter('net_price', productData.getNetPrice());
85
+ query.bindParameter('vat', productData.getVat());
86
+ query.bindParameter('color', productData.getColor());
87
+ query.bindParameter('quantity', productData.getQuantity());
88
+ query.bindParameter('width', productData.getWidth());
89
+ query.bindParameter('length', productData.getLength());
90
+ query.bindParameter('height', productData.getHeight());
91
+ query.bindParameter('file_id', productData.getFileId());
92
+ }
93
+ async selectNextId() {
94
+ const query = this.createQuery(SQL.products.selectNextId);
95
+ const result = await query.execute();
96
+ return result.getValue();
97
+ }
26
98
  }
@@ -0,0 +1,12 @@
1
+ import Table from '../../Table';
2
+ import FileConnectionTypeE from '../../types/FileConnectionTypeE';
3
+ import FileConnection from '../../stockObjects/FileConnection';
4
+ import FileConnectionRow from '../../types/rows/FileConnectionRow';
5
+ export default class FileConnectionsTable extends Table {
6
+ select(connectionType: FileConnectionTypeE, connection_id: number): Promise<any[]>;
7
+ selectForFileId(fileId: number): Promise<FileConnectionRow[]>;
8
+ insert(fileConnection: FileConnection): Promise<void>;
9
+ delete(fileId: number): Promise<boolean>;
10
+ deleteForConnection(connectionType: string, connectionId: number): Promise<boolean>;
11
+ private bindParameters;
12
+ }
@@ -0,0 +1,41 @@
1
+ import Table from '../../Table';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class FileConnectionsTable extends Table {
4
+ async select(connectionType, connection_id) {
5
+ const query = this.createQuery(SQL.fileConnections.select);
6
+ query.bindParameter('connectionType', connectionType);
7
+ query.bindParameter('connection_id', connection_id);
8
+ const result = await query.execute();
9
+ return result.getRows();
10
+ }
11
+ async selectForFileId(fileId) {
12
+ const query = this.createQuery(SQL.fileConnections.selectForFileId);
13
+ query.bindParameter('file_id', fileId);
14
+ const result = await query.execute();
15
+ return result.getRows();
16
+ }
17
+ async insert(fileConnection) {
18
+ const query = this.createQuery(SQL.fileConnections.insert);
19
+ this.bindParameters(query, fileConnection);
20
+ await query.execute();
21
+ }
22
+ async delete(fileId) {
23
+ const query = this.createQuery(SQL.fileConnections.delete);
24
+ query.bindParameter('file_id', fileId);
25
+ await query.execute();
26
+ return true;
27
+ }
28
+ async deleteForConnection(connectionType, connectionId) {
29
+ const query = this.createQuery(SQL.fileConnections.deleteForConnection);
30
+ query.bindParameter('connection_type', connectionType);
31
+ query.bindParameter('connection_id', connectionId);
32
+ await query.execute();
33
+ return true;
34
+ }
35
+ bindParameters(query, fileConnection) {
36
+ query.bindParameter('file_id', fileConnection.getFileId());
37
+ query.bindParameter('connection_type', fileConnection.getConnectionType());
38
+ query.bindParameter('connection_id', fileConnection.getConnectionId());
39
+ query.bindParameter('sequence', fileConnection.getSequence());
40
+ }
41
+ }
@@ -5,6 +5,6 @@ export default class ContactDetailsTable extends Table {
5
5
  select(contactDetailsId: number): Promise<ContactDetailsRow>;
6
6
  insert(contactDetails: ContactDetails): Promise<void>;
7
7
  update(contactDetails: ContactDetails): Promise<void>;
8
- private selectNextId;
8
+ selectNextId(): Promise<number>;
9
9
  private bindParameters;
10
10
  }
@@ -0,0 +1,10 @@
1
+ import Table from '../../Table';
2
+ import CompanyData from '../../stockObjects/CompanyData';
3
+ import CompanyDataRow from '../../types/rows/CompanyDataRow';
4
+ export default class CompanyDataTable extends Table {
5
+ select(): Promise<CompanyDataRow>;
6
+ update(companyData: CompanyData): Promise<boolean>;
7
+ insert(companyData: CompanyData): Promise<boolean>;
8
+ private selectNextId;
9
+ private bindParameters;
10
+ }
@@ -0,0 +1,37 @@
1
+ import Table from '../../Table';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class CompanyDataTable extends Table {
4
+ async select() {
5
+ const query = this.createQuery(SQL.companyData.select);
6
+ const result = await query.execute();
7
+ return result.getRow();
8
+ }
9
+ async update(companyData) {
10
+ const query = this.createQuery(SQL.companyData.update);
11
+ query.bindParameter('id', companyData.getId());
12
+ this.bindParameters(query, companyData);
13
+ await query.execute();
14
+ return true;
15
+ }
16
+ async insert(companyData) {
17
+ const id = await this.selectNextId();
18
+ const query = this.createQuery(SQL.companyData.insert);
19
+ query.bindParameter('id', id);
20
+ this.bindParameters(query, companyData);
21
+ await query.execute();
22
+ companyData.setId(id);
23
+ return true;
24
+ }
25
+ async selectNextId() {
26
+ const query = this.createQuery(SQL.companyData.selectNextId);
27
+ const result = await query.execute();
28
+ return result.getValue();
29
+ }
30
+ bindParameters(query, companyData) {
31
+ query.bindParameter('name', companyData.getName());
32
+ query.bindParameter('tax_number', companyData.getTaxNumber());
33
+ query.bindParameter('email', companyData.getEmail());
34
+ query.bindParameter('phone_number', companyData.getPhoneNumber());
35
+ query.bindParameter('address_id', companyData.getAddressId());
36
+ }
37
+ }
@@ -0,0 +1,12 @@
1
+ import Table from '../../Table';
2
+ import DeliveryMethodI from '../../types/DeliveryMethodI';
3
+ import DeliveryMethodRow from '../../types/rows/DeliveryMethodRow';
4
+ import DeliveryMethods from '../../stockObjects/DeliveryMethods';
5
+ export default class DeliveryMethodsTable extends Table {
6
+ select(id: number): Promise<DeliveryMethodI>;
7
+ selectAll(): Promise<DeliveryMethodI[]>;
8
+ selectAllActive(): Promise<DeliveryMethodRow[]>;
9
+ insert(deliveryMethods: DeliveryMethods): Promise<boolean>;
10
+ update(deliveryMethods: DeliveryMethods): Promise<boolean>;
11
+ private selectNextId;
12
+ }
@@ -0,0 +1,43 @@
1
+ import Table from '../../Table';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class DeliveryMethodsTable extends Table {
4
+ async select(id) {
5
+ const query = this.createQuery(SQL.deliveryMethods.select);
6
+ query.bindParameter('id', id);
7
+ const result = await query.execute();
8
+ return result.getRow();
9
+ }
10
+ async selectAll() {
11
+ const query = this.createQuery(SQL.deliveryMethods.selectAll);
12
+ const result = await query.execute();
13
+ return result.getRows();
14
+ }
15
+ async selectAllActive() {
16
+ const query = this.createQuery(SQL.deliveryMethods.selectAllActive);
17
+ const result = await query.execute();
18
+ return result.getRows();
19
+ }
20
+ async insert(deliveryMethods) {
21
+ const id = await this.selectNextId();
22
+ const query = this.createQuery(SQL.deliveryMethods.insert);
23
+ query.bindParameter('id', id);
24
+ query.bindParameter('key', deliveryMethods.getKey());
25
+ query.bindParameter('active', deliveryMethods.getActive());
26
+ await query.execute();
27
+ deliveryMethods.setId(id);
28
+ return true;
29
+ }
30
+ async update(deliveryMethods) {
31
+ const query = this.createQuery(SQL.deliveryMethods.update);
32
+ query.bindParameter('id', deliveryMethods.getId());
33
+ query.bindParameter('key', deliveryMethods.getKey());
34
+ query.bindParameter('active', deliveryMethods.getActive());
35
+ await query.execute();
36
+ return true;
37
+ }
38
+ async selectNextId() {
39
+ const query = this.createQuery(SQL.deliveryMethods.selectNextId);
40
+ const result = await query.execute();
41
+ return result.getValue();
42
+ }
43
+ }
@@ -0,0 +1,12 @@
1
+ import Table from '../../Table';
2
+ import PaymentMethodI from '../../types/PaymentMethodI';
3
+ import PaymentMethods from '../../stockObjects/PaymentMethods';
4
+ import PaymentMethodRow from '../../types/rows/PaymentMethodRow';
5
+ export default class PaymentMethodsTable extends Table {
6
+ select(id: number): Promise<PaymentMethodI>;
7
+ selectAll(): Promise<PaymentMethodI[]>;
8
+ selectAllActive(): Promise<PaymentMethodRow[]>;
9
+ insert(paymentMethods: PaymentMethods): Promise<boolean>;
10
+ update(paymentMethods: PaymentMethods): Promise<boolean>;
11
+ private selectNextId;
12
+ }
@@ -0,0 +1,43 @@
1
+ import Table from '../../Table';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class PaymentMethodsTable extends Table {
4
+ async select(id) {
5
+ const query = this.createQuery(SQL.paymentMethods.select);
6
+ query.bindParameter('id', id);
7
+ const result = await query.execute();
8
+ return result.getRow();
9
+ }
10
+ async selectAll() {
11
+ const query = this.createQuery(SQL.paymentMethods.selectAll);
12
+ const result = await query.execute();
13
+ return result.getRows();
14
+ }
15
+ async selectAllActive() {
16
+ const query = this.createQuery(SQL.paymentMethods.selectAllActive);
17
+ const result = await query.execute();
18
+ return result.getRows();
19
+ }
20
+ async insert(paymentMethods) {
21
+ const id = await this.selectNextId();
22
+ const query = this.createQuery(SQL.paymentMethods.insert);
23
+ query.bindParameter('id', id);
24
+ query.bindParameter('key', paymentMethods.getKey());
25
+ query.bindParameter('active', paymentMethods.getActive());
26
+ await query.execute();
27
+ paymentMethods.setId(id);
28
+ return true;
29
+ }
30
+ async update(paymentMethods) {
31
+ const query = this.createQuery(SQL.paymentMethods.update);
32
+ query.bindParameter('id', paymentMethods.getId());
33
+ query.bindParameter('key', paymentMethods.getKey());
34
+ query.bindParameter('active', paymentMethods.getActive());
35
+ await query.execute();
36
+ return true;
37
+ }
38
+ async selectNextId() {
39
+ const query = this.createQuery(SQL.paymentMethods.selectNextId);
40
+ const result = await query.execute();
41
+ return result.getValue();
42
+ }
43
+ }
@@ -0,0 +1,8 @@
1
+ import AddressI from "./AddressI";
2
+ export default interface CompanyDataI {
3
+ id: number;
4
+ name: string;
5
+ taxNumber: string;
6
+ phoneNumber: string;
7
+ address: AddressI;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export default interface FileConnectionI {
2
+ fileId: number;
3
+ connectionType: string;
4
+ connectionId: number;
5
+ sequence: number;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ declare enum FileConnectionTypeE {
2
+ product = "product"
3
+ }
4
+ export default FileConnectionTypeE;
@@ -0,0 +1,5 @@
1
+ var FileConnectionTypeE;
2
+ (function (FileConnectionTypeE) {
3
+ FileConnectionTypeE["product"] = "product";
4
+ })(FileConnectionTypeE || (FileConnectionTypeE = {}));
5
+ export default FileConnectionTypeE;
@@ -6,5 +6,5 @@ export default interface PersonalDataI {
6
6
  email: string;
7
7
  phoneNumber: string;
8
8
  isCompany: boolean;
9
- companyDetails: CompanyDetailsI;
9
+ companyDetails: CompanyDetailsI | null;
10
10
  }
@@ -1,9 +1,10 @@
1
+ import OrderByI from "../utils/OrderByI";
1
2
  import ParameterI from "./ParameterI";
2
3
  import ResultLimitationI from "./ResultLimitationI";
3
4
  import WhereOptionI from "./WhereOptionI";
4
5
  export default interface QueryOptionsI {
5
6
  where?: WhereOptionI;
6
- order?: string;
7
+ order?: OrderByI[];
7
8
  limit?: ResultLimitationI;
8
9
  values?: ParameterI[];
9
10
  }
@@ -1,13 +1,16 @@
1
1
  declare enum ParameterType {
2
2
  arrayNumber = 0,
3
- arrayString = 1,
4
- arrayBoolean = 2,
5
- arrayValue = 3,
6
- bigint = 4,
7
- smallint = 5,
8
- number = 6,
9
- string = 7,
10
- boolean = 8,
11
- column = 9
3
+ arrayBigint = 1,
4
+ arrayString = 2,
5
+ arrayBoolean = 3,
6
+ arrayValue = 4,
7
+ arrayObject = 5,
8
+ bigint = 6,
9
+ smallint = 7,
10
+ number = 8,
11
+ string = 9,
12
+ boolean = 10,
13
+ object = 11,
14
+ column = 12
12
15
  }
13
16
  export default ParameterType;
@@ -1,14 +1,17 @@
1
1
  var ParameterType;
2
2
  (function (ParameterType) {
3
3
  ParameterType[ParameterType["arrayNumber"] = 0] = "arrayNumber";
4
- ParameterType[ParameterType["arrayString"] = 1] = "arrayString";
5
- ParameterType[ParameterType["arrayBoolean"] = 2] = "arrayBoolean";
6
- ParameterType[ParameterType["arrayValue"] = 3] = "arrayValue";
7
- ParameterType[ParameterType["bigint"] = 4] = "bigint";
8
- ParameterType[ParameterType["smallint"] = 5] = "smallint";
9
- ParameterType[ParameterType["number"] = 6] = "number";
10
- ParameterType[ParameterType["string"] = 7] = "string";
11
- ParameterType[ParameterType["boolean"] = 8] = "boolean";
12
- ParameterType[ParameterType["column"] = 9] = "column";
4
+ ParameterType[ParameterType["arrayBigint"] = 1] = "arrayBigint";
5
+ ParameterType[ParameterType["arrayString"] = 2] = "arrayString";
6
+ ParameterType[ParameterType["arrayBoolean"] = 3] = "arrayBoolean";
7
+ ParameterType[ParameterType["arrayValue"] = 4] = "arrayValue";
8
+ ParameterType[ParameterType["arrayObject"] = 5] = "arrayObject";
9
+ ParameterType[ParameterType["bigint"] = 6] = "bigint";
10
+ ParameterType[ParameterType["smallint"] = 7] = "smallint";
11
+ ParameterType[ParameterType["number"] = 8] = "number";
12
+ ParameterType[ParameterType["string"] = 9] = "string";
13
+ ParameterType[ParameterType["boolean"] = 10] = "boolean";
14
+ ParameterType[ParameterType["object"] = 11] = "object";
15
+ ParameterType[ParameterType["column"] = 12] = "column";
13
16
  })(ParameterType || (ParameterType = {}));
14
17
  export default ParameterType;
@@ -0,0 +1,8 @@
1
+ export default interface CompanyDataRow {
2
+ id: number;
3
+ name: string;
4
+ email: string;
5
+ tax_number: string;
6
+ phone_number: string;
7
+ address_id: number;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export default interface DeliveryMethodRow {
2
+ id: number;
3
+ key: string;
4
+ active: boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export default interface FileConnectionRow {
2
+ file_id: number;
3
+ connection_type: string;
4
+ connection_id: number;
5
+ sequence: number;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export default interface PaymentMethodRow {
2
+ id: number;
3
+ key: string;
4
+ active: boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export default class Filters {
2
+ static email(value: string): string;
3
+ static phoneNumber(value: string): string;
4
+ static sanitizeString(value: string): string;
5
+ static databaseColumn(value: string): string;
6
+ }
@@ -0,0 +1,31 @@
1
+ export default class Filters {
2
+ static email(value) {
3
+ value = value.trimStart();
4
+ value = value.trimEnd();
5
+ value = value.replace(/[^\w\.-@]/g, "");
6
+ value = value.substring(0, 99);
7
+ return value;
8
+ }
9
+ static phoneNumber(value) {
10
+ value = value.trimStart();
11
+ value = value.trimEnd();
12
+ value = value.replace(/[^\d\+48]/g, "");
13
+ value = value.substring(0, 99);
14
+ return value;
15
+ }
16
+ static sanitizeString(value) {
17
+ value = value.trimStart();
18
+ value = value.trimEnd();
19
+ value = value.replaceAll(/<[^>]*>/g, '');
20
+ value = value.replace(/[^a-zA-Z0-9-żźćńółęąśŻŹĆĄŚĘŁÓŃ\ ]/g, "");
21
+ value = value.substring(0, 99);
22
+ return value;
23
+ }
24
+ static databaseColumn(value) {
25
+ value = value.trimStart();
26
+ value = value.trimEnd();
27
+ value = value.replace(/[^a-zA-Z\_]/g, "");
28
+ value = value.substring(0, 99);
29
+ return value;
30
+ }
31
+ }
@@ -0,0 +1,4 @@
1
+ export default interface OrderByI {
2
+ key: string;
3
+ order: string;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import ParameterFilter from "../types/parameters/ParameterFilter";
2
+ export default class Parameters {
3
+ static correct(parameter: any, parameterFilter: ParameterFilter): any;
4
+ private static isParameterValueString;
5
+ }
@@ -0,0 +1,23 @@
1
+ import ParameterType from "../types/parameters/ParameterType";
2
+ import Filters from "./Filters";
3
+ import ParameterConversionSystem from "./parameters/ParameterConversionSystem";
4
+ import ParameterFilterSystem from "./parameters/ParameterFilterSystem";
5
+ import ParameterRulesSystem from "./parameters/ParameterRulesSystem";
6
+ export default class Parameters {
7
+ static correct(parameter, parameterFilter) {
8
+ let correctedParameter = ParameterConversionSystem.convert(parameter, parameterFilter.type);
9
+ if (!parameterFilter.filter && this.isParameterValueString(parameterFilter.type))
10
+ parameterFilter.filter = Filters.sanitizeString;
11
+ if (parameterFilter.filter)
12
+ correctedParameter = ParameterFilterSystem.filter(correctedParameter, parameterFilter);
13
+ if (parameterFilter.rules)
14
+ correctedParameter = ParameterRulesSystem.validate(correctedParameter, parameterFilter.rules);
15
+ return correctedParameter;
16
+ }
17
+ static isParameterValueString(type) {
18
+ if (type == ParameterType.string || type == ParameterType.arrayString)
19
+ return true;
20
+ else
21
+ return false;
22
+ }
23
+ }
@@ -0,0 +1,5 @@
1
+ import ParameterType from "../../types/parameters/ParameterType";
2
+ export default class ParameterConversionSystem {
3
+ static convert(parameter: any, type: ParameterType): any;
4
+ private static convertArray;
5
+ }
@@ -0,0 +1,28 @@
1
+ import ParameterType from "../../types/parameters/ParameterType";
2
+ export default class ParameterConversionSystem {
3
+ static convert(parameter, type) {
4
+ switch (type) {
5
+ case ParameterType.number: return Number(parameter);
6
+ case ParameterType.string: return String(parameter);
7
+ case ParameterType.boolean: return Boolean(parameter);
8
+ case ParameterType.object: return JSON.parse(parameter);
9
+ case ParameterType.bigint: return BigInt(parameter);
10
+ case ParameterType.arrayNumber: return this.convertArray(parameter, ParameterType.number);
11
+ case ParameterType.arrayString: return this.convertArray(parameter, ParameterType.string);
12
+ case ParameterType.arrayBoolean: return this.convertArray(parameter, ParameterType.boolean);
13
+ case ParameterType.arrayObject: return this.convertArray(parameter, ParameterType.object);
14
+ case ParameterType.arrayBigint: return this.convertArray(parameter, ParameterType.bigint);
15
+ case ParameterType.column: return String(parameter);
16
+ }
17
+ }
18
+ static convertArray(parameterArray, type) {
19
+ if (!Array.isArray(parameterArray)) {
20
+ if (parameterArray)
21
+ parameterArray = [parameterArray];
22
+ else
23
+ parameterArray = [];
24
+ }
25
+ const convertedParameterArray = parameterArray.map(parameter => this.convert(parameter, type));
26
+ return convertedParameterArray;
27
+ }
28
+ }
@@ -0,0 +1,4 @@
1
+ import ParameterFilter from "../../types/parameters/ParameterFilter";
2
+ export default class ParameterFilterSystem {
3
+ static filter(parameter: any, parameterFilter: ParameterFilter): any;
4
+ }
@@ -0,0 +1,11 @@
1
+ import ParameterType from "../../types/parameters/ParameterType";
2
+ export default class ParameterFilterSystem {
3
+ static filter(parameter, parameterFilter) {
4
+ switch (parameterFilter.type) {
5
+ case ParameterType.string: return parameterFilter.filter(parameter);
6
+ case ParameterType.arrayString:
7
+ return parameter.map((stringParameter) => parameterFilter.filter(stringParameter));
8
+ default: return parameter;
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ export default class ParameterRulesSystem {
2
+ static validate(parameter: any, rules: ((value: any) => boolean)[]): any;
3
+ }
@@ -0,0 +1,8 @@
1
+ export default class ParameterRulesSystem {
2
+ static validate(parameter, rules) {
3
+ rules.forEach((rule) => {
4
+ rule(parameter);
5
+ });
6
+ return parameter;
7
+ }
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dascompany/database",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "vitest",
@@ -1,6 +0,0 @@
1
- import Table from '../../Table';
2
- import DeliveryMethodI from '../../types/DeliveryMethodI';
3
- export default class DeliveryMethodsTable extends Table {
4
- select(id: number): Promise<DeliveryMethodI>;
5
- selectAll(): Promise<DeliveryMethodI[]>;
6
- }