@valentine-efagene/qshelter-common 2.0.0 → 2.0.2

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 (240) hide show
  1. package/dist/OpenApiHelper.d.ts +9 -0
  2. package/dist/OpenApiHelper.js +118 -0
  3. package/dist/OpenApiHelper.js.map +1 -0
  4. package/dist/decorator/index.d.ts +2 -0
  5. package/dist/decorator/index.js +19 -0
  6. package/dist/decorator/index.js.map +1 -0
  7. package/dist/decorator/permission.decorator.d.ts +2 -0
  8. package/dist/decorator/permission.decorator.js +6 -0
  9. package/dist/decorator/permission.decorator.js.map +1 -0
  10. package/dist/decorator/tenant.decorator.d.ts +2 -0
  11. package/dist/decorator/tenant.decorator.js +13 -0
  12. package/dist/decorator/tenant.decorator.js.map +1 -0
  13. package/dist/encryption/encryption.module.d.ts +2 -0
  14. package/dist/encryption/encryption.module.js +24 -0
  15. package/dist/encryption/encryption.module.js.map +1 -0
  16. package/dist/encryption/encryption.service.d.ts +17 -0
  17. package/dist/encryption/encryption.service.js +85 -0
  18. package/dist/encryption/encryption.service.js.map +1 -0
  19. package/dist/entities/TenantAwareEntity.d.ts +9 -0
  20. package/dist/entities/TenantAwareEntity.js +48 -0
  21. package/dist/entities/TenantAwareEntity.js.map +1 -0
  22. package/dist/entities/TenantAwareRepository.d.ts +13 -0
  23. package/dist/entities/TenantAwareRepository.js +65 -0
  24. package/dist/entities/TenantAwareRepository.js.map +1 -0
  25. package/dist/entities/amenity.entity.d.ts +4 -0
  26. package/dist/entities/amenity.entity.js +28 -0
  27. package/dist/entities/amenity.entity.js.map +1 -0
  28. package/dist/entities/common.entity.d.ts +16 -0
  29. package/dist/entities/common.entity.js +63 -0
  30. package/dist/entities/common.entity.js.map +1 -0
  31. package/dist/entities/common.pure.entity.d.ts +11 -0
  32. package/dist/entities/common.pure.entity.js +52 -0
  33. package/dist/entities/common.pure.entity.js.map +1 -0
  34. package/dist/entities/contract-document.entity.d.ts +39 -0
  35. package/dist/entities/contract-document.entity.js +115 -0
  36. package/dist/entities/contract-document.entity.js.map +1 -0
  37. package/dist/entities/contract.entity.d.ts +62 -0
  38. package/dist/entities/contract.entity.js +191 -0
  39. package/dist/entities/contract.entity.js.map +1 -0
  40. package/dist/entities/device_endpoint.entity.d.ts +10 -0
  41. package/dist/entities/device_endpoint.entity.js +50 -0
  42. package/dist/entities/device_endpoint.entity.js.map +1 -0
  43. package/dist/entities/email_preference.entity.d.ts +6 -0
  44. package/dist/entities/email_preference.entity.js +45 -0
  45. package/dist/entities/email_preference.entity.js.map +1 -0
  46. package/dist/entities/index.d.ts +36 -0
  47. package/dist/entities/index.js +53 -0
  48. package/dist/entities/index.js.map +1 -0
  49. package/dist/entities/mortgage-document.entity.d.ts +14 -0
  50. package/dist/entities/mortgage-document.entity.js +58 -0
  51. package/dist/entities/mortgage-document.entity.js.map +1 -0
  52. package/dist/entities/mortgage-downpayment-installment.entity.d.ts +19 -0
  53. package/dist/entities/mortgage-downpayment-installment.entity.js +63 -0
  54. package/dist/entities/mortgage-downpayment-installment.entity.js.map +1 -0
  55. package/dist/entities/mortgage-downpayment-payment.entity.d.ts +28 -0
  56. package/dist/entities/mortgage-downpayment-payment.entity.js +84 -0
  57. package/dist/entities/mortgage-downpayment-payment.entity.js.map +1 -0
  58. package/dist/entities/mortgage-downpayment.entity.d.ts +22 -0
  59. package/dist/entities/mortgage-downpayment.entity.js +66 -0
  60. package/dist/entities/mortgage-downpayment.entity.js.map +1 -0
  61. package/dist/entities/mortgage-step.entity.d.ts +12 -0
  62. package/dist/entities/mortgage-step.entity.js +52 -0
  63. package/dist/entities/mortgage-step.entity.js.map +1 -0
  64. package/dist/entities/mortgage-transition-event.entity.d.ts +26 -0
  65. package/dist/entities/mortgage-transition-event.entity.js +111 -0
  66. package/dist/entities/mortgage-transition-event.entity.js.map +1 -0
  67. package/dist/entities/mortgage-transition.entity.d.ts +25 -0
  68. package/dist/entities/mortgage-transition.entity.js +91 -0
  69. package/dist/entities/mortgage-transition.entity.js.map +1 -0
  70. package/dist/entities/mortgage-type.entity.d.ts +10 -0
  71. package/dist/entities/mortgage-type.entity.js +46 -0
  72. package/dist/entities/mortgage-type.entity.js.map +1 -0
  73. package/dist/entities/mortgage.entity.d.ts +37 -0
  74. package/dist/entities/mortgage.entity.js +124 -0
  75. package/dist/entities/mortgage.entity.js.map +1 -0
  76. package/dist/entities/password_reset_tokens.entity.d.ts +7 -0
  77. package/dist/entities/password_reset_tokens.entity.js +45 -0
  78. package/dist/entities/password_reset_tokens.entity.js.map +1 -0
  79. package/dist/entities/payment-installment.entity.d.ts +39 -0
  80. package/dist/entities/payment-installment.entity.js +134 -0
  81. package/dist/entities/payment-installment.entity.js.map +1 -0
  82. package/dist/entities/payment-plan.entity.d.ts +62 -0
  83. package/dist/entities/payment-plan.entity.js +174 -0
  84. package/dist/entities/payment-plan.entity.js.map +1 -0
  85. package/dist/entities/payment-schedule.entity.d.ts +44 -0
  86. package/dist/entities/payment-schedule.entity.js +134 -0
  87. package/dist/entities/payment-schedule.entity.js.map +1 -0
  88. package/dist/entities/payment.entity.d.ts +55 -0
  89. package/dist/entities/payment.entity.js +157 -0
  90. package/dist/entities/payment.entity.js.map +1 -0
  91. package/dist/entities/permission.entity.d.ts +6 -0
  92. package/dist/entities/permission.entity.js +30 -0
  93. package/dist/entities/permission.entity.js.map +1 -0
  94. package/dist/entities/property-document.entity.d.ts +6 -0
  95. package/dist/entities/property-document.entity.js +34 -0
  96. package/dist/entities/property-document.entity.js.map +1 -0
  97. package/dist/entities/property-media.entity.d.ts +6 -0
  98. package/dist/entities/property-media.entity.js +37 -0
  99. package/dist/entities/property-media.entity.js.map +1 -0
  100. package/dist/entities/property.entity.d.ts +40 -0
  101. package/dist/entities/property.entity.js +202 -0
  102. package/dist/entities/property.entity.js.map +1 -0
  103. package/dist/entities/refresh_token.entity.d.ts +7 -0
  104. package/dist/entities/refresh_token.entity.js +35 -0
  105. package/dist/entities/refresh_token.entity.js.map +1 -0
  106. package/dist/entities/role.entity.d.ts +8 -0
  107. package/dist/entities/role.entity.js +39 -0
  108. package/dist/entities/role.entity.js.map +1 -0
  109. package/dist/entities/settings.entity.d.ts +17 -0
  110. package/dist/entities/settings.entity.js +81 -0
  111. package/dist/entities/settings.entity.js.map +1 -0
  112. package/dist/entities/social.entity.d.ts +8 -0
  113. package/dist/entities/social.entity.js +48 -0
  114. package/dist/entities/social.entity.js.map +1 -0
  115. package/dist/entities/tenant.entity.d.ts +32 -0
  116. package/dist/entities/tenant.entity.js +101 -0
  117. package/dist/entities/tenant.entity.js.map +1 -0
  118. package/dist/entities/transaction.entity.d.ts +17 -0
  119. package/dist/entities/transaction.entity.js +87 -0
  120. package/dist/entities/transaction.entity.js.map +1 -0
  121. package/dist/entities/user.entity.d.ts +28 -0
  122. package/dist/entities/user.entity.js +109 -0
  123. package/dist/entities/user.entity.js.map +1 -0
  124. package/dist/entities/user_suspensions.entity.d.ts +7 -0
  125. package/dist/entities/user_suspensions.entity.js +44 -0
  126. package/dist/entities/user_suspensions.entity.js.map +1 -0
  127. package/dist/entities/wallet.entity.d.ts +17 -0
  128. package/dist/entities/wallet.entity.js +79 -0
  129. package/dist/entities/wallet.entity.js.map +1 -0
  130. package/dist/guard/index.d.ts +2 -0
  131. package/dist/guard/index.js +19 -0
  132. package/dist/guard/index.js.map +1 -0
  133. package/dist/guard/permission.guard.d.ts +10 -0
  134. package/dist/guard/permission.guard.js +47 -0
  135. package/dist/guard/permission.guard.js.map +1 -0
  136. package/dist/guard/swagger-auth.guard.d.ts +1 -0
  137. package/dist/guard/swagger-auth.guard.js +9 -0
  138. package/dist/guard/swagger-auth.guard.js.map +1 -0
  139. package/dist/helpers/ArrayHelper.d.ts +2 -0
  140. package/dist/helpers/ArrayHelper.js +6 -0
  141. package/dist/helpers/ArrayHelper.js.map +1 -0
  142. package/dist/helpers/ConstantHelper.d.ts +36 -0
  143. package/dist/helpers/ConstantHelper.js +90 -0
  144. package/dist/helpers/ConstantHelper.js.map +1 -0
  145. package/dist/helpers/CustomNamingStrategy.d.ts +7 -0
  146. package/dist/helpers/CustomNamingStrategy.js +22 -0
  147. package/dist/helpers/CustomNamingStrategy.js.map +1 -0
  148. package/dist/helpers/DateHelper.d.ts +3 -0
  149. package/dist/helpers/DateHelper.js +20 -0
  150. package/dist/helpers/DateHelper.js.map +1 -0
  151. package/dist/helpers/EmailHelper.d.ts +4 -0
  152. package/dist/helpers/EmailHelper.js +55 -0
  153. package/dist/helpers/EmailHelper.js.map +1 -0
  154. package/dist/helpers/FileSystemHelper.d.ts +15 -0
  155. package/dist/helpers/FileSystemHelper.js +102 -0
  156. package/dist/helpers/FileSystemHelper.js.map +1 -0
  157. package/dist/helpers/index.d.ts +5 -0
  158. package/dist/helpers/index.js +22 -0
  159. package/dist/helpers/index.js.map +1 -0
  160. package/dist/index.d.ts +16 -2
  161. package/dist/index.js +33 -2
  162. package/dist/index.js.map +1 -0
  163. package/dist/middleware/AccessLoggerMiddleware.d.ts +6 -0
  164. package/dist/middleware/AccessLoggerMiddleware.js +64 -0
  165. package/dist/middleware/AccessLoggerMiddleware.js.map +1 -0
  166. package/dist/middleware/AuthenticationMiddleware.d.ts +5 -0
  167. package/dist/middleware/AuthenticationMiddleware.js +19 -0
  168. package/dist/middleware/AuthenticationMiddleware.js.map +1 -0
  169. package/dist/middleware/TenantMiddleware.d.ts +14 -0
  170. package/dist/middleware/TenantMiddleware.js +49 -0
  171. package/dist/middleware/TenantMiddleware.js.map +1 -0
  172. package/dist/middleware/index.d.ts +3 -0
  173. package/dist/middleware/index.js +20 -0
  174. package/dist/middleware/index.js.map +1 -0
  175. package/dist/pagination/index.d.ts +2 -0
  176. package/dist/pagination/index.js +19 -0
  177. package/dist/pagination/index.js.map +1 -0
  178. package/dist/pagination/pagination.helper.d.ts +7 -0
  179. package/dist/pagination/pagination.helper.js +40 -0
  180. package/dist/pagination/pagination.helper.js.map +1 -0
  181. package/dist/pagination/pagination.types.d.ts +19 -0
  182. package/dist/pagination/pagination.types.js +3 -0
  183. package/dist/pagination/pagination.types.js.map +1 -0
  184. package/dist/qr-code/qr-code.dto.d.ts +3 -0
  185. package/dist/qr-code/qr-code.dto.js +21 -0
  186. package/dist/qr-code/qr-code.dto.js.map +1 -0
  187. package/dist/qr-code/qr-code.module.d.ts +2 -0
  188. package/dist/qr-code/qr-code.module.js +24 -0
  189. package/dist/qr-code/qr-code.module.js.map +1 -0
  190. package/dist/qr-code/qr-code.service.d.ts +11 -0
  191. package/dist/qr-code/qr-code.service.js +89 -0
  192. package/dist/qr-code/qr-code.service.js.map +1 -0
  193. package/dist/qr-code/qr-code.type.d.ts +5 -0
  194. package/dist/qr-code/qr-code.type.js +3 -0
  195. package/dist/qr-code/qr-code.type.js.map +1 -0
  196. package/dist/src/config/config.service.d.ts +61 -0
  197. package/dist/src/config/config.service.js +144 -0
  198. package/dist/src/config/config.service.js.map +1 -0
  199. package/dist/src/config/index.d.ts +1 -0
  200. package/dist/src/config/index.js +18 -0
  201. package/dist/src/config/index.js.map +1 -0
  202. package/dist/standard-response.d.ts +7 -0
  203. package/dist/standard-response.js +27 -0
  204. package/dist/standard-response.js.map +1 -0
  205. package/dist/tsconfig.tsbuildinfo +1 -0
  206. package/dist/types/common.type.d.ts +54 -0
  207. package/dist/types/common.type.js +55 -0
  208. package/dist/types/common.type.js.map +1 -0
  209. package/dist/types/index.d.ts +8 -0
  210. package/dist/types/index.js +25 -0
  211. package/dist/types/index.js.map +1 -0
  212. package/dist/types/mortgage-fsm.type.d.ts +180 -0
  213. package/dist/types/mortgage-fsm.type.js +130 -0
  214. package/dist/types/mortgage-fsm.type.js.map +1 -0
  215. package/dist/types/permission.type.d.ts +42 -0
  216. package/dist/types/permission.type.js +47 -0
  217. package/dist/types/permission.type.js.map +1 -0
  218. package/dist/types/policy.type.d.ts +18 -0
  219. package/dist/types/policy.type.js +3 -0
  220. package/dist/types/policy.type.js.map +1 -0
  221. package/dist/types/property.type.d.ts +13 -0
  222. package/dist/types/property.type.js +20 -0
  223. package/dist/types/property.type.js.map +1 -0
  224. package/dist/types/tenant.type.d.ts +13 -0
  225. package/dist/types/tenant.type.js +19 -0
  226. package/dist/types/tenant.type.js.map +1 -0
  227. package/dist/types/transaction.type.d.ts +8 -0
  228. package/dist/types/transaction.type.js +14 -0
  229. package/dist/types/transaction.type.js.map +1 -0
  230. package/dist/types/user.type.d.ts +10 -0
  231. package/dist/types/user.type.js +16 -0
  232. package/dist/types/user.type.js.map +1 -0
  233. package/package.json +100 -32
  234. package/dist/types/prisma.d.ts +0 -2
  235. package/dist/types/prisma.js +0 -2
  236. package/dist/types/response.d.ts +0 -15
  237. package/dist/types/response.js +0 -6
  238. package/dist/utils/errors.d.ts +0 -21
  239. package/dist/utils/errors.js +0 -28
  240. package/prisma/schema.prisma +0 -636
@@ -0,0 +1,9 @@
1
+ import { ApiHeaderOptions, ApiResponseOptions } from '@nestjs/swagger';
2
+ export default class OpenApiHelper {
3
+ static userIdHeader: ApiHeaderOptions;
4
+ static responseDoc: ApiResponseOptions;
5
+ static paginatedResponseDoc: ApiResponseOptions;
6
+ static arrayResponseDoc: ApiResponseOptions;
7
+ static nullResponseDoc: ApiResponseOptions;
8
+ static errorResponseDoc: ApiResponseOptions;
9
+ }
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class OpenApiHelper {
4
+ }
5
+ OpenApiHelper.userIdHeader = {
6
+ name: 'user_id',
7
+ description: "Requesting user's ID",
8
+ required: true,
9
+ example: '1',
10
+ };
11
+ OpenApiHelper.responseDoc = {
12
+ status: 200,
13
+ description: 'Successful response',
14
+ schema: {
15
+ type: 'object',
16
+ properties: {
17
+ statusCode: { type: 'number' },
18
+ message: { type: 'string' },
19
+ data: { type: 'object' },
20
+ },
21
+ },
22
+ };
23
+ OpenApiHelper.paginatedResponseDoc = {
24
+ status: 200,
25
+ description: 'Successful response',
26
+ schema: {
27
+ type: 'object',
28
+ properties: {
29
+ statusCode: { type: 'number' },
30
+ message: { type: 'string' },
31
+ data: {
32
+ type: 'object',
33
+ properties: {
34
+ data: { type: 'array', items: { type: 'object' } },
35
+ meta: {
36
+ type: 'object',
37
+ properties: {
38
+ itemsPerPage: { type: 'number' },
39
+ totalItems: { type: 'number' },
40
+ currentPage: { type: 'number' },
41
+ totalPages: { type: 'number' },
42
+ sortBy: { type: 'array' },
43
+ search: { type: 'string' },
44
+ filter: {
45
+ type: 'object',
46
+ },
47
+ },
48
+ },
49
+ link: {
50
+ type: 'object',
51
+ properties: {
52
+ first: { type: 'string' },
53
+ previous: { type: 'string' },
54
+ current: { type: 'string' },
55
+ next: { type: 'string' },
56
+ last: { type: 'string' },
57
+ },
58
+ },
59
+ },
60
+ },
61
+ },
62
+ },
63
+ };
64
+ OpenApiHelper.arrayResponseDoc = {
65
+ status: 200,
66
+ description: 'Successful response',
67
+ schema: {
68
+ type: 'object',
69
+ properties: {
70
+ statusCode: { type: 'number' },
71
+ message: { type: 'string' },
72
+ data: {
73
+ type: 'array',
74
+ items: { type: 'object' },
75
+ },
76
+ },
77
+ },
78
+ };
79
+ OpenApiHelper.nullResponseDoc = {
80
+ status: 200,
81
+ description: 'Successful response',
82
+ schema: {
83
+ oneOf: [
84
+ {
85
+ type: 'object',
86
+ properties: {
87
+ statusCode: { type: 'number' },
88
+ message: { type: 'string' },
89
+ data: {
90
+ type: 'string',
91
+ nullable: true,
92
+ description: 'Nothing is returned',
93
+ },
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ };
99
+ OpenApiHelper.errorResponseDoc = {
100
+ status: 200,
101
+ description: 'Successful response',
102
+ schema: {
103
+ oneOf: [
104
+ {
105
+ type: 'object',
106
+ properties: {
107
+ statusCode: { type: 'number' },
108
+ message: { type: 'string' },
109
+ error: {
110
+ type: 'object',
111
+ },
112
+ },
113
+ },
114
+ ],
115
+ },
116
+ };
117
+ exports.default = OpenApiHelper;
118
+ //# sourceMappingURL=OpenApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiHelper.js","sourceRoot":"","sources":["../OpenApiHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './permission.decorator';
2
+ export * from './tenant.decorator';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./permission.decorator"), exports);
18
+ __exportStar(require("./tenant.decorator"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../decorator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,qDAAmC"}
@@ -0,0 +1,2 @@
1
+ import { PermissionName } from '../types/permission.type';
2
+ export declare const RequirePermission: import("@nestjs/core").ReflectableDecorator<PermissionName, PermissionName>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequirePermission = void 0;
4
+ const core_1 = require("@nestjs/core");
5
+ exports.RequirePermission = core_1.Reflector.createDecorator();
6
+ //# sourceMappingURL=permission.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.decorator.js","sourceRoot":"","sources":["../../decorator/permission.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAG5B,QAAA,iBAAiB,GAAG,gBAAS,CAAC,eAAe,EAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CurrentTenant: (...dataOrPipes: unknown[]) => ParameterDecorator;
2
+ export declare const CurrentTenantId: (...dataOrPipes: unknown[]) => ParameterDecorator;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrentTenantId = exports.CurrentTenant = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.CurrentTenant = (0, common_1.createParamDecorator)((data, ctx) => {
6
+ const request = ctx.switchToHttp().getRequest();
7
+ return request.tenant;
8
+ });
9
+ exports.CurrentTenantId = (0, common_1.createParamDecorator)((data, ctx) => {
10
+ const request = ctx.switchToHttp().getRequest();
11
+ return request.tenantId;
12
+ });
13
+ //# sourceMappingURL=tenant.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.decorator.js","sourceRoot":"","sources":["../../decorator/tenant.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AAG3D,QAAA,aAAa,GAAG,IAAA,6BAAoB,EAC7C,CAAC,IAAa,EAAE,GAAqB,EAAsB,EAAE;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC;AAC1B,CAAC,CACJ,CAAC;AAEW,QAAA,eAAe,GAAG,IAAA,6BAAoB,EAC/C,CAAC,IAAa,EAAE,GAAqB,EAAsB,EAAE;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC5B,CAAC,CACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare class EncryptionModule {
2
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EncryptionModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const config_1 = require("@nestjs/config");
12
+ const encryption_service_1 = require("./encryption.service");
13
+ let EncryptionModule = class EncryptionModule {
14
+ };
15
+ exports.EncryptionModule = EncryptionModule;
16
+ exports.EncryptionModule = EncryptionModule = __decorate([
17
+ (0, common_1.Module)({
18
+ imports: [config_1.ConfigModule.forRoot()],
19
+ controllers: [],
20
+ providers: [encryption_service_1.EncryptionService],
21
+ exports: [encryption_service_1.EncryptionService]
22
+ })
23
+ ], EncryptionModule);
24
+ //# sourceMappingURL=encryption.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.module.js","sourceRoot":"","sources":["../../encryption/encryption.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,6DAAyD;AAQlD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAI,CAAA;AAApB,4CAAgB;2BAAhB,gBAAgB;IAN5B,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,CAAC,qBAAY,CAAC,OAAO,EAAE,CAAC;QACjC,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,CAAC,sCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC/B,CAAC;GACW,gBAAgB,CAAI"}
@@ -0,0 +1,17 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ export declare class EncryptionService {
3
+ private readonly configService;
4
+ private readonly algorithm;
5
+ private key;
6
+ private iv;
7
+ private readonly iterations;
8
+ private readonly keyLength;
9
+ private readonly ivLength;
10
+ constructor(configService: ConfigService);
11
+ deriveKeyAndIV(password: string, salt: string): {
12
+ key: Buffer;
13
+ iv: Buffer;
14
+ };
15
+ encrypt(text: string): string;
16
+ decrypt(encryptedText: string): string;
17
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.EncryptionService = void 0;
36
+ const common_1 = require("@nestjs/common");
37
+ const config_1 = require("@nestjs/config");
38
+ const crypto = __importStar(require("crypto"));
39
+ let EncryptionService = class EncryptionService {
40
+ constructor(configService) {
41
+ this.configService = configService;
42
+ this.algorithm = 'aes-256-cbc';
43
+ this.iterations = 100000;
44
+ this.keyLength = 32;
45
+ this.ivLength = 16;
46
+ const password = this.configService.get('ENCRYPTION_PASSWORD');
47
+ const salt = this.configService.get('ENCRYPTION_SALT');
48
+ if (!password || password.length < 1) {
49
+ throw new common_1.InternalServerErrorException('Encryption password not set');
50
+ }
51
+ if (!salt || salt.length < 1) {
52
+ throw new common_1.InternalServerErrorException('Encryption salt not set');
53
+ }
54
+ const keyAndIv = this.deriveKeyAndIV(password, salt);
55
+ this.key = keyAndIv.key;
56
+ this.iv = keyAndIv.iv;
57
+ if (this.key.length !== 32)
58
+ throw new Error('Encryption key must be 32 bytes');
59
+ if (this.iv.length !== 16)
60
+ throw new Error('IV must be 16 bytes');
61
+ }
62
+ deriveKeyAndIV(password, salt) {
63
+ const key = crypto.pbkdf2Sync(password, salt, this.iterations, this.keyLength, 'sha256');
64
+ const iv = key.subarray(0, this.ivLength);
65
+ return { key, iv };
66
+ }
67
+ encrypt(text) {
68
+ const cipher = crypto.createCipheriv(this.algorithm, this.key, this.iv);
69
+ let encrypted = cipher.update(text, 'utf8', 'hex');
70
+ encrypted += cipher.final('hex');
71
+ return encrypted;
72
+ }
73
+ decrypt(encryptedText) {
74
+ const decipher = crypto.createDecipheriv(this.algorithm, this.key, this.iv);
75
+ let decrypted = decipher.update(encryptedText, 'hex', 'utf8');
76
+ decrypted += decipher.final('utf8');
77
+ return decrypted;
78
+ }
79
+ };
80
+ exports.EncryptionService = EncryptionService;
81
+ exports.EncryptionService = EncryptionService = __decorate([
82
+ (0, common_1.Injectable)(),
83
+ __metadata("design:paramtypes", [config_1.ConfigService])
84
+ ], EncryptionService);
85
+ //# sourceMappingURL=encryption.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.service.js","sourceRoot":"","sources":["../../encryption/encryption.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA0E;AAC1E,2CAA+C;AAC/C,+CAAiC;AAG1B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAS1B,YACqB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAThC,cAAS,GAAG,aAAa,CAAC;QAI1B,eAAU,GAAG,MAAM,CAAC;QACpB,cAAS,GAAG,EAAE,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;QAK3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,qBAAqB,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,iBAAiB,CAAC,CAAA;QAE9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,qCAA4B,CAAC,6BAA6B,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,qCAA4B,CAAC,yBAAyB,CAAC,CAAA;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAA;QACvB,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAA;QAErB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtE,CAAC;IAED,cAAc,CAAC,QAAgB,EAAE,IAAY;QAEzC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzF,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,aAAqB;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ,CAAA;AAnDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAW2B,sBAAa;GAVxC,iBAAiB,CAmD7B"}
@@ -0,0 +1,9 @@
1
+ export declare class TenantAwareEntity {
2
+ id: number;
3
+ tenant: any;
4
+ tenantId: number;
5
+ createdAt: Date;
6
+ updatedAt: Date;
7
+ deletedAt: Date;
8
+ }
9
+ export default TenantAwareEntity;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TenantAwareEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ class TenantAwareEntity {
15
+ }
16
+ exports.TenantAwareEntity = TenantAwareEntity;
17
+ __decorate([
18
+ (0, typeorm_1.PrimaryGeneratedColumn)(),
19
+ __metadata("design:type", Number)
20
+ ], TenantAwareEntity.prototype, "id", void 0);
21
+ __decorate([
22
+ (0, typeorm_1.ManyToOne)(() => require('./tenant.entity').default, { onDelete: 'CASCADE' }),
23
+ (0, typeorm_1.JoinColumn)({ name: 'tenant_id' }),
24
+ __metadata("design:type", Object)
25
+ ], TenantAwareEntity.prototype, "tenant", void 0);
26
+ __decorate([
27
+ (0, typeorm_1.Column)({ name: 'tenant_id' }),
28
+ (0, typeorm_1.Index)(),
29
+ __metadata("design:type", Number)
30
+ ], TenantAwareEntity.prototype, "tenantId", void 0);
31
+ __decorate([
32
+ (0, typeorm_1.CreateDateColumn)({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' }),
33
+ __metadata("design:type", Date)
34
+ ], TenantAwareEntity.prototype, "createdAt", void 0);
35
+ __decorate([
36
+ (0, typeorm_1.UpdateDateColumn)({
37
+ type: 'timestamp',
38
+ default: () => 'CURRENT_TIMESTAMP',
39
+ onUpdate: 'CURRENT_TIMESTAMP',
40
+ }),
41
+ __metadata("design:type", Date)
42
+ ], TenantAwareEntity.prototype, "updatedAt", void 0);
43
+ __decorate([
44
+ (0, typeorm_1.DeleteDateColumn)({ nullable: true, default: null }),
45
+ __metadata("design:type", Date)
46
+ ], TenantAwareEntity.prototype, "deletedAt", void 0);
47
+ exports.default = TenantAwareEntity;
48
+ //# sourceMappingURL=TenantAwareEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantAwareEntity.js","sourceRoot":"","sources":["../../entities/TenantAwareEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6I;AAM7I,MAAa,iBAAiB;CAwB7B;AAxBD,8CAwBC;AAtBG;IADC,IAAA,gCAAsB,GAAE;;6CACd;AAIX;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC5E,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;;iDACtB;AAIZ;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC7B,IAAA,eAAK,GAAE;;mDACS;AAGjB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC;8BACjE,IAAI;oDAAC;AAOhB;IALC,IAAA,0BAAgB,EAAC;QACd,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB;QAClC,QAAQ,EAAE,mBAAmB;KAChC,CAAC;8BACS,IAAI;oDAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8BACzC,IAAI;oDAAC;AAGpB,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Repository, FindManyOptions, FindOneOptions, DeepPartial } from 'typeorm';
2
+ export declare class TenantAwareRepository<Entity extends {
3
+ tenantId: number;
4
+ }> extends Repository<Entity> {
5
+ findByTenant(tenantId: number, options?: FindManyOptions<Entity>): Promise<Entity[]>;
6
+ findOneByTenant(tenantId: number, options?: FindOneOptions<Entity>): Promise<Entity | null>;
7
+ countByTenant(tenantId: number, options?: FindManyOptions<Entity>): Promise<number>;
8
+ createForTenant(tenantId: number, entityData: DeepPartial<Entity>): Promise<Entity>;
9
+ updateForTenant(tenantId: number, id: number, entityData: DeepPartial<Entity>): Promise<Entity>;
10
+ deleteForTenant(tenantId: number, id: number): Promise<void>;
11
+ softDeleteForTenant(tenantId: number, id: number): Promise<void>;
12
+ }
13
+ export default TenantAwareRepository;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantAwareRepository = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ class TenantAwareRepository extends typeorm_1.Repository {
6
+ async findByTenant(tenantId, options) {
7
+ return this.find({
8
+ ...options,
9
+ where: {
10
+ ...options?.where,
11
+ tenantId,
12
+ },
13
+ });
14
+ }
15
+ async findOneByTenant(tenantId, options) {
16
+ return this.findOne({
17
+ ...options,
18
+ where: {
19
+ ...options?.where,
20
+ tenantId,
21
+ },
22
+ });
23
+ }
24
+ async countByTenant(tenantId, options) {
25
+ return this.count({
26
+ ...options,
27
+ where: {
28
+ ...options?.where,
29
+ tenantId,
30
+ },
31
+ });
32
+ }
33
+ async createForTenant(tenantId, entityData) {
34
+ const entity = this.create({
35
+ ...entityData,
36
+ tenantId,
37
+ });
38
+ return this.save(entity);
39
+ }
40
+ async updateForTenant(tenantId, id, entityData) {
41
+ const entity = await this.findOneByTenant(tenantId, { where: { id } });
42
+ if (!entity) {
43
+ throw new Error(`Entity with ID ${id} not found for tenant ${tenantId}`);
44
+ }
45
+ Object.assign(entity, entityData);
46
+ return this.save(entity);
47
+ }
48
+ async deleteForTenant(tenantId, id) {
49
+ const entity = await this.findOneByTenant(tenantId, { where: { id } });
50
+ if (!entity) {
51
+ throw new Error(`Entity with ID ${id} not found for tenant ${tenantId}`);
52
+ }
53
+ await this.remove(entity);
54
+ }
55
+ async softDeleteForTenant(tenantId, id) {
56
+ const entity = await this.findOneByTenant(tenantId, { where: { id } });
57
+ if (!entity) {
58
+ throw new Error(`Entity with ID ${id} not found for tenant ${tenantId}`);
59
+ }
60
+ await this.softRemove(entity);
61
+ }
62
+ }
63
+ exports.TenantAwareRepository = TenantAwareRepository;
64
+ exports.default = TenantAwareRepository;
65
+ //# sourceMappingURL=TenantAwareRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantAwareRepository.js","sourceRoot":"","sources":["../../entities/TenantAwareRepository.ts"],"names":[],"mappings":";;;AAAA,qCAAqG;AAMrG,MAAa,qBAA2D,SAAQ,oBAAkB;IAI9F,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,OAAiC;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC;YACb,GAAG,OAAO;YACV,KAAK,EAAE;gBACH,GAAG,OAAO,EAAE,KAAK;gBACjB,QAAQ;aACiB;SAChC,CAAC,CAAC;IACP,CAAC;IAKD,KAAK,CAAC,eAAe,CACjB,QAAgB,EAChB,OAAgC;QAEhC,OAAO,IAAI,CAAC,OAAO,CAAC;YAChB,GAAG,OAAO;YACV,KAAK,EAAE;gBACH,GAAG,OAAO,EAAE,KAAK;gBACjB,QAAQ;aACiB;SAChC,CAAC,CAAC;IACP,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,OAAiC;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC;YACd,GAAG,OAAO;YACV,KAAK,EAAE;gBACH,GAAG,OAAO,EAAE,KAAK;gBACjB,QAAQ;aACiB;SAChC,CAAC,CAAC;IACP,CAAC;IAKD,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,UAA+B;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,GAAG,UAAU;YACb,QAAQ;SACY,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAKD,KAAK,CAAC,eAAe,CACjB,QAAgB,EAChB,EAAU,EACV,UAA+B;QAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAS,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAKD,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,EAAU;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAS,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAKD,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,EAAU;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAS,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACJ;AA3FD,sDA2FC;AAED,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AbstractBaseEntity } from './common.pure.entity';
2
+ export declare class Amenity extends AbstractBaseEntity {
3
+ name: string;
4
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Amenity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const common_pure_entity_1 = require("./common.pure.entity");
15
+ let Amenity = class Amenity extends common_pure_entity_1.AbstractBaseEntity {
16
+ };
17
+ exports.Amenity = Amenity;
18
+ __decorate([
19
+ (0, typeorm_1.Column)({
20
+ name: 'name',
21
+ nullable: false
22
+ }),
23
+ __metadata("design:type", String)
24
+ ], Amenity.prototype, "name", void 0);
25
+ exports.Amenity = Amenity = __decorate([
26
+ (0, typeorm_1.Entity)({ name: 'amenity' })
27
+ ], Amenity);
28
+ //# sourceMappingURL=amenity.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amenity.entity.js","sourceRoot":"","sources":["../../entities/amenity.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyC;AACzC,6DAA0D;AAGnD,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,uCAAkB;CAM9C,CAAA;AANY,0BAAO;AAKlB;IAJC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;KAChB,CAAC;;qCACU;kBALD,OAAO;IADnB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;GACf,OAAO,CAMnB"}
@@ -0,0 +1,16 @@
1
+ import { DocumentStatus } from '../types/common.type';
2
+ import { AbstractTenantAwareEntity } from './common.pure.entity';
3
+ export declare abstract class AbstractBaseReviewableEntity extends AbstractTenantAwareEntity {
4
+ reviewer: any;
5
+ reviewedAt: string;
6
+ }
7
+ export declare abstract class AbstractBaseDocumentEntity extends AbstractBaseReviewableEntity {
8
+ status: DocumentStatus;
9
+ comment: string;
10
+ url: string;
11
+ description: string;
12
+ name: string;
13
+ size: number;
14
+ }
15
+ export declare abstract class AbstractBaseMediaEntity extends AbstractBaseDocumentEntity {
16
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AbstractBaseMediaEntity = exports.AbstractBaseDocumentEntity = exports.AbstractBaseReviewableEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const common_type_1 = require("../types/common.type");
15
+ const common_pure_entity_1 = require("./common.pure.entity");
16
+ class AbstractBaseReviewableEntity extends common_pure_entity_1.AbstractTenantAwareEntity {
17
+ }
18
+ exports.AbstractBaseReviewableEntity = AbstractBaseReviewableEntity;
19
+ __decorate([
20
+ (0, typeorm_1.ManyToOne)('User', { eager: true }),
21
+ (0, typeorm_1.JoinColumn)({ name: 'reviewed_by' }),
22
+ __metadata("design:type", Object)
23
+ ], AbstractBaseReviewableEntity.prototype, "reviewer", void 0);
24
+ __decorate([
25
+ (0, typeorm_1.Column)({ name: 'reviewed_at', type: 'timestamp', nullable: true }),
26
+ __metadata("design:type", String)
27
+ ], AbstractBaseReviewableEntity.prototype, "reviewedAt", void 0);
28
+ class AbstractBaseDocumentEntity extends AbstractBaseReviewableEntity {
29
+ }
30
+ exports.AbstractBaseDocumentEntity = AbstractBaseDocumentEntity;
31
+ __decorate([
32
+ (0, typeorm_1.Column)({
33
+ name: 'status',
34
+ type: 'enum',
35
+ enum: common_type_1.DocumentStatus,
36
+ default: common_type_1.DocumentStatus.PENDING,
37
+ }),
38
+ __metadata("design:type", String)
39
+ ], AbstractBaseDocumentEntity.prototype, "status", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Column)({ name: 'comment', nullable: true }),
42
+ __metadata("design:type", String)
43
+ ], AbstractBaseDocumentEntity.prototype, "comment", void 0);
44
+ __decorate([
45
+ (0, typeorm_1.Column)({ name: 'url', type: 'text', nullable: false }),
46
+ __metadata("design:type", String)
47
+ ], AbstractBaseDocumentEntity.prototype, "url", void 0);
48
+ __decorate([
49
+ (0, typeorm_1.Column)({ name: 'description', nullable: true }),
50
+ __metadata("design:type", String)
51
+ ], AbstractBaseDocumentEntity.prototype, "description", void 0);
52
+ __decorate([
53
+ (0, typeorm_1.Column)({ name: 'name', nullable: true }),
54
+ __metadata("design:type", String)
55
+ ], AbstractBaseDocumentEntity.prototype, "name", void 0);
56
+ __decorate([
57
+ (0, typeorm_1.Column)({ name: 'size', nullable: false, comment: "In bytes" }),
58
+ __metadata("design:type", Number)
59
+ ], AbstractBaseDocumentEntity.prototype, "size", void 0);
60
+ class AbstractBaseMediaEntity extends AbstractBaseDocumentEntity {
61
+ }
62
+ exports.AbstractBaseMediaEntity = AbstractBaseMediaEntity;
63
+ //# sourceMappingURL=common.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.entity.js","sourceRoot":"","sources":["../../entities/common.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAIiB;AACjB,sDAAsD;AACtD,6DAAiE;AAEjE,MAAsB,4BAA6B,SAAQ,8CAAyB;CAOnF;AAPD,oEAOC;AAJC;IAFC,IAAA,mBAAS,EAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;8DACtB;AAGd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gEAChD;AAGrB,MAAsB,0BAA2B,SAAQ,4BAA4B;CAuBpF;AAvBD,gEAuBC;AAhBC;IANC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,4BAAc;QACpB,OAAO,EAAE,4BAAc,CAAC,OAAO;KAChC,CAAC;;0DACqB;AAGvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DAC5B;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;uDAC3C;AAGZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+DAC5B;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wDAC5B;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;wDACnD;AAGd,MAAsB,uBAAwB,SAAQ,0BAA0B;CAG/E;AAHD,0DAGC"}
@@ -0,0 +1,11 @@
1
+ import { Tenant } from "./tenant.entity";
2
+ export declare abstract class AbstractBaseEntity {
3
+ id: number;
4
+ createdAt: Date;
5
+ updatedAt: Date;
6
+ deletedAt: Date;
7
+ }
8
+ export declare abstract class AbstractTenantAwareEntity extends AbstractBaseEntity {
9
+ tenant: Tenant;
10
+ tenantId: number;
11
+ }