@b2y/ecommerce-common 1.0.0

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 (68) hide show
  1. package/README.md +4 -0
  2. package/constants/AppConstants.js +4 -0
  3. package/constants/ReportConstants.js +15 -0
  4. package/constants/StatusMessageConstants.js +21 -0
  5. package/dbconnection/Connect.js +417 -0
  6. package/enum/AddressTypeEnum.js +7 -0
  7. package/enum/BooleanEnum.js +5 -0
  8. package/enum/EntityTypeEnum.js +10 -0
  9. package/enum/GenderEnum.js +7 -0
  10. package/enum/NotificationStatusEnum.js +6 -0
  11. package/enum/NotificationTypeEnum.js +10 -0
  12. package/enum/OrderStatusEnum.js +8 -0
  13. package/enum/PaymentMethodEnum.js +7 -0
  14. package/enum/PaymentStatusEnum.js +7 -0
  15. package/enum/PaymentTypeEnum.js +7 -0
  16. package/enum/PlatformEnum.js +5 -0
  17. package/enum/RegistrationStatusEnum.js +6 -0
  18. package/enum/SortByEnum.js +8 -0
  19. package/index.js +22 -0
  20. package/model/Address.js +114 -0
  21. package/model/AttributeType.js +51 -0
  22. package/model/AttributeValue.js +65 -0
  23. package/model/Banner.js +79 -0
  24. package/model/Brand.js +76 -0
  25. package/model/Cart.js +77 -0
  26. package/model/Category.js +73 -0
  27. package/model/CategoryAttributeType.js +63 -0
  28. package/model/City.js +49 -0
  29. package/model/Colour.js +53 -0
  30. package/model/Country.js +47 -0
  31. package/model/Customer.js +95 -0
  32. package/model/DeviceToken.js +52 -0
  33. package/model/Document.js +71 -0
  34. package/model/DynamicUIComponent.js +53 -0
  35. package/model/Feedback.js +80 -0
  36. package/model/Inventory.js +84 -0
  37. package/model/NotificationHistory.js +68 -0
  38. package/model/Order.js +95 -0
  39. package/model/OrderItem.js +99 -0
  40. package/model/OrderItemHistory.js +70 -0
  41. package/model/OrderStatus.js +49 -0
  42. package/model/Payment.js +101 -0
  43. package/model/PaymentMethod.js +37 -0
  44. package/model/PaymentStatus.js +37 -0
  45. package/model/PaymentType.js +37 -0
  46. package/model/Permission.js +55 -0
  47. package/model/Product.js +83 -0
  48. package/model/ProductGroup.js +48 -0
  49. package/model/ProductSpecification.js +66 -0
  50. package/model/ProductVariant.js +76 -0
  51. package/model/ProductVariantAttribute.js +59 -0
  52. package/model/Role.js +61 -0
  53. package/model/RolePermissionMapping.js +63 -0
  54. package/model/SpecificationType.js +42 -0
  55. package/model/State.js +56 -0
  56. package/model/Store.js +117 -0
  57. package/model/StoreUserMapping.js +44 -0
  58. package/model/Tenant.js +91 -0
  59. package/model/User.js +150 -0
  60. package/model/WishList.js +63 -0
  61. package/package.json +27 -0
  62. package/utility/AppUtil.js +58 -0
  63. package/utility/DateUtil.js +55 -0
  64. package/utility/ExcelUtil.js +125 -0
  65. package/utility/OrderTimeFilterUtil.js +86 -0
  66. package/utility/QueryUtil.js +262 -0
  67. package/utility/Razorpay.js +67 -0
  68. package/utility/VariantPriceUtil.js +55 -0
@@ -0,0 +1,76 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('ProductVariant', {
5
+ ProductVariantID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ TenantID: {
12
+ type: DataTypes.UUID,
13
+ allowNull: false,
14
+ references: {
15
+ model: 'Tenant',
16
+ key: 'TenantID'
17
+ },
18
+ onDelete: 'CASCADE',
19
+ onUpdate: 'CASCADE'
20
+ },
21
+ ProductID: {
22
+ type: DataTypes.UUID,
23
+ allowNull: false,
24
+ references: {
25
+ model: 'Product',
26
+ key: 'ProductID'
27
+ },
28
+ onDelete: 'CASCADE',
29
+ onUpdate: 'CASCADE'
30
+ },
31
+ SKU: {
32
+ type: DataTypes.STRING(150),
33
+ allowNull: false
34
+ },
35
+ Barcode: {
36
+ type: DataTypes.STRING(100)
37
+ },
38
+ MRP: {
39
+ type: DataTypes.DECIMAL(10, 2),
40
+ allowNull: false
41
+ },
42
+ SellingPrice: {
43
+ type: DataTypes.DECIMAL(10, 2),
44
+ allowNull: false
45
+ },
46
+ DiscountPercentage: {
47
+ type: DataTypes.DECIMAL(5, 2),
48
+ allowNull: false
49
+ },
50
+ IsActive: {
51
+ type: DataTypes.BOOLEAN,
52
+ defaultValue: true
53
+ },
54
+ CreatedBy: {
55
+ type: DataTypes.UUID,
56
+ allowNull: false
57
+ },
58
+ CreatedAt: {
59
+ type: DataTypes.DATE,
60
+ allowNull: false,
61
+ defaultValue: DataTypes.NOW
62
+ },
63
+ UpdatedBy: {
64
+ type: DataTypes.UUID,
65
+ allowNull: false
66
+ },
67
+ UpdatedAt: {
68
+ type: DataTypes.DATE,
69
+ allowNull: false,
70
+ defaultValue: DataTypes.NOW
71
+ }
72
+ }, {
73
+ tableName: 'ProductVariant',
74
+ timestamps: false
75
+ });
76
+ };
@@ -0,0 +1,59 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('ProductVariantAttribute', {
5
+ ProductVariantID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ references: {
10
+ model: 'ProductVariant',
11
+ key: 'ProductVariantID'
12
+ },
13
+ onDelete: 'CASCADE',
14
+ onUpdate: 'CASCADE'
15
+ },
16
+ AttributeValueID: {
17
+ type: DataTypes.UUID,
18
+ primaryKey: true,
19
+ allowNull: false,
20
+ references: {
21
+ model: 'AttributeValue',
22
+ key: 'AttributeValueID'
23
+ },
24
+ onDelete: 'CASCADE',
25
+ onUpdate: 'CASCADE'
26
+ },
27
+ TenantID: {
28
+ type: DataTypes.UUID,
29
+ allowNull: false,
30
+ references: {
31
+ model: 'Tenant',
32
+ key: 'TenantID'
33
+ },
34
+ onDelete: 'CASCADE',
35
+ onUpdate: 'CASCADE'
36
+ },
37
+ CreatedBy: {
38
+ type: DataTypes.UUID,
39
+ allowNull: false
40
+ },
41
+ CreatedAt: {
42
+ type: DataTypes.DATE,
43
+ allowNull: false,
44
+ defaultValue: DataTypes.NOW
45
+ },
46
+ UpdatedBy: {
47
+ type: DataTypes.UUID,
48
+ allowNull: false
49
+ },
50
+ UpdatedAt: {
51
+ type: DataTypes.DATE,
52
+ allowNull: false,
53
+ defaultValue: DataTypes.NOW
54
+ }
55
+ }, {
56
+ tableName: 'ProductVariantAttribute',
57
+ timestamps: false
58
+ });
59
+ };
package/model/Role.js ADDED
@@ -0,0 +1,61 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Role', {
5
+ RoleID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ TenantID: {
12
+ type: DataTypes.UUID,
13
+ allowNull: false,
14
+ references: {
15
+ model: 'Tenant',
16
+ key: 'TenantID'
17
+ },
18
+ onDelete: 'CASCADE',
19
+ onUpdate: 'CASCADE'
20
+ },
21
+ RoleName: {
22
+ type: DataTypes.STRING(100),
23
+ allowNull: false
24
+ },
25
+ IsActive: {
26
+ type: DataTypes.BOOLEAN,
27
+ defaultValue: true
28
+ },
29
+ CreatedBy: {
30
+ type: DataTypes.UUID,
31
+ allowNull: false
32
+ },
33
+ CreatedAt: {
34
+ type: DataTypes.DATE,
35
+ allowNull: false,
36
+ defaultValue: DataTypes.NOW
37
+ },
38
+ UpdatedBy: {
39
+ type: DataTypes.UUID,
40
+ allowNull: false
41
+ },
42
+ UpdatedAt: {
43
+ type: DataTypes.DATE,
44
+ allowNull: false,
45
+ defaultValue: DataTypes.NOW
46
+ }
47
+ }, {
48
+ tableName: 'Role',
49
+ indexes: [
50
+ {
51
+ name: "idx_role_name_lower_unique",
52
+ unique: true,
53
+ fields: [
54
+ sequelize.literal('LOWER("RoleName")'),
55
+ "TenantID"
56
+ ]
57
+ }
58
+ ],
59
+ timestamps: false
60
+ });
61
+ };
@@ -0,0 +1,63 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('RolePermissionMapping', {
5
+ RolePermissionMappingID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ TenantID: {
12
+ type: DataTypes.UUID,
13
+ allowNull: false,
14
+ references: {
15
+ model: 'Tenant',
16
+ key: 'TenantID'
17
+ },
18
+ onDelete: 'CASCADE',
19
+ onUpdate: 'CASCADE'
20
+ },
21
+ RoleID: {
22
+ type: DataTypes.UUID,
23
+ allowNull: false,
24
+ references: {
25
+ model: 'Role',
26
+ key: 'RoleID'
27
+ },
28
+ onDelete: 'CASCADE',
29
+ onUpdate: 'CASCADE'
30
+ },
31
+ PermissionID: {
32
+ type: DataTypes.UUID,
33
+ allowNull: false,
34
+ references: {
35
+ model: 'Permission',
36
+ key: 'PermissionID'
37
+ },
38
+ onDelete: 'CASCADE',
39
+ onUpdate: 'CASCADE'
40
+ },
41
+ CreatedBy: {
42
+ type: DataTypes.UUID,
43
+ allowNull: false
44
+ },
45
+ CreatedAt: {
46
+ type: DataTypes.DATE,
47
+ allowNull: false,
48
+ defaultValue: DataTypes.NOW
49
+ },
50
+ UpdatedBy: {
51
+ type: DataTypes.UUID,
52
+ allowNull: false
53
+ },
54
+ UpdatedAt: {
55
+ type: DataTypes.DATE,
56
+ allowNull: false,
57
+ defaultValue: DataTypes.NOW
58
+ }
59
+ }, {
60
+ tableName: 'RolePermissionMapping',
61
+ timestamps: false
62
+ });
63
+ };
@@ -0,0 +1,42 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('SpecificationType', {
5
+ SpecificationTypeID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ Name: {
12
+ type: DataTypes.STRING(100),
13
+ allowNull: false,
14
+ unique: true
15
+ },
16
+ IsActive: {
17
+ type: DataTypes.BOOLEAN,
18
+ defaultValue: true,
19
+ },
20
+ CreatedBy: {
21
+ type: DataTypes.UUID,
22
+ allowNull: false
23
+ },
24
+ CreatedAt: {
25
+ type: DataTypes.DATE,
26
+ allowNull: false,
27
+ defaultValue: DataTypes.NOW
28
+ },
29
+ UpdatedBy: {
30
+ type: DataTypes.UUID,
31
+ allowNull: false
32
+ },
33
+ UpdatedAt: {
34
+ type: DataTypes.DATE,
35
+ allowNull: false,
36
+ defaultValue: DataTypes.NOW
37
+ }
38
+ }, {
39
+ tableName: 'SpecificationType',
40
+ timestamps: false
41
+ });
42
+ };
package/model/State.js ADDED
@@ -0,0 +1,56 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('State', {
5
+ StateID: {
6
+ type: DataTypes.INTEGER,
7
+ primaryKey: true,
8
+ autoIncrement: true,
9
+ allowNull: false
10
+ },
11
+ StateName: {
12
+ type: DataTypes.STRING(100),
13
+ allowNull: false
14
+ },
15
+ StateCode: {
16
+ type: DataTypes.STRING(100),
17
+ allowNull: false
18
+ },
19
+ CountryID: {
20
+ type: DataTypes.INTEGER,
21
+ references: {
22
+ model: 'Country',
23
+ key: 'CountryID'
24
+ },
25
+ onDelete: 'RESTRICT',
26
+ onUpdate: 'CASCADE'
27
+ },
28
+ CreatedBy: {
29
+ type: DataTypes.UUID,
30
+ allowNull: false
31
+ },
32
+ CreatedAt: {
33
+ type: DataTypes.DATE,
34
+ allowNull: false,
35
+ defaultValue: DataTypes.NOW
36
+ },
37
+ UpdatedBy: {
38
+ type: DataTypes.UUID,
39
+ allowNull: false
40
+ },
41
+ UpdatedAt: {
42
+ type: DataTypes.DATE,
43
+ allowNull: false,
44
+ defaultValue: DataTypes.NOW
45
+ }
46
+ }, {
47
+ tableName: 'State',
48
+ timestamps: false,
49
+ indexes: [
50
+ {
51
+ unique: true,
52
+ fields: ['StateCode', 'StateName']
53
+ }
54
+ ]
55
+ });
56
+ };
package/model/Store.js ADDED
@@ -0,0 +1,117 @@
1
+ const {DataTypes}= require('sequelize');
2
+ module.exports = (sequelize) => {
3
+ const Store = sequelize.define('Store', {
4
+ StoreID: {
5
+ type: DataTypes.UUID,
6
+ primaryKey: true,
7
+ defaultValue: DataTypes.UUIDV4,
8
+ },
9
+ TenantID: {
10
+ type: DataTypes.UUID,
11
+ allowNull: false,
12
+ references: {
13
+ model: 'Tenant',
14
+ key: 'TenantID'
15
+ },
16
+ onDelete: 'CASCADE',
17
+ onUpdate: 'CASCADE'
18
+ },
19
+ StoreName: {
20
+ type: DataTypes.STRING(100),
21
+ allowNull: false,
22
+ unique: true,
23
+ },
24
+ Email: {
25
+ type: DataTypes.STRING(100),
26
+ allowNull: false,
27
+ },
28
+ CountryCode: {
29
+ type: DataTypes.STRING(5),
30
+ allowNull: false
31
+ },
32
+ PhoneNumber: {
33
+ type: DataTypes.STRING(20),
34
+ allowNull: false,
35
+ },
36
+ AddressLine1: {
37
+ type: DataTypes.STRING(255),
38
+ allowNull: false,
39
+ },
40
+ AddressLine2: {
41
+ type: DataTypes.STRING(255),
42
+ },
43
+ CountryID: {
44
+ type: DataTypes.INTEGER,
45
+ allowNull: false,
46
+ references: {
47
+ model: 'Country',
48
+ key: 'CountryID'
49
+ },
50
+ onDelete: 'RESTRICT',
51
+ onUpdate: 'CASCADE'
52
+ },
53
+ StateID: {
54
+ type: DataTypes.INTEGER,
55
+ allowNull: false,
56
+ references: {
57
+ model: 'State',
58
+ key: 'StateID'
59
+ },
60
+ onDelete: 'RESTRICT',
61
+ onUpdate: 'CASCADE'
62
+ },
63
+ CityID: {
64
+ type: DataTypes.INTEGER,
65
+ allowNull: false,
66
+ references: {
67
+ model: 'City',
68
+ key: 'CityID'
69
+ },
70
+ onDelete: 'RESTRICT',
71
+ onUpdate: 'CASCADE'
72
+ },
73
+ Zipcode: {
74
+ type: DataTypes.STRING(10),
75
+ allowNull: false,
76
+ },
77
+ IsActive: {
78
+ type: DataTypes.BOOLEAN,
79
+ defaultValue: true,
80
+ },
81
+ CreatedBy: {
82
+ type: DataTypes.UUID,
83
+ allowNull: false,
84
+ },
85
+ CreatedAt: {
86
+ type: DataTypes.DATE,
87
+ defaultValue: DataTypes.NOW,
88
+ },
89
+ UpdatedBy: {
90
+ type: DataTypes.UUID,
91
+ allowNull: false,
92
+ },
93
+ UpdatedAt: {
94
+ type: DataTypes.DATE,
95
+ defaultValue: DataTypes.NOW,
96
+ },
97
+ }, {
98
+ tableName: 'Store',
99
+ timestamps: false,
100
+ indexes: [
101
+ {
102
+ name: "UQ_Store_Tenant_Email",
103
+ unique: true,
104
+ fields: ["TenantID", "Email"],
105
+ },
106
+ {
107
+ name: "UQ_Store_Tenant_Phone",
108
+ unique: true,
109
+ fields: ["TenantID", "CountryCode", "PhoneNumber"],
110
+ },
111
+ ],
112
+ });
113
+
114
+ return Store;
115
+ };
116
+
117
+
@@ -0,0 +1,44 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ const StoreUserMapping = sequelize.define('StoreUserMapping', {
5
+ StoreUserMappingID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ defaultValue: DataTypes.UUIDV4,
9
+ },
10
+ TenantID: {
11
+ type: DataTypes.UUID,
12
+ allowNull: false,
13
+ },
14
+ StoreID: {
15
+ type: DataTypes.UUID,
16
+ allowNull: false,
17
+ },
18
+ UserID: {
19
+ type: DataTypes.UUID,
20
+ allowNull: false,
21
+ },
22
+ CreatedBy: {
23
+ type: DataTypes.UUID,
24
+ allowNull: false,
25
+ },
26
+ CreatedAt: {
27
+ type: DataTypes.DATE,
28
+ defaultValue: DataTypes.NOW,
29
+ },
30
+ UpdatedBy: {
31
+ type: DataTypes.UUID,
32
+ allowNull: false,
33
+ },
34
+ UpdatedAt: {
35
+ type: DataTypes.DATE,
36
+ defaultValue: DataTypes.NOW,
37
+ },
38
+ }, {
39
+ tableName: 'StoreUserMapping',
40
+ timestamps: false,
41
+ });
42
+
43
+ return StoreUserMapping;
44
+ };
@@ -0,0 +1,91 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Tenant', {
5
+ TenantID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ CompanyName: {
12
+ type: DataTypes.STRING(255),
13
+ allowNull: false,
14
+ unique: true
15
+ },
16
+ CompanyCode: {
17
+ type: DataTypes.INTEGER,
18
+ allowNull: false,
19
+ unique: true
20
+ },
21
+ Email: {
22
+ type: DataTypes.STRING(100),
23
+ allowNull: false,
24
+ unique: true
25
+ },
26
+ PhoneNumber: {
27
+ type: DataTypes.STRING(20),
28
+ allowNull: false,
29
+ unique: true
30
+ },
31
+ CountryCode: {
32
+ type: DataTypes.STRING(5),
33
+ allowNull: false
34
+ },
35
+ GSTNo: {
36
+ type: DataTypes.STRING(20),
37
+ allowNull: true
38
+ },
39
+ CustomerPortalDomain:{
40
+ type: DataTypes.STRING(255),
41
+ allowNull: false,
42
+ unique: true
43
+ },
44
+ AdminPortalDomain:{
45
+ type: DataTypes.STRING(255),
46
+ allowNull: false,
47
+ unique: true
48
+ },
49
+ AddressLine: {
50
+ type: DataTypes.STRING(500),
51
+ allowNull: false
52
+ },
53
+ City: {
54
+ type: DataTypes.STRING(100),
55
+ allowNull: false
56
+ },
57
+ State: {
58
+ type: DataTypes.STRING(100),
59
+ allowNull: false
60
+ },
61
+ Country: {
62
+ type: DataTypes.STRING(100),
63
+ allowNull: false
64
+ },
65
+ Zipcode: {
66
+ type: DataTypes.STRING(10),
67
+ allowNull: false
68
+ },
69
+ CreatedBy: {
70
+ type: DataTypes.UUID,
71
+ allowNull: false
72
+ },
73
+ CreatedAt: {
74
+ type: DataTypes.DATE,
75
+ allowNull: false,
76
+ defaultValue: DataTypes.NOW
77
+ },
78
+ UpdatedBy: {
79
+ type: DataTypes.UUID,
80
+ allowNull: false
81
+ },
82
+ UpdatedAt: {
83
+ type: DataTypes.DATE,
84
+ allowNull: false,
85
+ defaultValue: DataTypes.NOW
86
+ }
87
+ }, {
88
+ tableName: 'Tenant',
89
+ timestamps: false
90
+ });
91
+ };