@youjunhuang/entity-core 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 (245) hide show
  1. package/dist/data_access/base/base.repository.d.ts +29 -0
  2. package/dist/data_access/base/base.repository.d.ts.map +1 -0
  3. package/dist/data_access/base/base.repository.js +7 -0
  4. package/dist/data_access/base/base.repository.js.map +1 -0
  5. package/dist/data_access/base/index.d.ts +4 -0
  6. package/dist/data_access/base/index.d.ts.map +1 -0
  7. package/dist/data_access/base/index.js +20 -0
  8. package/dist/data_access/base/index.js.map +1 -0
  9. package/dist/data_access/base/mongo-base.repository.d.ts +34 -0
  10. package/dist/data_access/base/mongo-base.repository.d.ts.map +1 -0
  11. package/dist/data_access/base/mongo-base.repository.js +229 -0
  12. package/dist/data_access/base/mongo-base.repository.js.map +1 -0
  13. package/dist/data_access/base/sql-base.repository.d.ts +20 -0
  14. package/dist/data_access/base/sql-base.repository.d.ts.map +1 -0
  15. package/dist/data_access/base/sql-base.repository.js +180 -0
  16. package/dist/data_access/base/sql-base.repository.js.map +1 -0
  17. package/dist/data_access/index.d.ts +3 -0
  18. package/dist/data_access/index.d.ts.map +1 -0
  19. package/dist/data_access/index.js +20 -0
  20. package/dist/data_access/index.js.map +1 -0
  21. package/dist/data_access/mongo/account-mongo.repository.d.ts +14 -0
  22. package/dist/data_access/mongo/account-mongo.repository.d.ts.map +1 -0
  23. package/dist/data_access/mongo/account-mongo.repository.js +43 -0
  24. package/dist/data_access/mongo/account-mongo.repository.js.map +1 -0
  25. package/dist/data_access/mongo/attachment-mongo.repository.d.ts +139 -0
  26. package/dist/data_access/mongo/attachment-mongo.repository.d.ts.map +1 -0
  27. package/dist/data_access/mongo/attachment-mongo.repository.js +355 -0
  28. package/dist/data_access/mongo/attachment-mongo.repository.js.map +1 -0
  29. package/dist/data_access/mongo/biometric-cred.repository.d.ts +8 -0
  30. package/dist/data_access/mongo/biometric-cred.repository.d.ts.map +1 -0
  31. package/dist/data_access/mongo/biometric-cred.repository.js +32 -0
  32. package/dist/data_access/mongo/biometric-cred.repository.js.map +1 -0
  33. package/dist/data_access/mongo/camera-mongo.repository.d.ts +9 -0
  34. package/dist/data_access/mongo/camera-mongo.repository.d.ts.map +1 -0
  35. package/dist/data_access/mongo/camera-mongo.repository.js +39 -0
  36. package/dist/data_access/mongo/camera-mongo.repository.js.map +1 -0
  37. package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts +9 -0
  38. package/dist/data_access/mongo/camera-recording-mongo.repository.d.ts.map +1 -0
  39. package/dist/data_access/mongo/camera-recording-mongo.repository.js +39 -0
  40. package/dist/data_access/mongo/camera-recording-mongo.repository.js.map +1 -0
  41. package/dist/data_access/mongo/event-mongo.repository.d.ts +23 -0
  42. package/dist/data_access/mongo/event-mongo.repository.d.ts.map +1 -0
  43. package/dist/data_access/mongo/event-mongo.repository.js +175 -0
  44. package/dist/data_access/mongo/event-mongo.repository.js.map +1 -0
  45. package/dist/data_access/mongo/event-template-mongo.repository.d.ts +8 -0
  46. package/dist/data_access/mongo/event-template-mongo.repository.d.ts.map +1 -0
  47. package/dist/data_access/mongo/event-template-mongo.repository.js +36 -0
  48. package/dist/data_access/mongo/event-template-mongo.repository.js.map +1 -0
  49. package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts +19 -0
  50. package/dist/data_access/mongo/event-template-name-mongo.repository.d.ts.map +1 -0
  51. package/dist/data_access/mongo/event-template-name-mongo.repository.js +47 -0
  52. package/dist/data_access/mongo/event-template-name-mongo.repository.js.map +1 -0
  53. package/dist/data_access/mongo/index.d.ts +17 -0
  54. package/dist/data_access/mongo/index.d.ts.map +1 -0
  55. package/dist/data_access/mongo/index.js +33 -0
  56. package/dist/data_access/mongo/index.js.map +1 -0
  57. package/dist/data_access/mongo/map-mongo.repository.d.ts +9 -0
  58. package/dist/data_access/mongo/map-mongo.repository.d.ts.map +1 -0
  59. package/dist/data_access/mongo/map-mongo.repository.js +46 -0
  60. package/dist/data_access/mongo/map-mongo.repository.js.map +1 -0
  61. package/dist/data_access/mongo/password-cred.repository.d.ts +8 -0
  62. package/dist/data_access/mongo/password-cred.repository.d.ts.map +1 -0
  63. package/dist/data_access/mongo/password-cred.repository.js +32 -0
  64. package/dist/data_access/mongo/password-cred.repository.js.map +1 -0
  65. package/dist/data_access/mongo/permission-mongo.repository.d.ts +8 -0
  66. package/dist/data_access/mongo/permission-mongo.repository.d.ts.map +1 -0
  67. package/dist/data_access/mongo/permission-mongo.repository.js +32 -0
  68. package/dist/data_access/mongo/permission-mongo.repository.js.map +1 -0
  69. package/dist/data_access/mongo/report.repository.d.ts +12 -0
  70. package/dist/data_access/mongo/report.repository.d.ts.map +1 -0
  71. package/dist/data_access/mongo/report.repository.js +52 -0
  72. package/dist/data_access/mongo/report.repository.js.map +1 -0
  73. package/dist/data_access/mongo/role-mongo.repository.d.ts +7 -0
  74. package/dist/data_access/mongo/role-mongo.repository.d.ts.map +1 -0
  75. package/dist/data_access/mongo/role-mongo.repository.js +35 -0
  76. package/dist/data_access/mongo/role-mongo.repository.js.map +1 -0
  77. package/dist/data_access/mongo/third-party-cred.repository.d.ts +8 -0
  78. package/dist/data_access/mongo/third-party-cred.repository.d.ts.map +1 -0
  79. package/dist/data_access/mongo/third-party-cred.repository.js +32 -0
  80. package/dist/data_access/mongo/third-party-cred.repository.js.map +1 -0
  81. package/dist/data_access/mongo/ui-item-mongo.repository.d.ts +7 -0
  82. package/dist/data_access/mongo/ui-item-mongo.repository.d.ts.map +1 -0
  83. package/dist/data_access/mongo/ui-item-mongo.repository.js +35 -0
  84. package/dist/data_access/mongo/ui-item-mongo.repository.js.map +1 -0
  85. package/dist/data_access/mongo/user-mongo.repository.d.ts +8 -0
  86. package/dist/data_access/mongo/user-mongo.repository.d.ts.map +1 -0
  87. package/dist/data_access/mongo/user-mongo.repository.js +39 -0
  88. package/dist/data_access/mongo/user-mongo.repository.js.map +1 -0
  89. package/dist/data_access/sql/index.d.ts +1 -0
  90. package/dist/data_access/sql/index.d.ts.map +1 -0
  91. package/dist/data_access/sql/index.js +3 -0
  92. package/dist/data_access/sql/index.js.map +1 -0
  93. package/dist/data_access/sql/user-profiles.repository.d.ts +1 -0
  94. package/dist/data_access/sql/user-profiles.repository.d.ts.map +1 -0
  95. package/dist/data_access/sql/user-profiles.repository.js +36 -0
  96. package/dist/data_access/sql/user-profiles.repository.js.map +1 -0
  97. package/dist/index.d.ts +4 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +20 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/models/account.d.ts +27 -0
  102. package/dist/models/account.d.ts.map +1 -0
  103. package/dist/models/account.js +3 -0
  104. package/dist/models/account.js.map +1 -0
  105. package/dist/models/attachment.d.ts +147 -0
  106. package/dist/models/attachment.d.ts.map +1 -0
  107. package/dist/models/attachment.js +25 -0
  108. package/dist/models/attachment.js.map +1 -0
  109. package/dist/models/auth-credential.d.ts +46 -0
  110. package/dist/models/auth-credential.d.ts.map +1 -0
  111. package/dist/models/auth-credential.js +10 -0
  112. package/dist/models/auth-credential.js.map +1 -0
  113. package/dist/models/camera.d.ts +156 -0
  114. package/dist/models/camera.d.ts.map +1 -0
  115. package/dist/models/camera.js +34 -0
  116. package/dist/models/camera.js.map +1 -0
  117. package/dist/models/chatroom.d.ts +55 -0
  118. package/dist/models/chatroom.d.ts.map +1 -0
  119. package/dist/models/chatroom.js +3 -0
  120. package/dist/models/chatroom.js.map +1 -0
  121. package/dist/models/device.d.ts +50 -0
  122. package/dist/models/device.d.ts.map +1 -0
  123. package/dist/models/device.js +3 -0
  124. package/dist/models/device.js.map +1 -0
  125. package/dist/models/event.d.ts +170 -0
  126. package/dist/models/event.d.ts.map +1 -0
  127. package/dist/models/event.js +195 -0
  128. package/dist/models/event.js.map +1 -0
  129. package/dist/models/index.d.ts +19 -0
  130. package/dist/models/index.d.ts.map +1 -0
  131. package/dist/models/index.js +35 -0
  132. package/dist/models/index.js.map +1 -0
  133. package/dist/models/inform.d.ts +146 -0
  134. package/dist/models/inform.d.ts.map +1 -0
  135. package/dist/models/inform.js +61 -0
  136. package/dist/models/inform.js.map +1 -0
  137. package/dist/models/map.d.ts +26 -0
  138. package/dist/models/map.d.ts.map +1 -0
  139. package/dist/models/map.js +3 -0
  140. package/dist/models/map.js.map +1 -0
  141. package/dist/models/permission.d.ts +83 -0
  142. package/dist/models/permission.d.ts.map +1 -0
  143. package/dist/models/permission.js +78 -0
  144. package/dist/models/permission.js.map +1 -0
  145. package/dist/models/report.d.ts +167 -0
  146. package/dist/models/report.d.ts.map +1 -0
  147. package/dist/models/report.js +61 -0
  148. package/dist/models/report.js.map +1 -0
  149. package/dist/models/role.d.ts +84 -0
  150. package/dist/models/role.d.ts.map +1 -0
  151. package/dist/models/role.js +25 -0
  152. package/dist/models/role.js.map +1 -0
  153. package/dist/models/schedule.d.ts +39 -0
  154. package/dist/models/schedule.d.ts.map +1 -0
  155. package/dist/models/schedule.js +3 -0
  156. package/dist/models/schedule.js.map +1 -0
  157. package/dist/models/task.d.ts +97 -0
  158. package/dist/models/task.d.ts.map +1 -0
  159. package/dist/models/task.js +24 -0
  160. package/dist/models/task.js.map +1 -0
  161. package/dist/models/template.d.ts +197 -0
  162. package/dist/models/template.d.ts.map +1 -0
  163. package/dist/models/template.js +64 -0
  164. package/dist/models/template.js.map +1 -0
  165. package/dist/models/ui-item.d.ts +40 -0
  166. package/dist/models/ui-item.d.ts.map +1 -0
  167. package/dist/models/ui-item.js +17 -0
  168. package/dist/models/ui-item.js.map +1 -0
  169. package/dist/models/user.d.ts +125 -0
  170. package/dist/models/user.d.ts.map +1 -0
  171. package/dist/models/user.js +22 -0
  172. package/dist/models/user.js.map +1 -0
  173. package/dist/models/utils.d.ts +28 -0
  174. package/dist/models/utils.d.ts.map +1 -0
  175. package/dist/models/utils.js +3 -0
  176. package/dist/models/utils.js.map +1 -0
  177. package/dist/schemas/index.d.ts +2 -0
  178. package/dist/schemas/index.d.ts.map +1 -0
  179. package/dist/schemas/index.js +18 -0
  180. package/dist/schemas/index.js.map +1 -0
  181. package/dist/schemas/mongo/account-mongo.schema.d.ts +27 -0
  182. package/dist/schemas/mongo/account-mongo.schema.d.ts.map +1 -0
  183. package/dist/schemas/mongo/account-mongo.schema.js +22 -0
  184. package/dist/schemas/mongo/account-mongo.schema.js.map +1 -0
  185. package/dist/schemas/mongo/attachment-mongo.schema.d.ts +134 -0
  186. package/dist/schemas/mongo/attachment-mongo.schema.d.ts.map +1 -0
  187. package/dist/schemas/mongo/attachment-mongo.schema.js +182 -0
  188. package/dist/schemas/mongo/attachment-mongo.schema.js.map +1 -0
  189. package/dist/schemas/mongo/biometric-cred.schema.d.ts +27 -0
  190. package/dist/schemas/mongo/biometric-cred.schema.d.ts.map +1 -0
  191. package/dist/schemas/mongo/biometric-cred.schema.js +24 -0
  192. package/dist/schemas/mongo/biometric-cred.schema.js.map +1 -0
  193. package/dist/schemas/mongo/camera-mongo.schema.d.ts +21 -0
  194. package/dist/schemas/mongo/camera-mongo.schema.d.ts.map +1 -0
  195. package/dist/schemas/mongo/camera-mongo.schema.js +54 -0
  196. package/dist/schemas/mongo/camera-mongo.schema.js.map +1 -0
  197. package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts +21 -0
  198. package/dist/schemas/mongo/camera-recording-mongo.schema.d.ts.map +1 -0
  199. package/dist/schemas/mongo/camera-recording-mongo.schema.js +24 -0
  200. package/dist/schemas/mongo/camera-recording-mongo.schema.js.map +1 -0
  201. package/dist/schemas/mongo/event-mongo.schema.d.ts +51 -0
  202. package/dist/schemas/mongo/event-mongo.schema.d.ts.map +1 -0
  203. package/dist/schemas/mongo/event-mongo.schema.js +63 -0
  204. package/dist/schemas/mongo/event-mongo.schema.js.map +1 -0
  205. package/dist/schemas/mongo/event-template-mongo.schema.d.ts +39 -0
  206. package/dist/schemas/mongo/event-template-mongo.schema.d.ts.map +1 -0
  207. package/dist/schemas/mongo/event-template-mongo.schema.js +33 -0
  208. package/dist/schemas/mongo/event-template-mongo.schema.js.map +1 -0
  209. package/dist/schemas/mongo/index.d.ts +16 -0
  210. package/dist/schemas/mongo/index.d.ts.map +1 -0
  211. package/dist/schemas/mongo/index.js +32 -0
  212. package/dist/schemas/mongo/index.js.map +1 -0
  213. package/dist/schemas/mongo/map-mongo.schema.d.ts +20 -0
  214. package/dist/schemas/mongo/map-mongo.schema.d.ts.map +1 -0
  215. package/dist/schemas/mongo/map-mongo.schema.js +16 -0
  216. package/dist/schemas/mongo/map-mongo.schema.js.map +1 -0
  217. package/dist/schemas/mongo/password-cred.schema.d.ts +27 -0
  218. package/dist/schemas/mongo/password-cred.schema.d.ts.map +1 -0
  219. package/dist/schemas/mongo/password-cred.schema.js +22 -0
  220. package/dist/schemas/mongo/password-cred.schema.js.map +1 -0
  221. package/dist/schemas/mongo/permission-mongo.schema.d.ts +21 -0
  222. package/dist/schemas/mongo/permission-mongo.schema.d.ts.map +1 -0
  223. package/dist/schemas/mongo/permission-mongo.schema.js +70 -0
  224. package/dist/schemas/mongo/permission-mongo.schema.js.map +1 -0
  225. package/dist/schemas/mongo/report-mongo.schema.d.ts +41 -0
  226. package/dist/schemas/mongo/report-mongo.schema.d.ts.map +1 -0
  227. package/dist/schemas/mongo/report-mongo.schema.js +71 -0
  228. package/dist/schemas/mongo/report-mongo.schema.js.map +1 -0
  229. package/dist/schemas/mongo/role-mongo.schema.d.ts +22 -0
  230. package/dist/schemas/mongo/role-mongo.schema.d.ts.map +1 -0
  231. package/dist/schemas/mongo/role-mongo.schema.js +73 -0
  232. package/dist/schemas/mongo/role-mongo.schema.js.map +1 -0
  233. package/dist/schemas/mongo/third-party-cred.schema.d.ts +27 -0
  234. package/dist/schemas/mongo/third-party-cred.schema.d.ts.map +1 -0
  235. package/dist/schemas/mongo/third-party-cred.schema.js +30 -0
  236. package/dist/schemas/mongo/third-party-cred.schema.js.map +1 -0
  237. package/dist/schemas/mongo/ui-item.schema.d.ts +23 -0
  238. package/dist/schemas/mongo/ui-item.schema.d.ts.map +1 -0
  239. package/dist/schemas/mongo/ui-item.schema.js +61 -0
  240. package/dist/schemas/mongo/ui-item.schema.js.map +1 -0
  241. package/dist/schemas/mongo/user-mongo.schema.d.ts +24 -0
  242. package/dist/schemas/mongo/user-mongo.schema.d.ts.map +1 -0
  243. package/dist/schemas/mongo/user-mongo.schema.js +34 -0
  244. package/dist/schemas/mongo/user-mongo.schema.js.map +1 -0
  245. package/package.json +34 -0
@@ -0,0 +1,43 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AccountMongoRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("mongoose");
18
+ const mongo_base_repository_1 = require("../base/mongo-base.repository");
19
+ const account_mongo_schema_1 = require("../../schemas/mongo/account-mongo.schema");
20
+ let AccountMongoRepository = class AccountMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
21
+ constructor(accountModel) {
22
+ super(accountModel);
23
+ this.accountModel = accountModel;
24
+ }
25
+ // Add account-specific methods here if needed
26
+ async findByEmail(email) {
27
+ return this.accountModel.findOne({ email }).exec();
28
+ }
29
+ async findByUsername(username) {
30
+ return await this.accountModel
31
+ .findOne({ username })
32
+ .populate({
33
+ path: '_user', // 填充 userId 關聯的 UserProfile
34
+ }).lean();
35
+ }
36
+ };
37
+ exports.AccountMongoRepository = AccountMongoRepository;
38
+ exports.AccountMongoRepository = AccountMongoRepository = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __param(0, (0, common_1.Inject)(account_mongo_schema_1.AccountModel.modelName)),
41
+ __metadata("design:paramtypes", [mongoose_1.Model])
42
+ ], AccountMongoRepository);
43
+ //# sourceMappingURL=account-mongo.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-mongo.repository.js","sourceRoot":"","sources":["../../../data_access/mongo/account-mongo.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,uCAAiC;AACjC,yEAAoE;AACpE,mFAAyF;AAElF,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,2CAAoC;IAC9E,YAAoD,YAAoC;QAEtF,KAAK,CAAC,YAAY,CAAC,CAAC;QAF8B,iBAAY,GAAZ,YAAY,CAAwB;IAGxF,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,MAAM,IAAI,CAAC,YAAY;aAC3B,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;aACrB,QAAQ,CAAC;YACR,IAAI,EAAE,OAAO,EAAG,4BAA4B;SAC7C,CAAC,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;CACF,CAAA;AAlBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,mCAAY,CAAC,SAAS,CAAC,CAAA;qCAAuB,gBAAK;GAD5D,sBAAsB,CAkBlC"}
@@ -0,0 +1,139 @@
1
+ import { Model } from 'mongoose';
2
+ import { MongoBaseRepository } from '../base/mongo-base.repository';
3
+ import { TextAttachmentDocument, ImageAttachmentDocument, VideoAttachmentDocument, AudioAttachmentDocument, FileAttachmentDocument, AttachmentDocument, EventAttachmentDocument } from '../../schemas/mongo/attachment-mongo.schema';
4
+ import { AttachmentType } from '../../models/attachment';
5
+ export declare class TextAttachmentMongoRepository extends MongoBaseRepository<TextAttachmentDocument> {
6
+ private textAttachmentModel;
7
+ constructor(textAttachmentModel: Model<TextAttachmentDocument>);
8
+ /**
9
+ * 根據附加對象類型和 ID 查找文字附件
10
+ */
11
+ findByAttachedEntity(attachedTo: string, attachedId: string): Promise<TextAttachmentDocument[]>;
12
+ /**
13
+ * 根據用途查找文字附件
14
+ */
15
+ findByPurpose(purpose: string): Promise<TextAttachmentDocument[]>;
16
+ /**
17
+ * 全文搜索文字內容
18
+ */
19
+ searchByContent(searchText: string): Promise<TextAttachmentDocument[]>;
20
+ }
21
+ export declare class ImageAttachmentMongoRepository extends MongoBaseRepository<ImageAttachmentDocument> {
22
+ private imageAttachmentModel;
23
+ constructor(imageAttachmentModel: Model<ImageAttachmentDocument>);
24
+ /**
25
+ * 根據附加對象類型和 ID 查找圖片附件
26
+ */
27
+ findByAttachedEntity(attachedTo: string, attachedId: string): Promise<ImageAttachmentDocument[]>;
28
+ /**
29
+ * 根據用途查找圖片附件
30
+ */
31
+ findByPurpose(purpose: string): Promise<ImageAttachmentDocument[]>;
32
+ /**
33
+ * 根據尺寸範圍查找圖片
34
+ */
35
+ findByDimensions(minWidth?: number, maxWidth?: number, minHeight?: number, maxHeight?: number): Promise<ImageAttachmentDocument[]>;
36
+ }
37
+ export declare class VideoAttachmentMongoRepository extends MongoBaseRepository<VideoAttachmentDocument> {
38
+ private videoAttachmentModel;
39
+ constructor(videoAttachmentModel: Model<VideoAttachmentDocument>);
40
+ /**
41
+ * 根據附加對象類型和 ID 查找影片附件
42
+ */
43
+ findByAttachedEntity(attachedTo: string, attachedId: string): Promise<VideoAttachmentDocument[]>;
44
+ /**
45
+ * 根據時長範圍查找影片
46
+ */
47
+ findByDurationRange(minDuration?: number, maxDuration?: number): Promise<VideoAttachmentDocument[]>;
48
+ /**
49
+ * 根據編解碼器查找影片
50
+ */
51
+ findByCodec(codec: string): Promise<VideoAttachmentDocument[]>;
52
+ }
53
+ export declare class AudioAttachmentMongoRepository extends MongoBaseRepository<AudioAttachmentDocument> {
54
+ private audioAttachmentModel;
55
+ constructor(audioAttachmentModel: Model<AudioAttachmentDocument>);
56
+ /**
57
+ * 根據附加對象類型和 ID 查找音訊附件
58
+ */
59
+ findByAttachedEntity(attachedTo: string, attachedId: string): Promise<AudioAttachmentDocument[]>;
60
+ /**
61
+ * 根據時長範圍查找音訊
62
+ */
63
+ findByDurationRange(minDuration?: number, maxDuration?: number): Promise<AudioAttachmentDocument[]>;
64
+ }
65
+ export declare class FileAttachmentMongoRepository extends MongoBaseRepository<FileAttachmentDocument> {
66
+ private fileAttachmentModel;
67
+ constructor(fileAttachmentModel: Model<FileAttachmentDocument>);
68
+ /**
69
+ * 根據附加對象類型和 ID 查找檔案附件
70
+ */
71
+ findByAttachedEntity(attachedTo: string, attachedId: string): Promise<FileAttachmentDocument[]>;
72
+ /**
73
+ * 根據檔案名稱搜索
74
+ */
75
+ searchByFileName(fileName: string): Promise<FileAttachmentDocument[]>;
76
+ /**
77
+ * 根據 MIME 類型查找檔案
78
+ */
79
+ findByMimeType(mimeType: string): Promise<FileAttachmentDocument[]>;
80
+ }
81
+ export declare class EventAttachmentMongoRepository extends MongoBaseRepository<EventAttachmentDocument> {
82
+ private eventAttachmentModel;
83
+ constructor(eventAttachmentModel: Model<EventAttachmentDocument>);
84
+ /**
85
+ * 根據事件 ID 查找事件附件
86
+ */
87
+ findByEventId(eventId: string): Promise<EventAttachmentDocument[]>;
88
+ /**
89
+ * 根據狀態查找事件附件
90
+ */
91
+ findByStatus(status: string): Promise<EventAttachmentDocument[]>;
92
+ /**
93
+ * 獲取最新的事件狀態附件
94
+ */
95
+ getLatestStatusByEventId(eventId: string): Promise<EventAttachmentDocument | null>;
96
+ /**
97
+ * 批次獲取多個事件的最新狀態附件(依 updated/created 時間排序取一筆)
98
+ */
99
+ getLatestStatusByEventIds(eventIds: string[]): Promise<Array<{
100
+ attachedId: string;
101
+ status?: string;
102
+ resolvedAt?: Date | null;
103
+ created_at?: Date;
104
+ updated_at?: Date;
105
+ id?: string;
106
+ }>>;
107
+ }
108
+ /**
109
+ * 統一的附件 Repository 管理器
110
+ * 提供跨附件類型的查詢功能
111
+ */
112
+ export declare class AttachmentMongoRepository {
113
+ private readonly textRepository;
114
+ private readonly imageRepository;
115
+ private readonly videoRepository;
116
+ private readonly audioRepository;
117
+ private readonly fileRepository;
118
+ private readonly eventRepository;
119
+ constructor(textRepository: TextAttachmentMongoRepository, imageRepository: ImageAttachmentMongoRepository, videoRepository: VideoAttachmentMongoRepository, audioRepository: AudioAttachmentMongoRepository, fileRepository: FileAttachmentMongoRepository, eventRepository: EventAttachmentMongoRepository);
120
+ /**
121
+ * 根據附件類型獲取對應的 repository
122
+ */
123
+ getRepositoryByType(type: AttachmentType): TextAttachmentMongoRepository | ImageAttachmentMongoRepository | VideoAttachmentMongoRepository | AudioAttachmentMongoRepository | FileAttachmentMongoRepository | EventAttachmentMongoRepository;
124
+ /**
125
+ * 獲取指定對象的所有附件(所有類型)
126
+ */
127
+ findAllAttachmentsByEntity(attachedTo: string, attachedId: string): Promise<{
128
+ text: TextAttachmentDocument[];
129
+ image: ImageAttachmentDocument[];
130
+ video: VideoAttachmentDocument[];
131
+ audio: AudioAttachmentDocument[];
132
+ file: FileAttachmentDocument[];
133
+ }>;
134
+ /**
135
+ * 根據標籤搜索所有類型的附件
136
+ */
137
+ searchByTags(tags: string[]): Promise<AttachmentDocument[]>;
138
+ }
139
+ //# sourceMappingURL=attachment-mongo.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-mongo.repository.d.ts","sourceRoot":"","sources":["../../../data_access/mongo/attachment-mongo.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,355 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AttachmentMongoRepository = exports.EventAttachmentMongoRepository = exports.FileAttachmentMongoRepository = exports.AudioAttachmentMongoRepository = exports.VideoAttachmentMongoRepository = exports.ImageAttachmentMongoRepository = exports.TextAttachmentMongoRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("mongoose");
18
+ const mongo_base_repository_1 = require("../base/mongo-base.repository");
19
+ const attachment_mongo_schema_1 = require("../../schemas/mongo/attachment-mongo.schema");
20
+ let TextAttachmentMongoRepository = class TextAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
21
+ constructor(textAttachmentModel) {
22
+ super(textAttachmentModel);
23
+ this.textAttachmentModel = textAttachmentModel;
24
+ // 設定 populate 為預設填充選項
25
+ this.setDefaultPopulateOptions([
26
+ { path: '_attached' },
27
+ { path: '_created_by_user' }
28
+ ]);
29
+ }
30
+ /**
31
+ * 根據附加對象類型和 ID 查找文字附件
32
+ */
33
+ async findByAttachedEntity(attachedTo, attachedId) {
34
+ return this.getAll({ attachedTo, attachedId });
35
+ }
36
+ /**
37
+ * 根據用途查找文字附件
38
+ */
39
+ async findByPurpose(purpose) {
40
+ return this.getAll({ purpose });
41
+ }
42
+ /**
43
+ * 全文搜索文字內容
44
+ */
45
+ async searchByContent(searchText) {
46
+ return this.getAll({
47
+ $text: { $search: searchText }
48
+ });
49
+ }
50
+ };
51
+ exports.TextAttachmentMongoRepository = TextAttachmentMongoRepository;
52
+ exports.TextAttachmentMongoRepository = TextAttachmentMongoRepository = __decorate([
53
+ (0, common_1.Injectable)(),
54
+ __param(0, (0, common_1.Inject)(attachment_mongo_schema_1.TextAttachmentModel.modelName)),
55
+ __metadata("design:paramtypes", [mongoose_1.Model])
56
+ ], TextAttachmentMongoRepository);
57
+ let ImageAttachmentMongoRepository = class ImageAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
58
+ constructor(imageAttachmentModel) {
59
+ super(imageAttachmentModel);
60
+ this.imageAttachmentModel = imageAttachmentModel;
61
+ this.setDefaultPopulateOptions([
62
+ { path: '_attached' }
63
+ ]);
64
+ }
65
+ /**
66
+ * 根據附加對象類型和 ID 查找圖片附件
67
+ */
68
+ async findByAttachedEntity(attachedTo, attachedId) {
69
+ return this.getAll({ attachedTo, attachedId });
70
+ }
71
+ /**
72
+ * 根據用途查找圖片附件
73
+ */
74
+ async findByPurpose(purpose) {
75
+ return this.getAll({ purpose });
76
+ }
77
+ /**
78
+ * 根據尺寸範圍查找圖片
79
+ */
80
+ async findByDimensions(minWidth, maxWidth, minHeight, maxHeight) {
81
+ const filter = {};
82
+ if (minWidth !== undefined || maxWidth !== undefined) {
83
+ filter.width = {};
84
+ if (minWidth !== undefined)
85
+ filter.width.$gte = minWidth;
86
+ if (maxWidth !== undefined)
87
+ filter.width.$lte = maxWidth;
88
+ }
89
+ if (minHeight !== undefined || maxHeight !== undefined) {
90
+ filter.height = {};
91
+ if (minHeight !== undefined)
92
+ filter.height.$gte = minHeight;
93
+ if (maxHeight !== undefined)
94
+ filter.height.$lte = maxHeight;
95
+ }
96
+ return this.getAll(filter);
97
+ }
98
+ };
99
+ exports.ImageAttachmentMongoRepository = ImageAttachmentMongoRepository;
100
+ exports.ImageAttachmentMongoRepository = ImageAttachmentMongoRepository = __decorate([
101
+ (0, common_1.Injectable)(),
102
+ __param(0, (0, common_1.Inject)(attachment_mongo_schema_1.ImageAttachmentModel.modelName)),
103
+ __metadata("design:paramtypes", [mongoose_1.Model])
104
+ ], ImageAttachmentMongoRepository);
105
+ let VideoAttachmentMongoRepository = class VideoAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
106
+ constructor(videoAttachmentModel) {
107
+ super(videoAttachmentModel);
108
+ this.videoAttachmentModel = videoAttachmentModel;
109
+ this.setDefaultPopulateOptions([
110
+ { path: '_attached' }
111
+ ]);
112
+ }
113
+ /**
114
+ * 根據附加對象類型和 ID 查找影片附件
115
+ */
116
+ async findByAttachedEntity(attachedTo, attachedId) {
117
+ return this.getAll({ attachedTo, attachedId });
118
+ }
119
+ /**
120
+ * 根據時長範圍查找影片
121
+ */
122
+ async findByDurationRange(minDuration, maxDuration) {
123
+ const filter = {};
124
+ if (minDuration !== undefined || maxDuration !== undefined) {
125
+ filter.duration = {};
126
+ if (minDuration !== undefined)
127
+ filter.duration.$gte = minDuration;
128
+ if (maxDuration !== undefined)
129
+ filter.duration.$lte = maxDuration;
130
+ }
131
+ return this.getAll(filter);
132
+ }
133
+ /**
134
+ * 根據編解碼器查找影片
135
+ */
136
+ async findByCodec(codec) {
137
+ return this.getAll({ codec });
138
+ }
139
+ };
140
+ exports.VideoAttachmentMongoRepository = VideoAttachmentMongoRepository;
141
+ exports.VideoAttachmentMongoRepository = VideoAttachmentMongoRepository = __decorate([
142
+ (0, common_1.Injectable)(),
143
+ __param(0, (0, common_1.Inject)('VideoAttachment')),
144
+ __metadata("design:paramtypes", [mongoose_1.Model])
145
+ ], VideoAttachmentMongoRepository);
146
+ let AudioAttachmentMongoRepository = class AudioAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
147
+ constructor(audioAttachmentModel) {
148
+ super(audioAttachmentModel);
149
+ this.audioAttachmentModel = audioAttachmentModel;
150
+ this.setDefaultPopulateOptions([
151
+ { path: '_attached' }
152
+ ]);
153
+ }
154
+ /**
155
+ * 根據附加對象類型和 ID 查找音訊附件
156
+ */
157
+ async findByAttachedEntity(attachedTo, attachedId) {
158
+ return this.getAll({ attachedTo, attachedId });
159
+ }
160
+ /**
161
+ * 根據時長範圍查找音訊
162
+ */
163
+ async findByDurationRange(minDuration, maxDuration) {
164
+ const filter = {};
165
+ if (minDuration !== undefined || maxDuration !== undefined) {
166
+ filter.duration = {};
167
+ if (minDuration !== undefined)
168
+ filter.duration.$gte = minDuration;
169
+ if (maxDuration !== undefined)
170
+ filter.duration.$lte = maxDuration;
171
+ }
172
+ return this.getAll(filter);
173
+ }
174
+ };
175
+ exports.AudioAttachmentMongoRepository = AudioAttachmentMongoRepository;
176
+ exports.AudioAttachmentMongoRepository = AudioAttachmentMongoRepository = __decorate([
177
+ (0, common_1.Injectable)(),
178
+ __param(0, (0, common_1.Inject)('AudioAttachment')),
179
+ __metadata("design:paramtypes", [mongoose_1.Model])
180
+ ], AudioAttachmentMongoRepository);
181
+ let FileAttachmentMongoRepository = class FileAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
182
+ constructor(fileAttachmentModel) {
183
+ super(fileAttachmentModel);
184
+ this.fileAttachmentModel = fileAttachmentModel;
185
+ this.setDefaultPopulateOptions([
186
+ { path: '_attached' }
187
+ ]);
188
+ }
189
+ /**
190
+ * 根據附加對象類型和 ID 查找檔案附件
191
+ */
192
+ async findByAttachedEntity(attachedTo, attachedId) {
193
+ return this.getAll({ attachedTo, attachedId });
194
+ }
195
+ /**
196
+ * 根據檔案名稱搜索
197
+ */
198
+ async searchByFileName(fileName) {
199
+ return this.getAll({
200
+ $text: { $search: fileName }
201
+ });
202
+ }
203
+ /**
204
+ * 根據 MIME 類型查找檔案
205
+ */
206
+ async findByMimeType(mimeType) {
207
+ return this.getAll({ mimeType });
208
+ }
209
+ };
210
+ exports.FileAttachmentMongoRepository = FileAttachmentMongoRepository;
211
+ exports.FileAttachmentMongoRepository = FileAttachmentMongoRepository = __decorate([
212
+ (0, common_1.Injectable)(),
213
+ __param(0, (0, common_1.Inject)('FileAttachment')),
214
+ __metadata("design:paramtypes", [mongoose_1.Model])
215
+ ], FileAttachmentMongoRepository);
216
+ let EventAttachmentMongoRepository = class EventAttachmentMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
217
+ constructor(eventAttachmentModel) {
218
+ super(eventAttachmentModel);
219
+ this.eventAttachmentModel = eventAttachmentModel;
220
+ // Do not auto-populate _attached to avoid MissingSchemaError
221
+ // when attachedTo contains non-registered models (e.g., legacy records)
222
+ }
223
+ /**
224
+ * 根據事件 ID 查找事件附件
225
+ */
226
+ async findByEventId(eventId) {
227
+ return this.getAll({ attachedTo: 'Event', attachedId: eventId });
228
+ }
229
+ /**
230
+ * 根據狀態查找事件附件
231
+ */
232
+ async findByStatus(status) {
233
+ return this.getAll({ status });
234
+ }
235
+ /**
236
+ * 獲取最新的事件狀態附件
237
+ */
238
+ async getLatestStatusByEventId(eventId) {
239
+ const attachments = await this.eventAttachmentModel
240
+ .find({ attachedTo: 'Event', attachedId: eventId, status: { $exists: true } })
241
+ .sort({ created_at: -1 })
242
+ .limit(1)
243
+ .exec();
244
+ return attachments.length > 0 ? attachments[0] : null;
245
+ }
246
+ /**
247
+ * 批次獲取多個事件的最新狀態附件(依 updated/created 時間排序取一筆)
248
+ */
249
+ async getLatestStatusByEventIds(eventIds) {
250
+ if (!eventIds || eventIds.length === 0)
251
+ return [];
252
+ const pipeline = [
253
+ { $match: { attachedTo: 'Event', attachedId: { $in: eventIds }, status: { $exists: true } } },
254
+ { $sort: { updatedAt: -1, createdAt: -1 } },
255
+ { $group: { _id: '$attachedId', latest: { $first: '$$ROOT' } } },
256
+ {
257
+ $project: {
258
+ _id: 0,
259
+ attachedId: '$_id',
260
+ status: '$latest.status',
261
+ resolvedAt: '$latest.resolvedAt',
262
+ created_at: '$latest.createdAt',
263
+ updated_at: '$latest.updatedAt',
264
+ id: '$latest.id',
265
+ },
266
+ },
267
+ ];
268
+ return this.eventAttachmentModel.aggregate(pipeline).exec();
269
+ }
270
+ };
271
+ exports.EventAttachmentMongoRepository = EventAttachmentMongoRepository;
272
+ exports.EventAttachmentMongoRepository = EventAttachmentMongoRepository = __decorate([
273
+ (0, common_1.Injectable)(),
274
+ __param(0, (0, common_1.Inject)(attachment_mongo_schema_1.EventAttachmentModel.modelName)),
275
+ __metadata("design:paramtypes", [mongoose_1.Model])
276
+ ], EventAttachmentMongoRepository);
277
+ /**
278
+ * 統一的附件 Repository 管理器
279
+ * 提供跨附件類型的查詢功能
280
+ */
281
+ let AttachmentMongoRepository = class AttachmentMongoRepository {
282
+ constructor(textRepository, imageRepository, videoRepository, audioRepository, fileRepository, eventRepository) {
283
+ this.textRepository = textRepository;
284
+ this.imageRepository = imageRepository;
285
+ this.videoRepository = videoRepository;
286
+ this.audioRepository = audioRepository;
287
+ this.fileRepository = fileRepository;
288
+ this.eventRepository = eventRepository;
289
+ }
290
+ /**
291
+ * 根據附件類型獲取對應的 repository
292
+ */
293
+ getRepositoryByType(type) {
294
+ switch (type) {
295
+ case 'text':
296
+ return this.textRepository;
297
+ case 'image':
298
+ return this.imageRepository;
299
+ case 'video':
300
+ return this.videoRepository;
301
+ case 'audio':
302
+ return this.audioRepository;
303
+ case 'file':
304
+ return this.fileRepository;
305
+ case 'event':
306
+ return this.eventRepository;
307
+ default:
308
+ throw new Error(`Unsupported attachment type: ${type}`);
309
+ }
310
+ }
311
+ /**
312
+ * 獲取指定對象的所有附件(所有類型)
313
+ */
314
+ async findAllAttachmentsByEntity(attachedTo, attachedId) {
315
+ const [text, image, video, audio, file] = await Promise.all([
316
+ this.textRepository.findByAttachedEntity(attachedTo, attachedId),
317
+ this.imageRepository.findByAttachedEntity(attachedTo, attachedId),
318
+ this.videoRepository.findByAttachedEntity(attachedTo, attachedId),
319
+ this.audioRepository.findByAttachedEntity(attachedTo, attachedId),
320
+ this.fileRepository.findByAttachedEntity(attachedTo, attachedId)
321
+ ]);
322
+ return { text, image, video, audio, file };
323
+ }
324
+ /**
325
+ * 根據標籤搜索所有類型的附件
326
+ */
327
+ async searchByTags(tags) {
328
+ const searchFilter = { freeTags: { $in: tags } };
329
+ const [textResults, imageResults, videoResults, audioResults, fileResults] = await Promise.all([
330
+ this.textRepository.getAll(searchFilter),
331
+ this.imageRepository.getAll(searchFilter),
332
+ this.videoRepository.getAll(searchFilter),
333
+ this.audioRepository.getAll(searchFilter),
334
+ this.fileRepository.getAll(searchFilter)
335
+ ]);
336
+ return [
337
+ ...textResults,
338
+ ...imageResults,
339
+ ...videoResults,
340
+ ...audioResults,
341
+ ...fileResults
342
+ ];
343
+ }
344
+ };
345
+ exports.AttachmentMongoRepository = AttachmentMongoRepository;
346
+ exports.AttachmentMongoRepository = AttachmentMongoRepository = __decorate([
347
+ (0, common_1.Injectable)(),
348
+ __metadata("design:paramtypes", [TextAttachmentMongoRepository,
349
+ ImageAttachmentMongoRepository,
350
+ VideoAttachmentMongoRepository,
351
+ AudioAttachmentMongoRepository,
352
+ FileAttachmentMongoRepository,
353
+ EventAttachmentMongoRepository])
354
+ ], AttachmentMongoRepository);
355
+ //# sourceMappingURL=attachment-mongo.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-mongo.repository.js","sourceRoot":"","sources":["../../../data_access/mongo/attachment-mongo.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Model } from 'mongoose';
2
+ import { MongoBaseRepository } from '../base/mongo-base.repository';
3
+ import { BiometricCredentialDocument } from '../../schemas/mongo/biometric-cred.schema';
4
+ export declare class BiometricCredentialMongoRepository extends MongoBaseRepository<BiometricCredentialDocument> {
5
+ private biometricCredentialModel;
6
+ constructor(biometricCredentialModel: Model<BiometricCredentialDocument>);
7
+ }
8
+ //# sourceMappingURL=biometric-cred.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biometric-cred.repository.d.ts","sourceRoot":"","sources":["../../../data_access/mongo/biometric-cred.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAA4B,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAElH,qBACa,kCAAmC,SAAQ,mBAAmB,CAAC,2BAA2B,CAAC;IAC9C,OAAO,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,KAAK,CAAC,2BAA2B,CAAC;CAI7H"}
@@ -0,0 +1,32 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.BiometricCredentialMongoRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("mongoose");
18
+ const mongo_base_repository_1 = require("../base/mongo-base.repository");
19
+ const biometric_cred_schema_1 = require("../../schemas/mongo/biometric-cred.schema");
20
+ let BiometricCredentialMongoRepository = class BiometricCredentialMongoRepository extends mongo_base_repository_1.MongoBaseRepository {
21
+ constructor(biometricCredentialModel) {
22
+ super(biometricCredentialModel);
23
+ this.biometricCredentialModel = biometricCredentialModel;
24
+ }
25
+ };
26
+ exports.BiometricCredentialMongoRepository = BiometricCredentialMongoRepository;
27
+ exports.BiometricCredentialMongoRepository = BiometricCredentialMongoRepository = __decorate([
28
+ (0, common_1.Injectable)(),
29
+ __param(0, (0, common_1.Inject)(biometric_cred_schema_1.BiometricCredentialModel.modelName)),
30
+ __metadata("design:paramtypes", [mongoose_1.Model])
31
+ ], BiometricCredentialMongoRepository);
32
+ //# sourceMappingURL=biometric-cred.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biometric-cred.repository.js","sourceRoot":"","sources":["../../../data_access/mongo/biometric-cred.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,uCAAiC;AACjC,yEAAoE;AACpE,qFAAkH;AAG3G,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,2CAAgD;IACtG,YAAgE,wBAA4D;QAE1H,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAF8B,6BAAwB,GAAxB,wBAAwB,CAAoC;IAG5H,CAAC;CACF,CAAA;AALY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,gDAAwB,CAAC,SAAS,CAAC,CAAA;qCAAmC,gBAAK;GADpF,kCAAkC,CAK9C"}
@@ -0,0 +1,9 @@
1
+ import { Model } from 'mongoose';
2
+ import { MongoBaseRepository } from '../base/mongo-base.repository';
3
+ import { CameraDocument } from '../../schemas/mongo/camera-mongo.schema';
4
+ export declare class CameraMongoRepository extends MongoBaseRepository<CameraDocument> {
5
+ private cameraModel;
6
+ constructor(cameraModel: Model<CameraDocument>);
7
+ getCamerasByMapId(mapId: string): Promise<CameraDocument[]>;
8
+ }
9
+ //# sourceMappingURL=camera-mongo.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-mongo.repository.d.ts","sourceRoot":"","sources":["../../../data_access/mongo/camera-mongo.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACtF,qBACa,qBAAsB,SAAQ,mBAAmB,CAAC,cAAc,CAAC;IACjC,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;IAU/E,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAGlE"}