@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,114 @@
1
+ const { DataTypes } = require('sequelize');
2
+ const AddressTypeEnum = require('../enum/AddressTypeEnum');
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Address', {
5
+ AddressID: {
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
+ CustomerID: {
22
+ type: DataTypes.UUID,
23
+ allowNull: false,
24
+ references: {
25
+ model: 'Customer',
26
+ key: 'CustomerID'
27
+ },
28
+ onDelete: 'CASCADE',
29
+ onUpdate: 'CASCADE'
30
+ },
31
+ AddressLine1: {
32
+ type: DataTypes.STRING(255),
33
+ allowNull: false
34
+ },
35
+ AddressLine2: {
36
+ type: DataTypes.STRING(255)
37
+ },
38
+ CityID: {
39
+ type: DataTypes.INTEGER,
40
+ allowNull: false,
41
+ references: {
42
+ model: 'City',
43
+ key: 'CityID'
44
+ },
45
+ onDelete: 'RESTRICT',
46
+ onUpdate: 'CASCADE'
47
+ },
48
+ StateID: {
49
+ type: DataTypes.INTEGER,
50
+ allowNull: false,
51
+ references: {
52
+ model: 'State',
53
+ key: 'StateID'
54
+ },
55
+ onDelete: 'RESTRICT',
56
+ onUpdate: 'CASCADE'
57
+ },
58
+ CountryID: {
59
+ type: DataTypes.INTEGER,
60
+ allowNull: false,
61
+ references: {
62
+ model: 'Country',
63
+ key: 'CountryID'
64
+ },
65
+ onDelete: 'RESTRICT',
66
+ onUpdate: 'CASCADE'
67
+ },
68
+ Zipcode: {
69
+ type: DataTypes.STRING(10),
70
+ allowNull: false
71
+ },
72
+ AddressType: {
73
+ type: DataTypes.ENUM(Object.values(AddressTypeEnum)),
74
+ allowNull: false
75
+ },
76
+ RecipientName: {
77
+ type: DataTypes.STRING(255),
78
+ allowNull: false
79
+ },
80
+ CountryCode: {
81
+ type: DataTypes.STRING(5),
82
+ allowNull: false
83
+ },
84
+ PhoneNumber: {
85
+ type: DataTypes.STRING(20),
86
+ allowNull: false
87
+ },
88
+ IsDefault: {
89
+ type: DataTypes.BOOLEAN,
90
+ defaultValue: false
91
+ },
92
+ CreatedBy: {
93
+ type: DataTypes.UUID,
94
+ allowNull: false
95
+ },
96
+ CreatedAt: {
97
+ type: DataTypes.DATE,
98
+ allowNull: false,
99
+ defaultValue: DataTypes.NOW
100
+ },
101
+ UpdatedBy: {
102
+ type: DataTypes.UUID,
103
+ allowNull: false
104
+ },
105
+ UpdatedAt: {
106
+ type: DataTypes.DATE,
107
+ allowNull: false,
108
+ defaultValue: DataTypes.NOW
109
+ }
110
+ }, {
111
+ tableName: 'Address',
112
+ timestamps: false
113
+ });
114
+ };
@@ -0,0 +1,51 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('AttributeType', {
5
+ AttributeTypeID: {
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
+ },
15
+ AttributeTypeDescription: {
16
+ type: DataTypes.TEXT
17
+ },
18
+ IsActive: {
19
+ type: DataTypes.BOOLEAN,
20
+ defaultValue: true
21
+ },
22
+ CreatedBy: {
23
+ type: DataTypes.UUID,
24
+ allowNull: false
25
+ },
26
+ CreatedAt: {
27
+ type: DataTypes.DATE,
28
+ allowNull: false,
29
+ defaultValue: DataTypes.NOW
30
+ },
31
+ UpdatedBy: {
32
+ type: DataTypes.UUID,
33
+ allowNull: false
34
+ },
35
+ UpdatedAt: {
36
+ type: DataTypes.DATE,
37
+ allowNull: false,
38
+ defaultValue: DataTypes.NOW
39
+ }
40
+ }, {
41
+ tableName: 'AttributeType',
42
+ indexes: [
43
+ {
44
+ name: "idx_attributetype_name_lower_unique",
45
+ unique: true,
46
+ fields: sequelize.literal('LOWER("Name")')
47
+ }
48
+ ],
49
+ timestamps: false
50
+ });
51
+ };
@@ -0,0 +1,65 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('AttributeValue', {
5
+ AttributeValueID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ AttributeTypeID: {
12
+ type: DataTypes.UUID,
13
+ allowNull: false,
14
+ references: {
15
+ model: 'AttributeType',
16
+ key: 'AttributeTypeID'
17
+ },
18
+ onDelete: 'RESTRICT',
19
+ onUpdate: 'CASCADE'
20
+ },
21
+ Value: {
22
+ type: DataTypes.STRING(100),
23
+ allowNull: false
24
+ },
25
+ Unit: {
26
+ type: DataTypes.STRING(50)
27
+ },
28
+ IsActive: {
29
+ type: DataTypes.BOOLEAN,
30
+ defaultValue: true
31
+ },
32
+ CreatedBy: {
33
+ type: DataTypes.UUID,
34
+ allowNull: false
35
+ },
36
+ CreatedAt: {
37
+ type: DataTypes.DATE,
38
+ allowNull: false,
39
+ defaultValue: DataTypes.NOW
40
+ },
41
+ UpdatedBy: {
42
+ type: DataTypes.UUID,
43
+ allowNull: false
44
+ },
45
+ UpdatedAt: {
46
+ type: DataTypes.DATE,
47
+ allowNull: false,
48
+ defaultValue: DataTypes.NOW
49
+ }
50
+ }, {
51
+ tableName: 'AttributeValue',
52
+ indexes: [
53
+ {
54
+ name: "idx_attribute_unique_composite",
55
+ unique: true,
56
+ fields: [
57
+ "AttributeTypeID",
58
+ sequelize.literal('LOWER("Value")'),
59
+ sequelize.literal('LOWER("Unit")')
60
+ ]
61
+ }
62
+ ],
63
+ timestamps: false
64
+ });
65
+ };
@@ -0,0 +1,79 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Banner', {
5
+ BannerID: {
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
+ BannerName: {
22
+ type: DataTypes.STRING(100),
23
+ allowNull: false
24
+ },
25
+ CategoryIDs: {
26
+ type: DataTypes.JSON
27
+ },
28
+ BrandIDs: {
29
+ type: DataTypes.JSON
30
+ },
31
+ DiscountPercentage: {
32
+ type: DataTypes.DECIMAL(5, 2),
33
+ allowNull: false
34
+ },
35
+ SellingPrice: {
36
+ type: DataTypes.DECIMAL(10, 2),
37
+ allowNull: false
38
+ },
39
+ SortOrder: {
40
+ type: DataTypes.INTEGER,
41
+ allowNull: false
42
+ },
43
+ IsActive: {
44
+ type: DataTypes.BOOLEAN,
45
+ defaultValue: true
46
+ },
47
+ CreatedBy: {
48
+ type: DataTypes.UUID,
49
+ allowNull: false
50
+ },
51
+ CreatedAt: {
52
+ type: DataTypes.DATE,
53
+ allowNull: false,
54
+ defaultValue: DataTypes.NOW
55
+ },
56
+ UpdatedBy: {
57
+ type: DataTypes.UUID,
58
+ allowNull: false
59
+ },
60
+ UpdatedAt: {
61
+ type: DataTypes.DATE,
62
+ allowNull: false,
63
+ defaultValue: DataTypes.NOW
64
+ }
65
+ }, {
66
+ tableName: 'Banner',
67
+ indexes: [
68
+ {
69
+ name: "idx_banner_unique_tenant_bannername",
70
+ unique: true,
71
+ fields: [
72
+ sequelize.literal('LOWER("BannerName")'),
73
+ "TenantID"
74
+ ]
75
+ }
76
+ ],
77
+ timestamps: false
78
+ });
79
+ };
package/model/Brand.js ADDED
@@ -0,0 +1,76 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Brand', {
5
+ BrandID: {
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
+ BrandName: {
22
+ type: DataTypes.STRING(100),
23
+ allowNull: false
24
+ },
25
+ BrandDescription: {
26
+ type: DataTypes.TEXT
27
+ },
28
+ BrandCode: {
29
+ type: DataTypes.STRING(100)
30
+ },
31
+ IsActive: {
32
+ type: DataTypes.BOOLEAN,
33
+ defaultValue: true
34
+ },
35
+ CreatedBy: {
36
+ type: DataTypes.UUID,
37
+ allowNull: false
38
+ },
39
+ CreatedAt: {
40
+ type: DataTypes.DATE,
41
+ allowNull: false,
42
+ defaultValue: DataTypes.NOW
43
+ },
44
+ UpdatedBy: {
45
+ type: DataTypes.UUID,
46
+ allowNull: false
47
+ },
48
+ UpdatedAt: {
49
+ type: DataTypes.DATE,
50
+ allowNull: false,
51
+ defaultValue: DataTypes.NOW
52
+ }
53
+ }, {
54
+ tableName: 'Brand',
55
+ timestamps: false,
56
+ indexes: [
57
+ {
58
+ name: "idx_brand_unique_tenant_brandname",
59
+ unique: true,
60
+ fields: [
61
+ sequelize.literal('LOWER("BrandName")'),
62
+ "TenantID"
63
+ ]
64
+ },
65
+ {
66
+ name: "idx_brand_unique_tenant_brandcode",
67
+ unique: true,
68
+ fields: [
69
+ sequelize.literal('LOWER("BrandCode")'),
70
+ "TenantID"
71
+ ]
72
+ }
73
+ ]
74
+ });
75
+ };
76
+
package/model/Cart.js ADDED
@@ -0,0 +1,77 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Cart', {
5
+ CartID: {
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
+ ProductVariantID: {
22
+ type: DataTypes.UUID,
23
+ allowNull: false,
24
+ references: {
25
+ model: 'ProductVariant',
26
+ key: 'ProductVariantID'
27
+ },
28
+ onDelete: 'RESTRICT',
29
+ onUpdate: 'CASCADE'
30
+ },
31
+ CustomerID: {
32
+ type: DataTypes.UUID,
33
+ allowNull: false,
34
+ references: {
35
+ model: 'Customer',
36
+ key: 'CustomerID'
37
+ },
38
+ onDelete: 'RESTRICT',
39
+ onUpdate: 'CASCADE'
40
+ },
41
+ InventoryID: {
42
+ type: DataTypes.UUID,
43
+ allowNull: true,
44
+ references: {
45
+ model: 'Inventory',
46
+ key: 'InventoryID'
47
+ },
48
+ onDelete: 'SET NULL',
49
+ onUpdate: 'CASCADE'
50
+ },
51
+ Quantity: {
52
+ type: DataTypes.INTEGER,
53
+ allowNull: false
54
+ },
55
+ CreatedBy: {
56
+ type: DataTypes.UUID,
57
+ allowNull: false
58
+ },
59
+ CreatedAt: {
60
+ type: DataTypes.DATE,
61
+ allowNull: false,
62
+ defaultValue: DataTypes.NOW
63
+ },
64
+ UpdatedBy: {
65
+ type: DataTypes.UUID,
66
+ allowNull: false
67
+ },
68
+ UpdatedAt: {
69
+ type: DataTypes.DATE,
70
+ allowNull: false,
71
+ defaultValue: DataTypes.NOW
72
+ }
73
+ }, {
74
+ tableName: 'Cart',
75
+ timestamps: false
76
+ });
77
+ };
@@ -0,0 +1,73 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Category', {
5
+ CategoryID: {
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
+ CategoryName: {
22
+ type: DataTypes.STRING(255),
23
+ allowNull: false
24
+ },
25
+ ParentCategoryID: {
26
+ type: DataTypes.UUID,
27
+ references: {
28
+ model: 'Category',
29
+ key: 'CategoryID'
30
+ },
31
+ onDelete: 'SET NULL',
32
+ onUpdate: 'CASCADE'
33
+ },
34
+ CategoryDescription: {
35
+ type: DataTypes.TEXT
36
+ },
37
+ IsActive: {
38
+ type: DataTypes.BOOLEAN,
39
+ defaultValue: true
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: 'Category',
61
+ timestamps: false,
62
+ indexes: [
63
+ {
64
+ name: "idx_category_unique_tenant_categoryname",
65
+ unique: true,
66
+ fields: [
67
+ sequelize.literal('LOWER("CategoryName")'),
68
+ "TenantID"
69
+ ]
70
+ }
71
+ ]
72
+ });
73
+ };
@@ -0,0 +1,63 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('CategoryAttributeType', {
5
+ CategoryAttributeTypeID: {
6
+ type: DataTypes.UUID,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ defaultValue: DataTypes.UUIDV4
10
+ },
11
+ CategoryID: {
12
+ type: DataTypes.UUID,
13
+ allowNull: false,
14
+ references: {
15
+ model: 'Category',
16
+ key: 'CategoryID'
17
+ },
18
+ onDelete: 'CASCADE',
19
+ onUpdate: 'CASCADE'
20
+ },
21
+ AttributeTypeID: {
22
+ type: DataTypes.UUID,
23
+ allowNull: false,
24
+ references: {
25
+ model: 'AttributeType',
26
+ key: 'AttributeTypeID'
27
+ },
28
+ onDelete: 'CASCADE',
29
+ onUpdate: 'CASCADE'
30
+ },
31
+ SortOrder: {
32
+ type: DataTypes.INTEGER,
33
+ defaultValue: 0
34
+ },
35
+ CreatedBy: {
36
+ type: DataTypes.UUID,
37
+ allowNull: false
38
+ },
39
+ CreatedAt: {
40
+ type: DataTypes.DATE,
41
+ allowNull: false,
42
+ defaultValue: DataTypes.NOW
43
+ },
44
+ UpdatedBy: {
45
+ type: DataTypes.UUID,
46
+ allowNull: false
47
+ },
48
+ UpdatedAt: {
49
+ type: DataTypes.DATE,
50
+ allowNull: false,
51
+ defaultValue: DataTypes.NOW
52
+ }
53
+ }, {
54
+ tableName: 'CategoryAttributeType',
55
+ timestamps: false,
56
+ indexes: [
57
+ {
58
+ unique: true,
59
+ fields: ['CategoryID', 'AttributeTypeID']
60
+ }
61
+ ]
62
+ });
63
+ };
package/model/City.js ADDED
@@ -0,0 +1,49 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('City', {
5
+ CityID: {
6
+ type: DataTypes.INTEGER,
7
+ primaryKey: true,
8
+ autoIncrement: true,
9
+ allowNull: false
10
+ },
11
+ CityName: {
12
+ type: DataTypes.STRING(100),
13
+ allowNull: false
14
+ },
15
+ CityCode: {
16
+ type: DataTypes.STRING(100)
17
+ },
18
+ StateID: {
19
+ type: DataTypes.INTEGER,
20
+ references: {
21
+ model: 'State',
22
+ key: 'StateID'
23
+ },
24
+ onDelete: 'RESTRICT',
25
+ onUpdate: 'CASCADE'
26
+ },
27
+ CreatedBy: {
28
+ type: DataTypes.UUID,
29
+ allowNull: false
30
+ },
31
+ CreatedAt: {
32
+ type: DataTypes.DATE,
33
+ allowNull: false,
34
+ defaultValue: DataTypes.NOW
35
+ },
36
+ UpdatedBy: {
37
+ type: DataTypes.UUID,
38
+ allowNull: false
39
+ },
40
+ UpdatedAt: {
41
+ type: DataTypes.DATE,
42
+ allowNull: false,
43
+ defaultValue: DataTypes.NOW
44
+ }
45
+ }, {
46
+ tableName: 'City',
47
+ timestamps: false
48
+ });
49
+ };
@@ -0,0 +1,53 @@
1
+ const { DataTypes } = require('sequelize');
2
+
3
+ module.exports = (sequelize) => {
4
+ return sequelize.define('Colour', {
5
+ ColourID: {
6
+ type: DataTypes.INTEGER,
7
+ primaryKey: true,
8
+ allowNull: false,
9
+ autoIncrement: true
10
+ },
11
+ Name: {
12
+ type: DataTypes.STRING(50),
13
+ allowNull: false
14
+ },
15
+ HexCode: {
16
+ type: DataTypes.STRING(10),
17
+ allowNull: false,
18
+ unique: true
19
+ },
20
+ IsActive: {
21
+ type: DataTypes.BOOLEAN,
22
+ defaultValue: true
23
+ },
24
+ CreatedBy: {
25
+ type: DataTypes.UUID,
26
+ allowNull: false
27
+ },
28
+ CreatedAt: {
29
+ type: DataTypes.DATE,
30
+ allowNull: false,
31
+ defaultValue: DataTypes.NOW
32
+ },
33
+ UpdatedBy: {
34
+ type: DataTypes.UUID,
35
+ allowNull: false
36
+ },
37
+ UpdatedAt: {
38
+ type: DataTypes.DATE,
39
+ allowNull: false,
40
+ defaultValue: DataTypes.NOW
41
+ }
42
+ }, {
43
+ tableName: 'Colour',
44
+ indexes: [
45
+ {
46
+ name: "idx_colour_name_lower_unique",
47
+ unique: true,
48
+ fields: sequelize.literal('LOWER("Name")')
49
+ }
50
+ ],
51
+ timestamps: false
52
+ });
53
+ };