@ooneex/typeorm 0.0.1 → 0.3.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 (178) hide show
  1. package/dist/shared/chunk-1ez1q8rj.js +5 -0
  2. package/dist/shared/chunk-1ez1q8rj.js.map +10 -0
  3. package/dist/shared/chunk-23739ja5.js +5 -0
  4. package/dist/shared/{chunk-pwhygf44.js.map → chunk-23739ja5.js.map} +2 -2
  5. package/dist/shared/chunk-3s989zjv.js +5 -0
  6. package/dist/shared/{chunk-eh420jqn.js.map → chunk-3s989zjv.js.map} +2 -2
  7. package/dist/shared/chunk-4ysz6b7v.js +5 -0
  8. package/dist/shared/chunk-4ysz6b7v.js.map +10 -0
  9. package/dist/shared/chunk-635xd7h1.js +5 -0
  10. package/dist/shared/{chunk-wmftwzcs.js.map → chunk-635xd7h1.js.map} +2 -2
  11. package/dist/shared/chunk-63wp98dt.js +101 -0
  12. package/dist/shared/chunk-63wp98dt.js.map +11 -0
  13. package/dist/shared/chunk-6gzanxfz.js +5 -0
  14. package/dist/shared/chunk-6gzanxfz.js.map +18 -0
  15. package/dist/shared/chunk-81xh5hbk.js +5 -0
  16. package/dist/shared/chunk-81xh5hbk.js.map +21 -0
  17. package/dist/shared/chunk-8q6vs955.js +5 -0
  18. package/dist/shared/chunk-8q6vs955.js.map +10 -0
  19. package/dist/shared/chunk-bdyby4d8.js +5 -0
  20. package/dist/shared/chunk-bdyby4d8.js.map +10 -0
  21. package/dist/shared/chunk-fjtw26pp.js +5 -0
  22. package/dist/shared/{chunk-j7nprmyh.js.map → chunk-fjtw26pp.js.map} +2 -2
  23. package/dist/shared/chunk-gcch857j.js +5 -0
  24. package/dist/shared/chunk-gcch857j.js.map +11 -0
  25. package/dist/shared/chunk-h5mdrgqp.js +5 -0
  26. package/dist/shared/chunk-h5mdrgqp.js.map +21 -0
  27. package/dist/shared/chunk-mwb9mvew.js +42 -0
  28. package/dist/shared/chunk-mwb9mvew.js.map +10 -0
  29. package/dist/shared/chunk-n5dqa3qy.js +36 -0
  30. package/dist/shared/chunk-n5dqa3qy.js.map +10 -0
  31. package/dist/shared/chunk-qqvx08b4.js +5 -0
  32. package/dist/shared/{chunk-2e7zbxcq.js.map → chunk-qqvx08b4.js.map} +2 -2
  33. package/dist/shared/chunk-r7q1mkar.js +82 -0
  34. package/dist/shared/chunk-r7q1mkar.js.map +10 -0
  35. package/dist/shared/chunk-s1yxjjz5.js +5 -0
  36. package/dist/shared/chunk-s1yxjjz5.js.map +21 -0
  37. package/dist/shared/chunk-sm3brprk.js +51 -0
  38. package/dist/shared/chunk-sm3brprk.js.map +10 -0
  39. package/dist/shared/chunk-wp8mt34q.js +5 -0
  40. package/dist/shared/chunk-wp8mt34q.js.map +12 -0
  41. package/dist/shared/chunk-x9h6vngs.js +5 -0
  42. package/dist/shared/chunk-x9h6vngs.js.map +9 -0
  43. package/dist/shared/chunk-xyq6sfz0.js +5 -0
  44. package/dist/shared/{chunk-zmzz7hqq.js.map → chunk-xyq6sfz0.js.map} +2 -2
  45. package/dist/shared/chunk-yq9g4gac.js +5 -0
  46. package/dist/shared/{chunk-wawk30n1.js.map → chunk-yq9g4gac.js.map} +9 -4
  47. package/dist/src/entities/book/index.d.ts +80 -3
  48. package/dist/src/entities/book/index.js +2 -2
  49. package/dist/src/entities/book/index.js.map +1 -1
  50. package/dist/src/entities/common/index.d.ts +21 -28
  51. package/dist/src/entities/common/index.js +2 -2
  52. package/dist/src/entities/common/index.js.map +1 -1
  53. package/dist/src/entities/country/index.d.ts +21 -0
  54. package/dist/src/entities/country/index.js +4 -0
  55. package/dist/src/entities/country/index.js.map +9 -0
  56. package/dist/src/entities/currency/index.d.ts +23 -0
  57. package/dist/src/entities/currency/index.js +4 -0
  58. package/dist/src/entities/currency/index.js.map +9 -0
  59. package/dist/src/entities/folder/index.d.ts +104 -0
  60. package/dist/src/entities/folder/index.js +4 -0
  61. package/dist/src/entities/folder/index.js.map +19 -0
  62. package/dist/src/entities/gamification/flashcard/index.js +2 -2
  63. package/dist/src/entities/gamification/flashcard/index.js.map +1 -1
  64. package/dist/src/entities/gamification/index.js +2 -2
  65. package/dist/src/entities/gamification/index.js.map +1 -1
  66. package/dist/src/entities/gamification/mcq/index.d.ts +76 -7
  67. package/dist/src/entities/gamification/mcq/index.js +2 -2
  68. package/dist/src/entities/gamification/mcq/index.js.map +1 -1
  69. package/dist/src/entities/image/index.d.ts +83 -6
  70. package/dist/src/entities/image/index.js +2 -2
  71. package/dist/src/entities/image/index.js.map +1 -1
  72. package/dist/src/entities/medecine/index.d.ts +36 -0
  73. package/dist/src/entities/medecine/index.js +4 -0
  74. package/dist/src/entities/medecine/index.js.map +9 -0
  75. package/dist/src/entities/payment/index.js +2 -2
  76. package/dist/src/entities/payment/index.js.map +1 -1
  77. package/dist/src/entities/user/index.d.ts +48 -7
  78. package/dist/src/entities/user/index.js +2 -2
  79. package/dist/src/entities/user/index.js.map +1 -1
  80. package/dist/src/entities/video/index.d.ts +88 -10
  81. package/dist/src/entities/video/index.js +2 -2
  82. package/dist/src/entities/video/index.js.map +1 -1
  83. package/dist/src/migrations/book/index.d.ts +97 -0
  84. package/dist/src/migrations/book/index.js +516 -0
  85. package/dist/src/migrations/book/index.js.map +21 -0
  86. package/dist/src/migrations/common/index.d.ts +41 -0
  87. package/dist/src/migrations/common/index.js +57 -0
  88. package/dist/src/migrations/common/index.js.map +10 -0
  89. package/dist/src/migrations/country/index.d.ts +9 -0
  90. package/dist/src/migrations/country/index.js +40 -0
  91. package/dist/src/migrations/country/index.js.map +10 -0
  92. package/dist/src/migrations/currency/index.d.ts +9 -0
  93. package/dist/src/migrations/currency/index.js +44 -0
  94. package/dist/src/migrations/currency/index.js.map +10 -0
  95. package/dist/src/migrations/folder/index.d.ts +81 -0
  96. package/dist/src/migrations/folder/index.js +387 -0
  97. package/dist/src/migrations/folder/index.js.map +19 -0
  98. package/dist/src/migrations/gamification/flashcard/index.d.ts +57 -0
  99. package/dist/src/migrations/gamification/flashcard/index.js +420 -0
  100. package/dist/src/migrations/gamification/flashcard/index.js.map +16 -0
  101. package/dist/src/migrations/gamification/index.d.ts +9 -0
  102. package/dist/src/migrations/gamification/index.js +4 -0
  103. package/dist/src/migrations/gamification/index.js.map +9 -0
  104. package/dist/src/migrations/gamification/mcq/index.d.ts +97 -0
  105. package/dist/src/migrations/gamification/mcq/index.js +526 -0
  106. package/dist/src/migrations/gamification/mcq/index.js.map +21 -0
  107. package/dist/src/migrations/image/index.d.ts +81 -0
  108. package/dist/src/migrations/image/index.js +328 -0
  109. package/dist/src/migrations/image/index.js.map +18 -0
  110. package/dist/src/migrations/medecine/index.d.ts +25 -0
  111. package/dist/src/migrations/medecine/index.js +119 -0
  112. package/dist/src/migrations/medecine/index.js.map +12 -0
  113. package/dist/src/migrations/payment/index.d.ts +49 -0
  114. package/dist/src/migrations/payment/index.js +352 -0
  115. package/dist/src/migrations/payment/index.js.map +15 -0
  116. package/dist/src/migrations/user/index.d.ts +81 -0
  117. package/dist/src/migrations/user/index.js +309 -0
  118. package/dist/src/migrations/user/index.js.map +19 -0
  119. package/dist/src/migrations/video/index.d.ts +97 -0
  120. package/dist/src/migrations/video/index.js +289 -0
  121. package/dist/src/migrations/video/index.js.map +21 -0
  122. package/dist/src/repositories/book/index.d.ts +310 -35
  123. package/dist/src/repositories/book/index.js +2 -2
  124. package/dist/src/repositories/book/index.js.map +15 -6
  125. package/dist/src/repositories/common/index.d.ts +65 -94
  126. package/dist/src/repositories/common/index.js +2 -2
  127. package/dist/src/repositories/common/index.js.map +8 -9
  128. package/dist/src/repositories/country/index.d.ts +42 -0
  129. package/dist/src/repositories/country/index.js +4 -0
  130. package/dist/src/repositories/country/index.js.map +10 -0
  131. package/dist/src/repositories/currency/index.d.ts +44 -0
  132. package/dist/src/repositories/currency/index.js +4 -0
  133. package/dist/src/repositories/currency/index.js.map +10 -0
  134. package/dist/src/repositories/gamification/flashcard/index.d.ts +14 -14
  135. package/dist/src/repositories/gamification/flashcard/index.js +2 -2
  136. package/dist/src/repositories/gamification/flashcard/index.js.map +9 -9
  137. package/dist/src/repositories/gamification/index.d.ts +328 -83
  138. package/dist/src/repositories/gamification/index.js +2 -2
  139. package/dist/src/repositories/gamification/index.js.map +3 -3
  140. package/dist/src/repositories/gamification/mcq/index.d.ts +299 -54
  141. package/dist/src/repositories/gamification/mcq/index.js +2 -2
  142. package/dist/src/repositories/gamification/mcq/index.js.map +15 -7
  143. package/dist/src/repositories/image/index.d.ts +295 -20
  144. package/dist/src/repositories/image/index.js +2 -2
  145. package/dist/src/repositories/image/index.js.map +13 -4
  146. package/dist/src/repositories/medecine/index.d.ts +99 -0
  147. package/dist/src/repositories/medecine/index.js +4 -0
  148. package/dist/src/repositories/medecine/index.js.map +12 -0
  149. package/dist/src/repositories/payment/index.d.ts +12 -12
  150. package/dist/src/repositories/payment/index.js +2 -2
  151. package/dist/src/repositories/payment/index.js.map +8 -8
  152. package/dist/src/repositories/user/index.d.ts +210 -59
  153. package/dist/src/repositories/user/index.js +2 -2
  154. package/dist/src/repositories/user/index.js.map +13 -8
  155. package/dist/src/repositories/video/index.d.ts +330 -54
  156. package/dist/src/repositories/video/index.js +2 -2
  157. package/dist/src/repositories/video/index.js.map +15 -6
  158. package/package.json +188 -58
  159. package/dist/ooneex-typeorm-0.0.1.tgz +0 -0
  160. package/dist/shared/chunk-2e7zbxcq.js +0 -5
  161. package/dist/shared/chunk-764bzjhz.js +0 -5
  162. package/dist/shared/chunk-764bzjhz.js.map +0 -12
  163. package/dist/shared/chunk-eh420jqn.js +0 -5
  164. package/dist/shared/chunk-gjsgnzaq.js +0 -5
  165. package/dist/shared/chunk-gjsgnzaq.js.map +0 -10
  166. package/dist/shared/chunk-hw4vdg6q.js +0 -5
  167. package/dist/shared/chunk-hw4vdg6q.js.map +0 -10
  168. package/dist/shared/chunk-j7nprmyh.js +0 -5
  169. package/dist/shared/chunk-kgxsdeye.js +0 -5
  170. package/dist/shared/chunk-kgxsdeye.js.map +0 -13
  171. package/dist/shared/chunk-ntrrrvwt.js +0 -5
  172. package/dist/shared/chunk-ntrrrvwt.js.map +0 -12
  173. package/dist/shared/chunk-pwhygf44.js +0 -5
  174. package/dist/shared/chunk-sd6mmec6.js +0 -5
  175. package/dist/shared/chunk-sd6mmec6.js.map +0 -12
  176. package/dist/shared/chunk-wawk30n1.js +0 -5
  177. package/dist/shared/chunk-wmftwzcs.js +0 -5
  178. package/dist/shared/chunk-zmzz7hqq.js +0 -5
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/repositories/user/AccountRepository.ts", "src/repositories/user/SessionRepository.ts", "src/repositories/user/UserProfileUpdateRepository.ts", "src/repositories/user/UserRepository.ts", "src/repositories/user/VerificationRepository.ts"],
3
+ "sources": ["src/repositories/user/AccountRepository.ts", "src/repositories/user/SessionRepository.ts", "src/repositories/user/UserBlockedRepository.ts", "src/repositories/user/UserFollowedRepository.ts", "src/repositories/user/UserProfileUpdateRepository.ts", "src/repositories/user/UserReportRepository.ts", "src/repositories/user/UserRepository.ts", "src/repositories/user/UserStatRepository.ts", "src/repositories/user/UserViewedRepository.ts", "src/repositories/user/VerificationRepository.ts"],
4
4
  "sourcesContent": [
5
- "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabaseAdapter } from \"@ooneex/database\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { AccountEntity } from \"../../entities/user/AccountEntity\";\n\nexport class AccountRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabaseAdapter,\n ) {}\n\n public async open(): Promise<Repository<AccountEntity>> {\n return await this.database.open(AccountEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<AccountEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<AccountEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply account search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { provider: ILike(`%${q}%`) },\n { providerAccountId: ILike(`%${q}%`) },\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { provider: ILike(`%${q}%`) },\n { providerAccountId: ILike(`%${q}%`) },\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<AccountEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<AccountEntity>): Promise<AccountEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: AccountEntity, options?: SaveOptions): Promise<AccountEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: AccountEntity[], options?: SaveOptions): Promise<AccountEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: AccountEntity, options?: SaveOptions): Promise<AccountEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: AccountEntity[], options?: SaveOptions): Promise<AccountEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<AccountEntity> | FindOptionsWhere<AccountEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(criteria?: FindOptionsWhere<AccountEntity> | FindOptionsWhere<AccountEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
6
- "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabaseAdapter } from \"@ooneex/database\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike, LessThan } from \"typeorm\";\nimport { SessionEntity } from \"../../entities/user/SessionEntity\";\n\nexport class SessionRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabaseAdapter,\n ) {}\n\n public async open(): Promise<Repository<SessionEntity>> {\n return await this.database.open(SessionEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<SessionEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<SessionEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply session search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { deviceName: ILike(`%${q}%`) },\n { deviceType: ILike(`%${q}%`) },\n { browser: ILike(`%${q}%`) },\n { operatingSystem: ILike(`%${q}%`) },\n { location: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { deviceName: ILike(`%${q}%`) },\n { deviceType: ILike(`%${q}%`) },\n { browser: ILike(`%${q}%`) },\n { operatingSystem: ILike(`%${q}%`) },\n { location: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<SessionEntity>): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async findByToken(token: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { token },\n });\n }\n\n public async findByRefreshToken(refreshToken: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { refreshToken },\n });\n }\n\n public async findActiveSessions(userId: string): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.find({\n where: { user: { id: userId }, isActive: true },\n order: { lastAccessAt: \"DESC\" },\n });\n }\n\n public async findExpiredSessions(): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.find({\n where: { expiresAt: LessThan(new Date()), isActive: true },\n });\n }\n\n public async create(entity: SessionEntity, options?: SaveOptions): Promise<SessionEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: SessionEntity[], options?: SaveOptions): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: SessionEntity, options?: SaveOptions): Promise<SessionEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: SessionEntity[], options?: SaveOptions): Promise<SessionEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<SessionEntity> | FindOptionsWhere<SessionEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async revokeSession(sessionId: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n isActive: false,\n revokedAt: new Date(),\n };\n\n if (reason !== undefined) {\n updateData.revokedReason = reason;\n }\n\n return await repository.update(sessionId, updateData);\n }\n\n public async revokeAllUserSessions(userId: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n isActive: false,\n revokedAt: new Date(),\n };\n\n if (reason !== undefined) {\n updateData.revokedReason = reason;\n }\n\n return await repository.update({ user: { id: userId }, isActive: true }, updateData);\n }\n\n public async count(criteria?: FindOptionsWhere<SessionEntity> | FindOptionsWhere<SessionEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
7
- "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabaseAdapter } from \"@ooneex/database\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport { EProfileUpdateStatus } from \"@ooneex/user\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { UserProfileUpdateEntity } from \"../../entities/user/UserProfileUpdateEntity\";\n\nexport class UserProfileUpdateRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabaseAdapter,\n ) {}\n\n public async open(): Promise<Repository<UserProfileUpdateEntity>> {\n return await this.database.open(UserProfileUpdateEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserProfileUpdateEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserProfileUpdateEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply user profile update search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [{ updateReason: ILike(`%${q}%`) }, { description: ILike(`%${q}%`) }];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [{ updateReason: ILike(`%${q}%`) }, { description: ILike(`%${q}%`) }];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserProfileUpdateEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserProfileUpdateEntity>): Promise<UserProfileUpdateEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserProfileUpdateEntity, options?: SaveOptions): Promise<UserProfileUpdateEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(\n entities: UserProfileUpdateEntity[],\n options?: SaveOptions,\n ): Promise<UserProfileUpdateEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserProfileUpdateEntity, options?: SaveOptions): Promise<UserProfileUpdateEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(\n entities: UserProfileUpdateEntity[],\n options?: SaveOptions,\n ): Promise<UserProfileUpdateEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async markAsCompleted(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.update(id, {\n status: EProfileUpdateStatus.COMPLETED,\n appliedAt: new Date(),\n });\n }\n\n public async markAsFailed(id: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n status: EProfileUpdateStatus.FAILED,\n };\n\n if (reason !== undefined) {\n updateData.description = reason;\n }\n\n return await repository.update(id, updateData);\n }\n\n public async markAsReverted(id: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n status: EProfileUpdateStatus.REVERTED,\n };\n\n if (reason !== undefined) {\n updateData.description = reason;\n }\n\n return await repository.update(id, updateData);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserProfileUpdateEntity> | FindOptionsWhere<UserProfileUpdateEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserProfileUpdateEntity> | FindOptionsWhere<UserProfileUpdateEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
8
- "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabaseAdapter } from \"@ooneex/database\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { UserEntity } from \"../../entities/user/UserEntity\";\n\nexport class UserRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabaseAdapter,\n ) {}\n\n public async open(): Promise<Repository<UserEntity>> {\n return await this.database.open(UserEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply user search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n { firstName: ILike(`%${q}%`) },\n { lastName: ILike(`%${q}%`) },\n { username: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n { firstName: ILike(`%${q}%`) },\n { lastName: ILike(`%${q}%`) },\n { username: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserEntity>): Promise<UserEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserEntity, options?: SaveOptions): Promise<UserEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserEntity[], options?: SaveOptions): Promise<UserEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserEntity, options?: SaveOptions): Promise<UserEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserEntity[], options?: SaveOptions): Promise<UserEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(criteria: FindOptionsWhere<UserEntity> | FindOptionsWhere<UserEntity>[]): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(criteria?: FindOptionsWhere<UserEntity> | FindOptionsWhere<UserEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
9
- "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabaseAdapter } from \"@ooneex/database\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike, MoreThan } from \"typeorm\";\nimport { VerificationEntity } from \"../../entities/user/VerificationEntity\";\n\nexport class VerificationRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabaseAdapter,\n ) {}\n\n public async open(): Promise<Repository<VerificationEntity>> {\n return await this.database.open(VerificationEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<VerificationEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<VerificationEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply verification search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { phone: ILike(`%${q}%`) },\n { token: ILike(`%${q}%`) },\n { code: ILike(`%${q}%`) },\n { description: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { phone: ILike(`%${q}%`) },\n { token: ILike(`%${q}%`) },\n { code: ILike(`%${q}%`) },\n { description: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<VerificationEntity>): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async findByToken(token: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { token, isUsed: false, expiresAt: MoreThan(new Date()) },\n });\n }\n\n public async findByCode(code: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { code, isUsed: false, expiresAt: MoreThan(new Date()) },\n });\n }\n\n public async create(entity: VerificationEntity, options?: SaveOptions): Promise<VerificationEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: VerificationEntity[], options?: SaveOptions): Promise<VerificationEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: VerificationEntity, options?: SaveOptions): Promise<VerificationEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: VerificationEntity[], options?: SaveOptions): Promise<VerificationEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async markAsUsed(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.update(id, {\n isUsed: true,\n usedAt: new Date(),\n });\n }\n\n public async incrementAttempts(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository\n .createQueryBuilder()\n .update(VerificationEntity)\n .set({ attemptsCount: () => \"attempts_count + 1\" })\n .where(\"id = :id\", { id })\n .execute();\n }\n\n public async delete(\n criteria: FindOptionsWhere<VerificationEntity> | FindOptionsWhere<VerificationEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<VerificationEntity> | FindOptionsWhere<VerificationEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n"
5
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { AccountEntity } from \"../../entities/user/AccountEntity\";\n\n@decorator.repository()\nexport class AccountRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<AccountEntity>> {\n return await this.database.open(AccountEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<AccountEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<AccountEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply account search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { provider: ILike(`%${q}%`) },\n { providerAccountId: ILike(`%${q}%`) },\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { provider: ILike(`%${q}%`) },\n { providerAccountId: ILike(`%${q}%`) },\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<AccountEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<AccountEntity>): Promise<AccountEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: AccountEntity, options?: SaveOptions): Promise<AccountEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: AccountEntity[], options?: SaveOptions): Promise<AccountEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: AccountEntity, options?: SaveOptions): Promise<AccountEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: AccountEntity[], options?: SaveOptions): Promise<AccountEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<AccountEntity> | FindOptionsWhere<AccountEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(criteria?: FindOptionsWhere<AccountEntity> | FindOptionsWhere<AccountEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
6
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike, LessThan } from \"typeorm\";\nimport { SessionEntity } from \"../../entities/user/SessionEntity\";\n\n@decorator.repository()\nexport class SessionRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<SessionEntity>> {\n return await this.database.open(SessionEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<SessionEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<SessionEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply session search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { deviceName: ILike(`%${q}%`) },\n { deviceType: ILike(`%${q}%`) },\n { browser: ILike(`%${q}%`) },\n { operatingSystem: ILike(`%${q}%`) },\n { location: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { deviceName: ILike(`%${q}%`) },\n { deviceType: ILike(`%${q}%`) },\n { browser: ILike(`%${q}%`) },\n { operatingSystem: ILike(`%${q}%`) },\n { location: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<SessionEntity>): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async findByToken(token: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { token },\n });\n }\n\n public async findByRefreshToken(refreshToken: string): Promise<SessionEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { refreshToken },\n });\n }\n\n public async findActiveSessions(userId: string): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.find({\n where: { user: { id: userId }, isActive: true },\n order: { lastAccessAt: \"DESC\" },\n });\n }\n\n public async findExpiredSessions(): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.find({\n where: { expiresAt: LessThan(new Date()), isActive: true },\n });\n }\n\n public async create(entity: SessionEntity, options?: SaveOptions): Promise<SessionEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: SessionEntity[], options?: SaveOptions): Promise<SessionEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: SessionEntity, options?: SaveOptions): Promise<SessionEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: SessionEntity[], options?: SaveOptions): Promise<SessionEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<SessionEntity> | FindOptionsWhere<SessionEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async revokeSession(sessionId: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n isActive: false,\n revokedAt: new Date(),\n };\n\n if (reason !== undefined) {\n updateData.revokedReason = reason;\n }\n\n return await repository.update(sessionId, updateData);\n }\n\n public async revokeAllUserSessions(userId: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n isActive: false,\n revokedAt: new Date(),\n };\n\n if (reason !== undefined) {\n updateData.revokedReason = reason;\n }\n\n return await repository.update({ user: { id: userId }, isActive: true }, updateData);\n }\n\n public async count(criteria?: FindOptionsWhere<SessionEntity> | FindOptionsWhere<SessionEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
7
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { UserBlockedEntity } from \"../../entities/user/UserBlockedEntity\";\n\n@decorator.repository()\nexport class UserBlockedRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserBlockedEntity>> {\n return await this.database.open(UserBlockedEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserBlockedEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserBlockedEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n const result = await repository.find({ ...rest, take, ...(skip !== undefined && { skip }) });\n\n const total = await this.count(rest.where);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserBlockedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserBlockedEntity>): Promise<UserBlockedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserBlockedEntity, options?: SaveOptions): Promise<UserBlockedEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserBlockedEntity[], options?: SaveOptions): Promise<UserBlockedEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserBlockedEntity, options?: SaveOptions): Promise<UserBlockedEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserBlockedEntity[], options?: SaveOptions): Promise<UserBlockedEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserBlockedEntity> | FindOptionsWhere<UserBlockedEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserBlockedEntity> | FindOptionsWhere<UserBlockedEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
8
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { UserFollowedEntity } from \"../../entities/user/UserFollowedEntity\";\n\n@decorator.repository()\nexport class UserFollowedRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserFollowedEntity>> {\n return await this.database.open(UserFollowedEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserFollowedEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserFollowedEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n const result = await repository.find({ ...rest, take, ...(skip !== undefined && { skip }) });\n\n const total = await this.count(rest.where);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserFollowedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserFollowedEntity>): Promise<UserFollowedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserFollowedEntity, options?: SaveOptions): Promise<UserFollowedEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserFollowedEntity[], options?: SaveOptions): Promise<UserFollowedEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserFollowedEntity, options?: SaveOptions): Promise<UserFollowedEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserFollowedEntity[], options?: SaveOptions): Promise<UserFollowedEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserFollowedEntity> | FindOptionsWhere<UserFollowedEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserFollowedEntity> | FindOptionsWhere<UserFollowedEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
9
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport { EProfileUpdateStatus } from \"@ooneex/user\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { UserProfileUpdateEntity } from \"../../entities/user/UserProfileUpdateEntity\";\n\n@decorator.repository()\nexport class UserProfileUpdateRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserProfileUpdateEntity>> {\n return await this.database.open(UserProfileUpdateEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserProfileUpdateEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserProfileUpdateEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply user profile update search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [{ updateReason: ILike(`%${q}%`) }, { description: ILike(`%${q}%`) }];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [{ updateReason: ILike(`%${q}%`) }, { description: ILike(`%${q}%`) }];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserProfileUpdateEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserProfileUpdateEntity>): Promise<UserProfileUpdateEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserProfileUpdateEntity, options?: SaveOptions): Promise<UserProfileUpdateEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(\n entities: UserProfileUpdateEntity[],\n options?: SaveOptions,\n ): Promise<UserProfileUpdateEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserProfileUpdateEntity, options?: SaveOptions): Promise<UserProfileUpdateEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(\n entities: UserProfileUpdateEntity[],\n options?: SaveOptions,\n ): Promise<UserProfileUpdateEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async markAsCompleted(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.update(id, {\n status: EProfileUpdateStatus.COMPLETED,\n appliedAt: new Date(),\n });\n }\n\n public async markAsFailed(id: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n status: EProfileUpdateStatus.FAILED,\n };\n\n if (reason !== undefined) {\n updateData.description = reason;\n }\n\n return await repository.update(id, updateData);\n }\n\n public async markAsReverted(id: string, reason?: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n const updateData: Record<string, unknown> = {\n status: EProfileUpdateStatus.REVERTED,\n };\n\n if (reason !== undefined) {\n updateData.description = reason;\n }\n\n return await repository.update(id, updateData);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserProfileUpdateEntity> | FindOptionsWhere<UserProfileUpdateEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserProfileUpdateEntity> | FindOptionsWhere<UserProfileUpdateEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
10
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { UserReportEntity } from \"../../entities/user/UserReportEntity\";\n\n@decorator.repository()\nexport class UserReportRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserReportEntity>> {\n return await this.database.open(UserReportEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserReportEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserReportEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n const result = await repository.find({ ...rest, take, ...(skip !== undefined && { skip }) });\n\n const total = await this.count(rest.where);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserReportEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserReportEntity>): Promise<UserReportEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserReportEntity, options?: SaveOptions): Promise<UserReportEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserReportEntity[], options?: SaveOptions): Promise<UserReportEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserReportEntity, options?: SaveOptions): Promise<UserReportEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserReportEntity[], options?: SaveOptions): Promise<UserReportEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserReportEntity> | FindOptionsWhere<UserReportEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserReportEntity> | FindOptionsWhere<UserReportEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
11
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike } from \"typeorm\";\nimport { UserEntity } from \"../../entities/user/UserEntity\";\n\n@decorator.repository()\nexport class UserRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserEntity>> {\n return await this.database.open(UserEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply user search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n { firstName: ILike(`%${q}%`) },\n { lastName: ILike(`%${q}%`) },\n { username: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { name: ILike(`%${q}%`) },\n { firstName: ILike(`%${q}%`) },\n { lastName: ILike(`%${q}%`) },\n { username: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserEntity>): Promise<UserEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserEntity, options?: SaveOptions): Promise<UserEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserEntity[], options?: SaveOptions): Promise<UserEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserEntity, options?: SaveOptions): Promise<UserEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserEntity[], options?: SaveOptions): Promise<UserEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(criteria: FindOptionsWhere<UserEntity> | FindOptionsWhere<UserEntity>[]): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(criteria?: FindOptionsWhere<UserEntity> | FindOptionsWhere<UserEntity>[]): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
12
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { UserStatEntity } from \"../../entities/user/UserStatEntity\";\n\n@decorator.repository()\nexport class UserStatRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserStatEntity>> {\n return await this.database.open(UserStatEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserStatEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserStatEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n const result = await repository.find({ ...rest, take, ...(skip !== undefined && { skip }) });\n\n const total = await this.count(rest.where);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserStatEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserStatEntity>): Promise<UserStatEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserStatEntity, options?: SaveOptions): Promise<UserStatEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserStatEntity[], options?: SaveOptions): Promise<UserStatEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserStatEntity, options?: SaveOptions): Promise<UserStatEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserStatEntity[], options?: SaveOptions): Promise<UserStatEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserStatEntity> | FindOptionsWhere<UserStatEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserStatEntity> | FindOptionsWhere<UserStatEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
13
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { UserViewedEntity } from \"../../entities/user/UserViewedEntity\";\n\n@decorator.repository()\nexport class UserViewedRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<UserViewedEntity>> {\n return await this.database.open(UserViewedEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<UserViewedEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<UserViewedEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n const result = await repository.find({ ...rest, take, ...(skip !== undefined && { skip }) });\n\n const total = await this.count(rest.where);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<UserViewedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<UserViewedEntity>): Promise<UserViewedEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async create(entity: UserViewedEntity, options?: SaveOptions): Promise<UserViewedEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: UserViewedEntity[], options?: SaveOptions): Promise<UserViewedEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: UserViewedEntity, options?: SaveOptions): Promise<UserViewedEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: UserViewedEntity[], options?: SaveOptions): Promise<UserViewedEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async delete(\n criteria: FindOptionsWhere<UserViewedEntity> | FindOptionsWhere<UserViewedEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<UserViewedEntity> | FindOptionsWhere<UserViewedEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n",
14
+ "import { inject } from \"@ooneex/container\";\nimport type { ITypeormDatabase } from \"@ooneex/database\";\nimport { decorator } from \"@ooneex/repository\";\nimport type { FilterResultType } from \"@ooneex/types\";\nimport type { FindManyOptions, FindOptionsWhere, Repository, SaveOptions, UpdateResult } from \"typeorm\";\nimport { ILike, MoreThan } from \"typeorm\";\nimport { VerificationEntity } from \"../../entities/user/VerificationEntity\";\n\n@decorator.repository()\nexport class VerificationRepository {\n constructor(\n @inject(\"database\")\n private readonly database: ITypeormDatabase,\n ) {}\n\n public async open(): Promise<Repository<VerificationEntity>> {\n return await this.database.open(VerificationEntity);\n }\n\n public async close(): Promise<void> {\n await this.database.close();\n }\n\n public async find(\n criteria: FindManyOptions<VerificationEntity> & { page?: number; limit?: number; q?: string },\n ): Promise<FilterResultType<VerificationEntity>> {\n const repository = await this.open();\n\n const { page = 1, limit = 100, q, ...rest } = criteria;\n\n let skip: number | undefined;\n const take = limit === 0 ? 100 : limit;\n\n if (page && page > 0 && limit && limit > 0) {\n skip = (page - 1) * take;\n }\n\n // Apply verification search if q parameter is provided\n let findOptions = { ...rest, take, ...(skip !== undefined && { skip }) };\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { phone: ILike(`%${q}%`) },\n { token: ILike(`%${q}%`) },\n { code: ILike(`%${q}%`) },\n { description: ILike(`%${q}%`) },\n ];\n\n findOptions = {\n ...findOptions,\n where: rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions,\n };\n }\n\n const result = await repository.find(findOptions);\n\n // Apply the same where conditions for count including search\n let countWhere = rest.where;\n if (q) {\n const searchConditions = [\n { email: ILike(`%${q}%`) },\n { phone: ILike(`%${q}%`) },\n { token: ILike(`%${q}%`) },\n { code: ILike(`%${q}%`) },\n { description: ILike(`%${q}%`) },\n ];\n\n countWhere = rest.where\n ? [...searchConditions.map((condition) => ({ ...rest.where, ...condition }))]\n : searchConditions;\n }\n\n const total = await this.count(countWhere);\n const totalPages = Math.ceil(total / limit);\n\n return {\n resources: result,\n total,\n totalPages,\n page,\n limit,\n };\n }\n\n public async findOne(id: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { id },\n });\n }\n\n public async findOneBy(criteria: FindOptionsWhere<VerificationEntity>): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: criteria,\n });\n }\n\n public async findByToken(token: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { token, isUsed: false, expiresAt: MoreThan(new Date()) },\n });\n }\n\n public async findByCode(code: string): Promise<VerificationEntity | null> {\n const repository = await this.open();\n\n return await repository.findOne({\n where: { code, isUsed: false, expiresAt: MoreThan(new Date()) },\n });\n }\n\n public async create(entity: VerificationEntity, options?: SaveOptions): Promise<VerificationEntity> {\n const repository = await this.open();\n\n return await repository.save(entity, options);\n }\n\n public async createMany(entities: VerificationEntity[], options?: SaveOptions): Promise<VerificationEntity[]> {\n const repository = await this.open();\n\n return await repository.save(entities, options);\n }\n\n public async update(entity: VerificationEntity, options?: SaveOptions): Promise<VerificationEntity> {\n return await this.create(entity, options);\n }\n\n public async updateMany(entities: VerificationEntity[], options?: SaveOptions): Promise<VerificationEntity[]> {\n return await this.createMany(entities, options);\n }\n\n public async markAsUsed(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.update(id, {\n isUsed: true,\n usedAt: new Date(),\n });\n }\n\n public async incrementAttempts(id: string): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository\n .createQueryBuilder()\n .update(VerificationEntity)\n .set({ attemptsCount: () => \"attempts_count + 1\" })\n .where(\"id = :id\", { id })\n .execute();\n }\n\n public async delete(\n criteria: FindOptionsWhere<VerificationEntity> | FindOptionsWhere<VerificationEntity>[],\n ): Promise<UpdateResult> {\n const repository = await this.open();\n\n return await repository.softDelete(criteria);\n }\n\n public async count(\n criteria?: FindOptionsWhere<VerificationEntity> | FindOptionsWhere<VerificationEntity>[],\n ): Promise<number> {\n const repository = await this.open();\n\n return await repository.count(criteria ? { where: criteria } : {});\n }\n}\n"
10
15
  ],
11
- "mappings": "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",
12
- "debugId": "2650EAE646D1240964756E2164756E21",
16
+ "mappings": "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",
17
+ "debugId": "27DD32EC6F11CED664756E2164756E21",
13
18
  "names": []
14
19
  }