jp.db.schemas 2.2.12 → 2.2.14

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 (235) hide show
  1. package/dist/index.d.ts +4 -8
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/models/experiences-level-edge.enum.d.ts +5 -0
  6. package/dist/models/experiences-level-edge.enum.d.ts.map +1 -0
  7. package/dist/models/experiences-level-edge.enum.js +9 -0
  8. package/dist/models/experiences-level-edge.enum.js.map +1 -0
  9. package/dist/models/experiences-level-rank.enum.d.ts +6 -0
  10. package/dist/models/experiences-level-rank.enum.d.ts.map +1 -0
  11. package/dist/models/experiences-level-rank.enum.js +10 -0
  12. package/dist/models/experiences-level-rank.enum.js.map +1 -0
  13. package/dist/models/rating-add-bulk-item.interface.d.ts +1 -1
  14. package/dist/models/rating-add-bulk-item.interface.d.ts.map +1 -1
  15. package/dist/models/rating-monthly-result.interface.d.ts +2 -1
  16. package/dist/models/rating-monthly-result.interface.d.ts.map +1 -1
  17. package/dist/repositories/achievement.repository.d.ts +1 -1
  18. package/dist/repositories/achievement.repository.d.ts.map +1 -1
  19. package/dist/repositories/achievement.repository.js +7 -2
  20. package/dist/repositories/achievement.repository.js.map +1 -1
  21. package/dist/repositories/activity-log.repository.d.ts +6 -6
  22. package/dist/repositories/activity-log.repository.d.ts.map +1 -1
  23. package/dist/repositories/activity-log.repository.js +13 -13
  24. package/dist/repositories/activity-log.repository.js.map +1 -1
  25. package/dist/repositories/banners.repository.d.ts +1 -1
  26. package/dist/repositories/banners.repository.d.ts.map +1 -1
  27. package/dist/repositories/banners.repository.js +9 -2
  28. package/dist/repositories/banners.repository.js.map +1 -1
  29. package/dist/repositories/daily-bonus.repository.d.ts +1 -1
  30. package/dist/repositories/daily-bonus.repository.d.ts.map +1 -1
  31. package/dist/repositories/daily-bonus.repository.js +3 -2
  32. package/dist/repositories/daily-bonus.repository.js.map +1 -1
  33. package/dist/repositories/friend.repository.d.ts +1 -1
  34. package/dist/repositories/friend.repository.d.ts.map +1 -1
  35. package/dist/repositories/friend.repository.js +2 -7
  36. package/dist/repositories/friend.repository.js.map +1 -1
  37. package/dist/repositories/game-statistic.repository.d.ts +1 -1
  38. package/dist/repositories/game-statistic.repository.d.ts.map +1 -1
  39. package/dist/repositories/game-statistic.repository.js +2 -2
  40. package/dist/repositories/game-statistic.repository.js.map +1 -1
  41. package/dist/repositories/index.d.ts +1 -3
  42. package/dist/repositories/index.d.ts.map +1 -1
  43. package/dist/repositories/index.js +1 -5
  44. package/dist/repositories/index.js.map +1 -1
  45. package/dist/repositories/menu.repository.d.ts +1 -1
  46. package/dist/repositories/menu.repository.d.ts.map +1 -1
  47. package/dist/repositories/menu.repository.js +3 -2
  48. package/dist/repositories/menu.repository.js.map +1 -1
  49. package/dist/repositories/premium.repository.d.ts +1 -1
  50. package/dist/repositories/premium.repository.d.ts.map +1 -1
  51. package/dist/repositories/premium.repository.js +8 -2
  52. package/dist/repositories/premium.repository.js.map +1 -1
  53. package/dist/repositories/products.repository.d.ts +1 -1
  54. package/dist/repositories/products.repository.d.ts.map +1 -1
  55. package/dist/repositories/products.repository.js +4 -3
  56. package/dist/repositories/products.repository.js.map +1 -1
  57. package/dist/repositories/rating.repository.d.ts +0 -1
  58. package/dist/repositories/rating.repository.d.ts.map +1 -1
  59. package/dist/repositories/rating.repository.js +3 -10
  60. package/dist/repositories/rating.repository.js.map +1 -1
  61. package/dist/repositories/rule.repository.d.ts +1 -1
  62. package/dist/repositories/rule.repository.d.ts.map +1 -1
  63. package/dist/repositories/rule.repository.js +8 -2
  64. package/dist/repositories/rule.repository.js.map +1 -1
  65. package/dist/repositories/setting.repository.d.ts +1 -1
  66. package/dist/repositories/setting.repository.d.ts.map +1 -1
  67. package/dist/repositories/setting.repository.js +3 -2
  68. package/dist/repositories/setting.repository.js.map +1 -1
  69. package/dist/repositories/settings-options.repository.js +1 -1
  70. package/dist/repositories/settings-options.repository.js.map +1 -1
  71. package/dist/repositories/welcome.repository.d.ts +1 -1
  72. package/dist/repositories/welcome.repository.d.ts.map +1 -1
  73. package/dist/repositories/welcome.repository.js +8 -2
  74. package/dist/repositories/welcome.repository.js.map +1 -1
  75. package/dist/schemas/achievement.schema.d.ts +4 -24
  76. package/dist/schemas/achievement.schema.d.ts.map +1 -1
  77. package/dist/schemas/achievement.schema.js +4 -12
  78. package/dist/schemas/achievement.schema.js.map +1 -1
  79. package/dist/schemas/activity_log.schema.d.ts +2 -2
  80. package/dist/schemas/activity_log.schema.d.ts.map +1 -1
  81. package/dist/schemas/activity_log.schema.js +1 -1
  82. package/dist/schemas/activity_log.schema.js.map +1 -1
  83. package/dist/schemas/banner.schema.d.ts +4 -14
  84. package/dist/schemas/banner.schema.d.ts.map +1 -1
  85. package/dist/schemas/banner.schema.js +4 -8
  86. package/dist/schemas/banner.schema.js.map +1 -1
  87. package/dist/schemas/daily_bonus.schema.d.ts +67 -19
  88. package/dist/schemas/daily_bonus.schema.d.ts.map +1 -1
  89. package/dist/schemas/daily_bonus.schema.js +0 -4
  90. package/dist/schemas/daily_bonus.schema.js.map +1 -1
  91. package/dist/schemas/feature.schema.d.ts +2 -2
  92. package/dist/schemas/feature.schema.d.ts.map +1 -1
  93. package/dist/schemas/feature.schema.js +1 -1
  94. package/dist/schemas/feature.schema.js.map +1 -1
  95. package/dist/schemas/friend.schema.d.ts +67 -19
  96. package/dist/schemas/friend.schema.d.ts.map +1 -1
  97. package/dist/schemas/friend.schema.js +0 -4
  98. package/dist/schemas/friend.schema.js.map +1 -1
  99. package/dist/schemas/game_statistic.schema.d.ts +2 -22
  100. package/dist/schemas/game_statistic.schema.d.ts.map +1 -1
  101. package/dist/schemas/game_statistic.schema.js +2 -10
  102. package/dist/schemas/game_statistic.schema.js.map +1 -1
  103. package/dist/schemas/notification.schema.d.ts +2 -2
  104. package/dist/schemas/notification.schema.d.ts.map +1 -1
  105. package/dist/schemas/notification.schema.js +1 -1
  106. package/dist/schemas/notification.schema.js.map +1 -1
  107. package/dist/schemas/premium.schema.d.ts +47 -15
  108. package/dist/schemas/premium.schema.d.ts.map +1 -1
  109. package/dist/schemas/premium.schema.js +0 -4
  110. package/dist/schemas/premium.schema.js.map +1 -1
  111. package/dist/schemas/product.schema.d.ts +2 -2
  112. package/dist/schemas/product.schema.d.ts.map +1 -1
  113. package/dist/schemas/product.schema.js +1 -1
  114. package/dist/schemas/product.schema.js.map +1 -1
  115. package/dist/schemas/rating.schema.d.ts +2 -2
  116. package/dist/schemas/rating.schema.d.ts.map +1 -1
  117. package/dist/schemas/rating.schema.js +1 -1
  118. package/dist/schemas/rating.schema.js.map +1 -1
  119. package/dist/schemas/rule.schema.d.ts +47 -15
  120. package/dist/schemas/rule.schema.d.ts.map +1 -1
  121. package/dist/schemas/rule.schema.js +0 -4
  122. package/dist/schemas/rule.schema.js.map +1 -1
  123. package/dist/schemas/user.schema.d.ts +20 -0
  124. package/dist/schemas/user.schema.d.ts.map +1 -1
  125. package/dist/schemas/user.schema.js +27 -0
  126. package/dist/schemas/user.schema.js.map +1 -1
  127. package/dist/schemas/welcome.schema.d.ts +53 -11
  128. package/dist/schemas/welcome.schema.d.ts.map +1 -1
  129. package/dist/schemas/welcome.schema.js +3 -3
  130. package/dist/schemas/welcome.schema.js.map +1 -1
  131. package/dist/utils.d.ts +1 -0
  132. package/dist/utils.d.ts.map +1 -1
  133. package/dist/utils.js +4 -0
  134. package/dist/utils.js.map +1 -1
  135. package/package.json +37 -37
  136. package/readme.md +3 -3
  137. package/src/index.ts +277 -294
  138. package/src/models/account-type.enum.ts +8 -8
  139. package/src/models/activity-log-user-login.interface.ts +10 -10
  140. package/src/models/activity-log.enum.ts +8 -8
  141. package/src/models/currency.enum.ts +6 -6
  142. package/src/models/experiences-level-edge.enum.ts +4 -0
  143. package/src/models/experiences-level-rank.enum.ts +5 -0
  144. package/src/models/rating-add-bulk-item.interface.ts +7 -7
  145. package/src/models/rating-monthly-result.interface.ts +12 -11
  146. package/src/models/tournament-participant.interface.ts +5 -5
  147. package/src/models/tournament-status.enum.ts +6 -6
  148. package/src/models/tournament-template.enum.ts +3 -3
  149. package/src/models/tournament-winner.interface.ts +7 -7
  150. package/src/models/users-balance-reason.enum.ts +8 -8
  151. package/src/repositories/achievement.repository.ts +22 -17
  152. package/src/repositories/activity-log.repository.ts +209 -209
  153. package/src/repositories/admin.repository.ts +20 -20
  154. package/src/repositories/article.repository.ts +24 -24
  155. package/src/repositories/banners.repository.ts +67 -60
  156. package/src/repositories/complains.repository.ts +31 -31
  157. package/src/repositories/daily-bonus.repository.ts +33 -32
  158. package/src/repositories/friend.repository.ts +16 -24
  159. package/src/repositories/game-result.repository.ts +19 -19
  160. package/src/repositories/game-statistic.repository.ts +22 -25
  161. package/src/repositories/index.ts +57 -61
  162. package/src/repositories/many-tables-tournament-rooms.repository.ts +167 -167
  163. package/src/repositories/menu.repository.ts +20 -19
  164. package/src/repositories/notification.repository.ts +59 -59
  165. package/src/repositories/one-table-tournament-rooms.repository.ts +142 -142
  166. package/src/repositories/premium.repository.ts +22 -16
  167. package/src/repositories/products.repository.ts +32 -30
  168. package/src/repositories/purchase.repository.ts +111 -111
  169. package/src/repositories/rating.repository.ts +79 -90
  170. package/src/repositories/rule.repository.ts +20 -14
  171. package/src/repositories/servers.repository.ts +16 -16
  172. package/src/repositories/setting.repository.ts +25 -24
  173. package/src/repositories/settings-options.repository.ts +17 -17
  174. package/src/repositories/simple-rooms.repository.ts +16 -16
  175. package/src/repositories/users-achievements.repository.ts +46 -46
  176. package/src/repositories/users-balances.repository.ts +65 -65
  177. package/src/repositories/users.repository.ts +153 -153
  178. package/src/repositories/welcome.repository.ts +22 -16
  179. package/src/schemas/achievement.schema.ts +34 -40
  180. package/src/schemas/activity_log.schema.ts +37 -37
  181. package/src/schemas/admin.schema.ts +22 -22
  182. package/src/schemas/article.schema.ts +37 -37
  183. package/src/schemas/banner.schema.ts +37 -40
  184. package/src/schemas/channel_message.schema.ts +32 -32
  185. package/src/schemas/complain.schema.ts +46 -46
  186. package/src/schemas/daily_bonus.schema.ts +46 -49
  187. package/src/schemas/feature.schema.ts +28 -28
  188. package/src/schemas/friend.schema.ts +46 -49
  189. package/src/schemas/game_result.schema.ts +68 -68
  190. package/src/schemas/game_statistic.schema.ts +34 -40
  191. package/src/schemas/many_tables_tournament_rooms.schema.ts +87 -87
  192. package/src/schemas/menu.schema.ts +37 -37
  193. package/src/schemas/notification.schema.ts +61 -61
  194. package/src/schemas/one_table_tournament_rooms.schema.ts +84 -84
  195. package/src/schemas/premium.schema.ts +34 -37
  196. package/src/schemas/product.schema.ts +111 -111
  197. package/src/schemas/purchase.schema.ts +61 -61
  198. package/src/schemas/purchase_channel.schema.ts +32 -32
  199. package/src/schemas/rating.schema.ts +37 -37
  200. package/src/schemas/rule.schema.ts +34 -37
  201. package/src/schemas/server.schema.ts +22 -22
  202. package/src/schemas/setting.schema.ts +49 -49
  203. package/src/schemas/settings_option.schema.ts +41 -41
  204. package/src/schemas/simple_rooms.schema.ts +49 -49
  205. package/src/schemas/user.fb.schema.ts +33 -33
  206. package/src/schemas/user.google.schema.ts +24 -24
  207. package/src/schemas/user.ok.schema.ts +53 -53
  208. package/src/schemas/user.schema.ts +185 -160
  209. package/src/schemas/user.tg.schema.ts +30 -30
  210. package/src/schemas/user.vk.schema.ts +70 -70
  211. package/src/schemas/user.ya.schema.ts +24 -24
  212. package/src/schemas/users_achievement.schema.ts +41 -41
  213. package/src/schemas/users_balance.schema.ts +34 -34
  214. package/src/schemas/welcome.schema.ts +37 -37
  215. package/src/utils.ts +7 -3
  216. package/dist/repositories/rooms.repository.d.ts +0 -8
  217. package/dist/repositories/rooms.repository.d.ts.map +0 -1
  218. package/dist/repositories/rooms.repository.js +0 -34
  219. package/dist/repositories/rooms.repository.js.map +0 -1
  220. package/dist/repositories/scheduled-tournaments.repository.d.ts +0 -11
  221. package/dist/repositories/scheduled-tournaments.repository.d.ts.map +0 -1
  222. package/dist/repositories/scheduled-tournaments.repository.js +0 -44
  223. package/dist/repositories/scheduled-tournaments.repository.js.map +0 -1
  224. package/dist/schemas/rooms.schema.d.ts +0 -179
  225. package/dist/schemas/rooms.schema.d.ts.map +0 -1
  226. package/dist/schemas/rooms.schema.js +0 -85
  227. package/dist/schemas/rooms.schema.js.map +0 -1
  228. package/dist/schemas/scheduled_tournament.schema.d.ts +0 -257
  229. package/dist/schemas/scheduled_tournament.schema.d.ts.map +0 -1
  230. package/dist/schemas/scheduled_tournament.schema.js +0 -113
  231. package/dist/schemas/scheduled_tournament.schema.js.map +0 -1
  232. package/src/repositories/rooms.repository.ts +0 -14
  233. package/src/repositories/scheduled-tournaments.repository.ts +0 -35
  234. package/src/schemas/rooms.schema.ts +0 -63
  235. package/src/schemas/scheduled_tournament.schema.ts +0 -94
@@ -1,7 +1,7 @@
1
- export interface IRatingAddBulkItem {
2
- userId: string;
3
- userName: string;
4
- userAvatarUrl: string;
5
- game: string;
6
- channels: string;
7
- }
1
+ export interface IRatingAddBulkItem {
2
+ userId: string;
3
+ userName: string;
4
+ userAvatarUrl: string;
5
+ game: string;
6
+ channel: string;
7
+ }
@@ -1,11 +1,12 @@
1
- export interface IRatingMonthlyResult {
2
- id: string;
3
- userId: string;
4
- userName: string;
5
- userAvatarUrl: string;
6
- game: string;
7
- channels: string;
8
- count: number;
9
- date: string;
10
- rank: number;
11
- }
1
+ export interface IRatingMonthlyResult {
2
+ id: string;
3
+ userId: string;
4
+ userName: string;
5
+ userAvatarUrl: string;
6
+ game: string;
7
+ channel: string;
8
+ count: number;
9
+ date: string;
10
+ rank: number;
11
+ profit: number;
12
+ }
@@ -1,5 +1,5 @@
1
- export interface ITournamentParticipant {
2
- playerId: string;
3
- playerName: string;
4
- playerAvatarUrl: string;
5
- }
1
+ export interface ITournamentParticipant {
2
+ playerId: string;
3
+ playerName: string;
4
+ playerAvatarUrl: string;
5
+ }
@@ -1,6 +1,6 @@
1
- export enum TournamentStatusEnum {
2
- STATE_WAITING_FOR_START = 'STATE_WAITING_FOR_START',
3
- STATE_IN_PROGRESS = 'STATE_IN_PROGRESS',
4
- STATE_FINISHED = 'STATE_FINISHED',
5
- STATE_CANCELLED = 'STATE_CANCELLED',
6
- }
1
+ export enum TournamentStatusEnum {
2
+ STATE_WAITING_FOR_START = 'STATE_WAITING_FOR_START',
3
+ STATE_IN_PROGRESS = 'STATE_IN_PROGRESS',
4
+ STATE_FINISHED = 'STATE_FINISHED',
5
+ STATE_CANCELLED = 'STATE_CANCELLED',
6
+ }
@@ -1,3 +1,3 @@
1
- export enum TournamentTemplateEnum {
2
- MASTER = 'MASTER',
3
- }
1
+ export enum TournamentTemplateEnum {
2
+ MASTER = 'MASTER',
3
+ }
@@ -1,7 +1,7 @@
1
- export interface ITournamentWinner {
2
- playerId: string;
3
- playerName: string;
4
- playerAvatarUrl: string;
5
- profit: number;
6
- rank: number;
7
- }
1
+ export interface ITournamentWinner {
2
+ playerId: string;
3
+ playerName: string;
4
+ playerAvatarUrl: string;
5
+ profit: number;
6
+ rank: number;
7
+ }
@@ -1,8 +1,8 @@
1
- export enum UsersBalanceReasonEnum {
2
- REGISTER = 'REGISTER',
3
- DAILY_BONUS = 'DAILY_BONUS',
4
- SHOP_PURCHASE = 'SHOP_PURCHASE',
5
- SIMPLE_ROOM_RESULT = 'SIMPLE_ROOM_RESULT',
6
- ONE_TABLE_TOURNAMENT_RESULT = 'ONE_TABLE_TOURNAMENT_RESULT',
7
- MANY_TABLES_TOURNAMENT_RESULT = 'MANY_TABLES_TOURNAMENT_RESULT',
8
- }
1
+ export enum UsersBalanceReasonEnum {
2
+ REGISTER = 'REGISTER',
3
+ DAILY_BONUS = 'DAILY_BONUS',
4
+ SHOP_PURCHASE = 'SHOP_PURCHASE',
5
+ SIMPLE_ROOM_RESULT = 'SIMPLE_ROOM_RESULT',
6
+ ONE_TABLE_TOURNAMENT_RESULT = 'ONE_TABLE_TOURNAMENT_RESULT',
7
+ MANY_TABLES_TOURNAMENT_RESULT = 'MANY_TABLES_TOURNAMENT_RESULT',
8
+ }
@@ -1,17 +1,22 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Achievement, AchievementDocument } from '..';
6
-
7
- @Injectable()
8
- export class AchievementRepository {
9
- constructor(
10
- @InjectModel(Achievement.name)
11
- private menuModel: Model<AchievementDocument>,
12
- ) {}
13
-
14
- async findAchievements(): Promise<Array<Achievement>> {
15
- return this.menuModel.find().exec();
16
- }
17
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Achievement, AchievementDocument } from '..';
6
+ import { getGameRegExpFilter } from '../utils';
7
+
8
+ @Injectable()
9
+ export class AchievementRepository {
10
+ constructor(
11
+ @InjectModel(Achievement.name)
12
+ private menuModel: Model<AchievementDocument>,
13
+ ) {}
14
+
15
+ async findAchievements(game: string): Promise<Array<Achievement>> {
16
+ return this.menuModel
17
+ .find({
18
+ game: getGameRegExpFilter(game),
19
+ })
20
+ .exec();
21
+ }
22
+ }
@@ -1,209 +1,209 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
- import dayjs from 'dayjs';
5
-
6
- import { ActivityLog, ActivityLogDocument } from '..';
7
- import { ActivityLogEnum } from '../models/activity-log.enum';
8
- import { IActivityLogUserLogin } from '../models/activity-log-user-login.interface';
9
-
10
- @Injectable()
11
- export class ActivityLogRepository {
12
- constructor(
13
- @InjectModel(ActivityLog.name)
14
- private activityLogModel: Model<ActivityLogDocument>,
15
- ) {}
16
-
17
- async findLast7DaysLogins(
18
- game: string,
19
- userId: string,
20
- ): Promise<Array<IActivityLogUserLogin>> {
21
- const weekAgo = dayjs().startOf('day').add(-1, 'week');
22
-
23
- return this.activityLogModel.aggregate([
24
- {
25
- $match: {
26
- game,
27
- userId,
28
- date: { $gte: weekAgo.toDate() },
29
- event: ActivityLogEnum.USER_LOGIN,
30
- },
31
- },
32
- {
33
- $group: {
34
- _id: { $dateToString: { format: '%Y-%m-%d', date: '$date' } },
35
- userId: { $first: '$userId' },
36
- userName: { $first: '$userName' },
37
- event: { $first: '$event' },
38
- game: { $first: '$game' },
39
- channels: { $first: '$channels' },
40
- count: { $sum: 1 },
41
- },
42
- },
43
- {
44
- $project: {
45
- _id: 0,
46
- id: '$_id',
47
- userId: 1,
48
- userName: 1,
49
- event: 1,
50
- game: 1,
51
- channel: 1,
52
- count: 1,
53
- date: '$_id',
54
- },
55
- },
56
- {
57
- $sort: { date: -1 },
58
- },
59
- ]);
60
- }
61
-
62
- async userIsNewbie(userId: string): Promise<boolean> {
63
- return (
64
- (await this.activityLogModel
65
- .countDocuments({ userId, event: ActivityLogEnum.USER_LOGIN })
66
- .exec()) === 1
67
- );
68
- }
69
-
70
- async getUserPlayedGamesCount(userId: string): Promise<number> {
71
- return await this.activityLogModel
72
- .countDocuments({ userId, event: ActivityLogEnum.USER_PLAYED_GAME })
73
- .exec();
74
- }
75
-
76
- async getUserWonGamesCount(userId: string): Promise<number> {
77
- return await this.activityLogModel
78
- .countDocuments({ userId, event: ActivityLogEnum.USER_WON_GAME })
79
- .exec();
80
- }
81
-
82
- async getUserWonProfiCount(userId: string): Promise<number> {
83
- return await this.activityLogModel
84
- .countDocuments({ userId, event: ActivityLogEnum.USER_WON_PROFI })
85
- .exec();
86
- }
87
-
88
- async getUserWonOneTableTournamentCount(userId: string): Promise<number> {
89
- return await this.activityLogModel
90
- .countDocuments({
91
- userId,
92
- event: ActivityLogEnum.USER_WON_ONE_TABLE_TOURNAMENT,
93
- })
94
- .exec();
95
- }
96
-
97
- async getUserTodayBonus(userId: string): Promise<number> {
98
- const log = await this.activityLogModel
99
- .findOne({
100
- userId,
101
- event: ActivityLogEnum.USER_GOT_BONUS,
102
- date: {
103
- $gte: dayjs().startOf('day').toDate(),
104
- $lte: dayjs().endOf('day').toDate(),
105
- },
106
- })
107
- .exec();
108
-
109
- return log?.amount ?? 0;
110
- }
111
-
112
- async addUserLoginEvent(
113
- userId: string,
114
- userName: string,
115
- game: string,
116
- channels: string,
117
- ): Promise<ActivityLog> {
118
- return this.addActivityLog({
119
- event: ActivityLogEnum.USER_LOGIN,
120
- userId,
121
- userName,
122
- game,
123
- channels,
124
- });
125
- }
126
-
127
- async addUserGotBonuseEvent(
128
- userId: string,
129
- userName: string,
130
- game: string,
131
- channels: string,
132
- amount: number,
133
- ): Promise<ActivityLog> {
134
- return this.addActivityLog({
135
- event: ActivityLogEnum.USER_GOT_BONUS,
136
- userId,
137
- userName,
138
- game,
139
- channels,
140
- amount,
141
- });
142
- }
143
-
144
- async addUserPlayedGameEvent(
145
- userId: string,
146
- userName: string,
147
- game: string,
148
- channels: string,
149
- ): Promise<ActivityLog> {
150
- return this.addActivityLog({
151
- event: ActivityLogEnum.USER_PLAYED_GAME,
152
- userId,
153
- userName,
154
- game,
155
- channels,
156
- });
157
- }
158
-
159
- async addUserWonGameEvent(
160
- userId: string,
161
- userName: string,
162
- game: string,
163
- channels: string,
164
- ): Promise<ActivityLog> {
165
- return this.addActivityLog({
166
- event: ActivityLogEnum.USER_WON_GAME,
167
- userId,
168
- userName,
169
- game,
170
- channels,
171
- });
172
- }
173
-
174
- async addUserWonProfieEvent(
175
- userId: string,
176
- userName: string,
177
- game: string,
178
- channels: string,
179
- ): Promise<ActivityLog> {
180
- return this.addActivityLog({
181
- event: ActivityLogEnum.USER_WON_PROFI,
182
- userId,
183
- userName,
184
- game,
185
- channels,
186
- });
187
- }
188
-
189
- async addUserWonOneTableTournamentEvent(
190
- userId: string,
191
- userName: string,
192
- game: string,
193
- channels: string,
194
- ): Promise<ActivityLog> {
195
- return this.addActivityLog({
196
- event: ActivityLogEnum.USER_WON_ONE_TABLE_TOURNAMENT,
197
- userId,
198
- userName,
199
- game,
200
- channels,
201
- });
202
- }
203
-
204
- async addActivityLog(
205
- activityLog: Partial<ActivityLog>,
206
- ): Promise<ActivityLog> {
207
- return this.activityLogModel.create(activityLog);
208
- }
209
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+ import dayjs from 'dayjs';
5
+
6
+ import { ActivityLog, ActivityLogDocument } from '..';
7
+ import { ActivityLogEnum } from '../models/activity-log.enum';
8
+ import { IActivityLogUserLogin } from '../models/activity-log-user-login.interface';
9
+
10
+ @Injectable()
11
+ export class ActivityLogRepository {
12
+ constructor(
13
+ @InjectModel(ActivityLog.name)
14
+ private activityLogModel: Model<ActivityLogDocument>,
15
+ ) {}
16
+
17
+ async findLast7DaysLogins(
18
+ game: string,
19
+ userId: string,
20
+ ): Promise<Array<IActivityLogUserLogin>> {
21
+ const weekAgo = dayjs().startOf('day').add(-1, 'week');
22
+
23
+ return this.activityLogModel.aggregate([
24
+ {
25
+ $match: {
26
+ game,
27
+ userId,
28
+ date: { $gte: weekAgo.toDate() },
29
+ event: ActivityLogEnum.USER_LOGIN,
30
+ },
31
+ },
32
+ {
33
+ $group: {
34
+ _id: { $dateToString: { format: '%Y-%m-%d', date: '$date' } },
35
+ userId: { $first: '$userId' },
36
+ userName: { $first: '$userName' },
37
+ event: { $first: '$event' },
38
+ game: { $first: '$game' },
39
+ channel: { $first: '$channel' },
40
+ count: { $sum: 1 },
41
+ },
42
+ },
43
+ {
44
+ $project: {
45
+ _id: 0,
46
+ id: '$_id',
47
+ userId: 1,
48
+ userName: 1,
49
+ event: 1,
50
+ game: 1,
51
+ channel: 1,
52
+ count: 1,
53
+ date: '$_id',
54
+ },
55
+ },
56
+ {
57
+ $sort: { date: -1 },
58
+ },
59
+ ]);
60
+ }
61
+
62
+ async userIsNewbie(userId: string): Promise<boolean> {
63
+ return (
64
+ (await this.activityLogModel
65
+ .countDocuments({ userId, event: ActivityLogEnum.USER_LOGIN })
66
+ .exec()) === 1
67
+ );
68
+ }
69
+
70
+ async getUserPlayedGamesCount(userId: string): Promise<number> {
71
+ return await this.activityLogModel
72
+ .countDocuments({ userId, event: ActivityLogEnum.USER_PLAYED_GAME })
73
+ .exec();
74
+ }
75
+
76
+ async getUserWonGamesCount(userId: string): Promise<number> {
77
+ return await this.activityLogModel
78
+ .countDocuments({ userId, event: ActivityLogEnum.USER_WON_GAME })
79
+ .exec();
80
+ }
81
+
82
+ async getUserWonProfiCount(userId: string): Promise<number> {
83
+ return await this.activityLogModel
84
+ .countDocuments({ userId, event: ActivityLogEnum.USER_WON_PROFI })
85
+ .exec();
86
+ }
87
+
88
+ async getUserWonOneTableTournamentCount(userId: string): Promise<number> {
89
+ return await this.activityLogModel
90
+ .countDocuments({
91
+ userId,
92
+ event: ActivityLogEnum.USER_WON_ONE_TABLE_TOURNAMENT,
93
+ })
94
+ .exec();
95
+ }
96
+
97
+ async getUserTodayBonus(userId: string): Promise<number> {
98
+ const log = await this.activityLogModel
99
+ .findOne({
100
+ userId,
101
+ event: ActivityLogEnum.USER_GOT_BONUS,
102
+ date: {
103
+ $gte: dayjs().startOf('day').toDate(),
104
+ $lte: dayjs().endOf('day').toDate(),
105
+ },
106
+ })
107
+ .exec();
108
+
109
+ return log?.amount ?? 0;
110
+ }
111
+
112
+ async addUserLoginEvent(
113
+ userId: string,
114
+ userName: string,
115
+ game: string,
116
+ channel: string,
117
+ ): Promise<ActivityLog> {
118
+ return this.addActivityLog({
119
+ event: ActivityLogEnum.USER_LOGIN,
120
+ userId,
121
+ userName,
122
+ game,
123
+ channel,
124
+ });
125
+ }
126
+
127
+ async addUserGotBonuseEvent(
128
+ userId: string,
129
+ userName: string,
130
+ game: string,
131
+ channel: string,
132
+ amount: number,
133
+ ): Promise<ActivityLog> {
134
+ return this.addActivityLog({
135
+ event: ActivityLogEnum.USER_GOT_BONUS,
136
+ userId,
137
+ userName,
138
+ game,
139
+ channel,
140
+ amount,
141
+ });
142
+ }
143
+
144
+ async addUserPlayedGameEvent(
145
+ userId: string,
146
+ userName: string,
147
+ game: string,
148
+ channel: string,
149
+ ): Promise<ActivityLog> {
150
+ return this.addActivityLog({
151
+ event: ActivityLogEnum.USER_PLAYED_GAME,
152
+ userId,
153
+ userName,
154
+ game,
155
+ channel,
156
+ });
157
+ }
158
+
159
+ async addUserWonGameEvent(
160
+ userId: string,
161
+ userName: string,
162
+ game: string,
163
+ channel: string,
164
+ ): Promise<ActivityLog> {
165
+ return this.addActivityLog({
166
+ event: ActivityLogEnum.USER_WON_GAME,
167
+ userId,
168
+ userName,
169
+ game,
170
+ channel,
171
+ });
172
+ }
173
+
174
+ async addUserWonProfieEvent(
175
+ userId: string,
176
+ userName: string,
177
+ game: string,
178
+ channel: string,
179
+ ): Promise<ActivityLog> {
180
+ return this.addActivityLog({
181
+ event: ActivityLogEnum.USER_WON_PROFI,
182
+ userId,
183
+ userName,
184
+ game,
185
+ channel,
186
+ });
187
+ }
188
+
189
+ async addUserWonOneTableTournamentEvent(
190
+ userId: string,
191
+ userName: string,
192
+ game: string,
193
+ channel: string,
194
+ ): Promise<ActivityLog> {
195
+ return this.addActivityLog({
196
+ event: ActivityLogEnum.USER_WON_ONE_TABLE_TOURNAMENT,
197
+ userId,
198
+ userName,
199
+ game,
200
+ channel,
201
+ });
202
+ }
203
+
204
+ async addActivityLog(
205
+ activityLog: Partial<ActivityLog>,
206
+ ): Promise<ActivityLog> {
207
+ return this.activityLogModel.create(activityLog);
208
+ }
209
+ }
@@ -1,20 +1,20 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Admin, AdminDocument } from '../';
6
-
7
- @Injectable()
8
- export class AdminRepository {
9
- constructor(
10
- @InjectModel(Admin.name) private adminModel: Model<AdminDocument>,
11
- ) {}
12
-
13
- async findById(id: string): Promise<Admin | null> {
14
- return this.adminModel.findOne({ _id: id }).exec();
15
- }
16
-
17
- async findByLogin(login: string): Promise<Admin | null> {
18
- return this.adminModel.findOne({ login }).exec();
19
- }
20
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Admin, AdminDocument } from '../';
6
+
7
+ @Injectable()
8
+ export class AdminRepository {
9
+ constructor(
10
+ @InjectModel(Admin.name) private adminModel: Model<AdminDocument>,
11
+ ) {}
12
+
13
+ async findById(id: string): Promise<Admin | null> {
14
+ return this.adminModel.findOne({ _id: id }).exec();
15
+ }
16
+
17
+ async findByLogin(login: string): Promise<Admin | null> {
18
+ return this.adminModel.findOne({ login }).exec();
19
+ }
20
+ }
@@ -1,24 +1,24 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Article, ArticleDocument } from '../';
6
-
7
- @Injectable()
8
- export class ArticleRepository {
9
- constructor(
10
- @InjectModel(Article.name) private articleModel: Model<ArticleDocument>,
11
- ) {}
12
-
13
- async findAllArticles(): Promise<Array<Article>> {
14
- return this.articleModel.find().sort({ createDate: -1 }).exec();
15
- }
16
-
17
- async findLastArticle(): Promise<Article | null> {
18
- return await this.articleModel.findOne().sort({ createDate: -1 }).exec();
19
- }
20
-
21
- async findTop3Articles(): Promise<Array<Article>> {
22
- return this.articleModel.find().sort({ createDate: -1 }).limit(3).exec();
23
- }
24
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Article, ArticleDocument } from '../';
6
+
7
+ @Injectable()
8
+ export class ArticleRepository {
9
+ constructor(
10
+ @InjectModel(Article.name) private articleModel: Model<ArticleDocument>,
11
+ ) {}
12
+
13
+ async findAllArticles(): Promise<Array<Article>> {
14
+ return this.articleModel.find().sort({ createDate: -1 }).exec();
15
+ }
16
+
17
+ async findLastArticle(): Promise<Article | null> {
18
+ return await this.articleModel.findOne().sort({ createDate: -1 }).exec();
19
+ }
20
+
21
+ async findTop3Articles(): Promise<Array<Article>> {
22
+ return this.articleModel.find().sort({ createDate: -1 }).limit(3).exec();
23
+ }
24
+ }