jp.db.schemas 2.2.10 → 2.2.12

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 (113) hide show
  1. package/dist/index.d.ts +8 -8
  2. package/dist/index.js +9 -9
  3. package/dist/repositories/index.d.ts +3 -3
  4. package/dist/repositories/index.js +5 -5
  5. package/dist/repositories/many-tables-tournament-rooms.repository.d.ts +21 -0
  6. package/dist/repositories/many-tables-tournament-rooms.repository.d.ts.map +1 -0
  7. package/dist/repositories/{tournament-many-tables-rooms.repository.js → many-tables-tournament-rooms.repository.js} +8 -8
  8. package/dist/repositories/many-tables-tournament-rooms.repository.js.map +1 -0
  9. package/dist/repositories/one-table-tournament-rooms.repository.d.ts +18 -0
  10. package/dist/repositories/{tournament-one-table-rooms.repository.d.ts.map → one-table-tournament-rooms.repository.d.ts.map} +1 -1
  11. package/dist/repositories/{tournament-one-table-rooms.repository.js → one-table-tournament-rooms.repository.js} +8 -8
  12. package/dist/repositories/{tournament-one-table-rooms.repository.js.map → one-table-tournament-rooms.repository.js.map} +1 -1
  13. package/dist/schemas/{tournament_many_tables_rooms.schema.d.ts → many_tables_tournament_rooms.schema.d.ts} +52 -52
  14. package/dist/schemas/{tournament_many_tables_rooms.schema.d.ts.map → many_tables_tournament_rooms.schema.d.ts.map} +1 -1
  15. package/dist/schemas/{tournament_many_tables_rooms.schema.js → many_tables_tournament_rooms.schema.js} +29 -29
  16. package/dist/schemas/{tournament_many_tables_rooms.schema.js.map → many_tables_tournament_rooms.schema.js.map} +1 -1
  17. package/dist/schemas/{tournament_one_table_rooms.schema.d.ts → one_table_tournament_rooms.schema.d.ts} +50 -50
  18. package/dist/schemas/{tournament_one_table_rooms.schema.d.ts.map → one_table_tournament_rooms.schema.d.ts.map} +1 -1
  19. package/dist/schemas/{tournament_one_table_rooms.schema.js → one_table_tournament_rooms.schema.js} +28 -28
  20. package/dist/schemas/{tournament_one_table_rooms.schema.js.map → one_table_tournament_rooms.schema.js.map} +1 -1
  21. package/dist/schemas/premium.schema.js.map +1 -1
  22. package/dist/schemas/product.schema.js.map +1 -1
  23. package/dist/schemas/rule.schema.js.map +1 -1
  24. package/dist/schemas/setting.schema.js.map +1 -1
  25. package/dist/schemas/settings_option.schema.js.map +1 -1
  26. package/dist/schemas/welcome.schema.js.map +1 -1
  27. package/package.json +37 -37
  28. package/readme.md +3 -3
  29. package/src/index.ts +294 -294
  30. package/src/models/account-type.enum.ts +8 -8
  31. package/src/models/activity-log-user-login.interface.ts +10 -10
  32. package/src/models/activity-log.enum.ts +8 -8
  33. package/src/models/currency.enum.ts +6 -6
  34. package/src/models/rating-add-bulk-item.interface.ts +7 -7
  35. package/src/models/rating-monthly-result.interface.ts +11 -11
  36. package/src/models/tournament-participant.interface.ts +5 -5
  37. package/src/models/tournament-status.enum.ts +6 -6
  38. package/src/models/tournament-template.enum.ts +3 -3
  39. package/src/models/tournament-winner.interface.ts +7 -7
  40. package/src/models/users-balance-reason.enum.ts +8 -8
  41. package/src/repositories/achievement.repository.ts +17 -17
  42. package/src/repositories/activity-log.repository.ts +209 -209
  43. package/src/repositories/admin.repository.ts +20 -20
  44. package/src/repositories/article.repository.ts +24 -24
  45. package/src/repositories/banners.repository.ts +60 -60
  46. package/src/repositories/complains.repository.ts +31 -31
  47. package/src/repositories/daily-bonus.repository.ts +32 -32
  48. package/src/repositories/friend.repository.ts +24 -24
  49. package/src/repositories/game-result.repository.ts +19 -19
  50. package/src/repositories/game-statistic.repository.ts +25 -25
  51. package/src/repositories/index.ts +61 -61
  52. package/src/repositories/{tournament-many-tables-rooms.repository.ts → many-tables-tournament-rooms.repository.ts} +167 -171
  53. package/src/repositories/menu.repository.ts +19 -19
  54. package/src/repositories/notification.repository.ts +59 -59
  55. package/src/repositories/{tournament-one-table-rooms.repository.ts → one-table-tournament-rooms.repository.ts} +142 -142
  56. package/src/repositories/premium.repository.ts +16 -16
  57. package/src/repositories/products.repository.ts +30 -30
  58. package/src/repositories/purchase.repository.ts +111 -111
  59. package/src/repositories/rating.repository.ts +90 -90
  60. package/src/repositories/rooms.repository.ts +14 -14
  61. package/src/repositories/rule.repository.ts +14 -14
  62. package/src/repositories/scheduled-tournaments.repository.ts +35 -35
  63. package/src/repositories/servers.repository.ts +16 -16
  64. package/src/repositories/setting.repository.ts +24 -24
  65. package/src/repositories/settings-options.repository.ts +17 -17
  66. package/src/repositories/simple-rooms.repository.ts +16 -16
  67. package/src/repositories/users-achievements.repository.ts +46 -46
  68. package/src/repositories/users-balances.repository.ts +65 -65
  69. package/src/repositories/users.repository.ts +153 -153
  70. package/src/repositories/welcome.repository.ts +16 -16
  71. package/src/schemas/achievement.schema.ts +40 -40
  72. package/src/schemas/activity_log.schema.ts +37 -37
  73. package/src/schemas/admin.schema.ts +22 -22
  74. package/src/schemas/article.schema.ts +37 -37
  75. package/src/schemas/banner.schema.ts +40 -40
  76. package/src/schemas/channel_message.schema.ts +32 -32
  77. package/src/schemas/complain.schema.ts +46 -46
  78. package/src/schemas/daily_bonus.schema.ts +49 -49
  79. package/src/schemas/feature.schema.ts +28 -28
  80. package/src/schemas/friend.schema.ts +49 -49
  81. package/src/schemas/game_result.schema.ts +68 -68
  82. package/src/schemas/game_statistic.schema.ts +40 -40
  83. package/src/schemas/{tournament_many_tables_rooms.schema.ts → many_tables_tournament_rooms.schema.ts} +87 -87
  84. package/src/schemas/menu.schema.ts +37 -37
  85. package/src/schemas/notification.schema.ts +61 -61
  86. package/src/schemas/{tournament_one_table_rooms.schema.ts → one_table_tournament_rooms.schema.ts} +84 -84
  87. package/src/schemas/premium.schema.ts +37 -37
  88. package/src/schemas/product.schema.ts +111 -111
  89. package/src/schemas/purchase.schema.ts +61 -61
  90. package/src/schemas/purchase_channel.schema.ts +32 -32
  91. package/src/schemas/rating.schema.ts +37 -37
  92. package/src/schemas/rooms.schema.ts +63 -63
  93. package/src/schemas/rule.schema.ts +37 -37
  94. package/src/schemas/scheduled_tournament.schema.ts +94 -94
  95. package/src/schemas/server.schema.ts +22 -22
  96. package/src/schemas/setting.schema.ts +49 -49
  97. package/src/schemas/settings_option.schema.ts +41 -41
  98. package/src/schemas/simple_rooms.schema.ts +49 -49
  99. package/src/schemas/user.fb.schema.ts +33 -33
  100. package/src/schemas/user.google.schema.ts +24 -24
  101. package/src/schemas/user.ok.schema.ts +53 -53
  102. package/src/schemas/user.schema.ts +160 -160
  103. package/src/schemas/user.tg.schema.ts +30 -30
  104. package/src/schemas/user.vk.schema.ts +70 -70
  105. package/src/schemas/user.ya.schema.ts +24 -24
  106. package/src/schemas/users_achievement.schema.ts +41 -41
  107. package/src/schemas/users_balance.schema.ts +34 -34
  108. package/src/schemas/welcome.schema.ts +37 -37
  109. package/src/utils.ts +3 -3
  110. package/dist/repositories/tournament-many-tables-rooms.repository.d.ts +0 -21
  111. package/dist/repositories/tournament-many-tables-rooms.repository.d.ts.map +0 -1
  112. package/dist/repositories/tournament-many-tables-rooms.repository.js.map +0 -1
  113. package/dist/repositories/tournament-one-table-rooms.repository.d.ts +0 -18
@@ -1,8 +1,8 @@
1
- export enum AccountTypeEnum {
2
- VK = 'VK',
3
- OK = 'OK',
4
- YA = 'YA',
5
- FB = 'FB',
6
- GOOGLE = 'GOOGLE',
7
- GUEST = 'GUEST',
8
- }
1
+ export enum AccountTypeEnum {
2
+ VK = 'VK',
3
+ OK = 'OK',
4
+ YA = 'YA',
5
+ FB = 'FB',
6
+ GOOGLE = 'GOOGLE',
7
+ GUEST = 'GUEST',
8
+ }
@@ -1,10 +1,10 @@
1
- export interface IActivityLogUserLogin {
2
- id: string;
3
- userId: string;
4
- userName: string;
5
- event: string;
6
- game: string;
7
- channel: string;
8
- count: number;
9
- date: string;
10
- }
1
+ export interface IActivityLogUserLogin {
2
+ id: string;
3
+ userId: string;
4
+ userName: string;
5
+ event: string;
6
+ game: string;
7
+ channel: string;
8
+ count: number;
9
+ date: string;
10
+ }
@@ -1,8 +1,8 @@
1
- export enum ActivityLogEnum {
2
- USER_LOGIN = 'USER_LOGIN',
3
- USER_GOT_BONUS = 'USER_GOT_BONUS',
4
- USER_PLAYED_GAME = 'USER_PLAYED_GAME',
5
- USER_WON_GAME = 'USER_WON_GAME',
6
- USER_WON_PROFI = 'USER_WON_PROFI',
7
- USER_WON_ONE_TABLE_TOURNAMENT = 'USER_WON_ONE_TABLE_TOURNAMENT',
8
- }
1
+ export enum ActivityLogEnum {
2
+ USER_LOGIN = 'USER_LOGIN',
3
+ USER_GOT_BONUS = 'USER_GOT_BONUS',
4
+ USER_PLAYED_GAME = 'USER_PLAYED_GAME',
5
+ USER_WON_GAME = 'USER_WON_GAME',
6
+ USER_WON_PROFI = 'USER_WON_PROFI',
7
+ USER_WON_ONE_TABLE_TOURNAMENT = 'USER_WON_ONE_TABLE_TOURNAMENT',
8
+ }
@@ -1,6 +1,6 @@
1
- export enum CurrencyEnum {
2
- VK_VOTES = 'VK_VOTES',
3
- YAN = 'YAN',
4
- RUB = 'RUB',
5
- JP = 'JP',
6
- }
1
+ export enum CurrencyEnum {
2
+ VK_VOTES = 'VK_VOTES',
3
+ YAN = 'YAN',
4
+ RUB = 'RUB',
5
+ JP = 'JP',
6
+ }
@@ -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
+ channels: string;
7
+ }
@@ -1,11 +1,11 @@
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
+ channels: string;
8
+ count: number;
9
+ date: string;
10
+ rank: number;
11
+ }
@@ -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,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
-
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
+
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,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
+ 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,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
+ }