jp.db.schemas 2.1.13 → 2.1.15

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 (96) hide show
  1. package/dist/models/activity-log-user-login.interface copy.d.ts +11 -0
  2. package/dist/models/activity-log-user-login.interface copy.d.ts.map +1 -0
  3. package/dist/models/activity-log-user-login.interface copy.js +3 -0
  4. package/dist/models/activity-log-user-login.interface copy.js.map +1 -0
  5. package/dist/repositories/premium.repository.d.ts +1 -1
  6. package/dist/repositories/premium.repository.d.ts.map +1 -1
  7. package/dist/repositories/premium.repository.js +2 -5
  8. package/dist/repositories/premium.repository.js.map +1 -1
  9. package/dist/repositories/purchase.repository.d.ts +1 -1
  10. package/dist/repositories/purchase.repository.js +1 -1
  11. package/dist/repositories/rule.repository.d.ts +1 -1
  12. package/dist/repositories/rule.repository.d.ts.map +1 -1
  13. package/dist/repositories/rule.repository.js +2 -5
  14. package/dist/repositories/rule.repository.js.map +1 -1
  15. package/dist/repositories/welcome.repository.d.ts +1 -1
  16. package/dist/repositories/welcome.repository.d.ts.map +1 -1
  17. package/dist/repositories/welcome.repository.js +2 -5
  18. package/dist/repositories/welcome.repository.js.map +1 -1
  19. package/package.json +31 -31
  20. package/readme.md +3 -3
  21. package/src/index.ts +251 -251
  22. package/src/models/activity-log-user-login.interface copy.ts +10 -0
  23. package/src/models/activity-log-user-login.interface.ts +9 -9
  24. package/src/models/activity-log.enum.ts +7 -7
  25. package/src/models/currency.enum.ts +4 -4
  26. package/src/models/rating-add-bulk-item.interface.ts +6 -6
  27. package/src/models/rating-monthly-result.interface.ts +10 -10
  28. package/src/models/tournament-participant.interface.ts +5 -5
  29. package/src/models/tournament-status.enum.ts +6 -6
  30. package/src/models/tournament-template.enum.ts +3 -3
  31. package/src/models/tournament-winner.interface.ts +7 -7
  32. package/src/repositories/achievement.repository.ts +18 -18
  33. package/src/repositories/activity-log.repository.ts +110 -110
  34. package/src/repositories/admin.repository.ts +23 -23
  35. package/src/repositories/article.repository.ts +33 -33
  36. package/src/repositories/balance-history.repository.ts +15 -15
  37. package/src/repositories/banners.repository.ts +54 -54
  38. package/src/repositories/complains.repository.ts +30 -30
  39. package/src/repositories/daily-bonus.repository.ts +25 -25
  40. package/src/repositories/friend.repository.ts +19 -19
  41. package/src/repositories/game-result.repository.ts +15 -15
  42. package/src/repositories/game-statistic.repository.ts +21 -21
  43. package/src/repositories/index.ts +57 -57
  44. package/src/repositories/menu.repository.ts +21 -21
  45. package/src/repositories/notification.repository.ts +54 -54
  46. package/src/repositories/premium.repository.ts +17 -19
  47. package/src/repositories/products.repository.ts +29 -29
  48. package/src/repositories/purchase.repository.ts +95 -95
  49. package/src/repositories/rating.repository.ts +83 -83
  50. package/src/repositories/rooms.repository.ts +17 -17
  51. package/src/repositories/rule.repository.ts +17 -19
  52. package/src/repositories/scheduled-tournaments.repository.ts +30 -30
  53. package/src/repositories/servers.repository.ts +18 -18
  54. package/src/repositories/setting.repository.ts +19 -19
  55. package/src/repositories/simple-rooms.repository.ts +17 -17
  56. package/src/repositories/tournament-many-tables-rooms.repository.ts +132 -132
  57. package/src/repositories/tournament-one-table-rooms.repository.ts +106 -106
  58. package/src/repositories/users.repository.ts +151 -151
  59. package/src/repositories/welcome.repository.ts +17 -19
  60. package/src/schemas/achievement.schema.ts +40 -40
  61. package/src/schemas/activity_log.schema.ts +37 -37
  62. package/src/schemas/admin.schema.ts +22 -22
  63. package/src/schemas/article.schema.ts +37 -37
  64. package/src/schemas/balance_history.schema.ts +37 -37
  65. package/src/schemas/banner.schema.ts +40 -40
  66. package/src/schemas/channel_message.schema.ts +31 -31
  67. package/src/schemas/complain.schema.ts +46 -46
  68. package/src/schemas/daily_bonus.schema.ts +56 -56
  69. package/src/schemas/feature.schema.ts +28 -28
  70. package/src/schemas/friend.schema.ts +50 -50
  71. package/src/schemas/game_result.schema.ts +68 -68
  72. package/src/schemas/game_statistic.schema.ts +40 -40
  73. package/src/schemas/menu.schema.ts +40 -40
  74. package/src/schemas/notification.schema.ts +61 -61
  75. package/src/schemas/premium.schema.ts +45 -45
  76. package/src/schemas/product.schema.ts +123 -123
  77. package/src/schemas/purchase.schema.ts +58 -58
  78. package/src/schemas/purchase_channel.schema.ts +31 -31
  79. package/src/schemas/rating.schema.ts +37 -37
  80. package/src/schemas/rooms.schema.ts +63 -63
  81. package/src/schemas/rule.schema.ts +45 -45
  82. package/src/schemas/scheduled_tournament.schema.ts +93 -93
  83. package/src/schemas/server.schema.ts +22 -22
  84. package/src/schemas/setting.schema.ts +55 -55
  85. package/src/schemas/simple_rooms.schema.ts +46 -46
  86. package/src/schemas/tournament_many_tables_rooms.schema.ts +84 -84
  87. package/src/schemas/tournament_one_table_rooms.schema.ts +81 -81
  88. package/src/schemas/user.fb.schema.ts +33 -33
  89. package/src/schemas/user.google.schema.ts +24 -24
  90. package/src/schemas/user.ok.schema.ts +52 -52
  91. package/src/schemas/user.schema.ts +182 -182
  92. package/src/schemas/user.tg.schema.ts +30 -30
  93. package/src/schemas/user.vk.schema.ts +70 -70
  94. package/src/schemas/user.ya.schema.ts +24 -24
  95. package/src/schemas/welcome.schema.ts +45 -45
  96. package/src/utils.ts +3 -3
@@ -1,15 +1,15 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { GameResult, GameResultDocument } from '../';
6
-
7
- @Injectable()
8
- export class GameResultRepository {
9
- constructor (@InjectModel(GameResult.name) private gameResultModel: Model<GameResultDocument>) {
10
- }
11
-
12
- public async createGameResult (gameResult: Partial<GameResult>): Promise<GameResult> {
13
- return this.gameResultModel.create(gameResult);
14
- }
15
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { GameResult, GameResultDocument } from '../';
6
+
7
+ @Injectable()
8
+ export class GameResultRepository {
9
+ constructor (@InjectModel(GameResult.name) private gameResultModel: Model<GameResultDocument>) {
10
+ }
11
+
12
+ public async createGameResult (gameResult: Partial<GameResult>): Promise<GameResult> {
13
+ return this.gameResultModel.create(gameResult);
14
+ }
15
+ }
@@ -1,21 +1,21 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { GameStatistic, GameStatisticDocument } from '..';
6
- import { getChannelRegExpFilter } from '../utils';
7
-
8
- @Injectable()
9
- export class GameStatisticRepository {
10
- constructor (@InjectModel(GameStatistic.name) private gameStatisticModel: Model<GameStatisticDocument>) {
11
- }
12
-
13
- async findGameStatistic (channel: string, game: string): Promise<Array<GameStatistic> | null> {
14
- return this.gameStatisticModel
15
- .find({
16
- channels: getChannelRegExpFilter(channel),
17
- })
18
- .exec();
19
- }
20
- }
21
-
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { GameStatistic, GameStatisticDocument } from '..';
6
+ import { getChannelRegExpFilter } from '../utils';
7
+
8
+ @Injectable()
9
+ export class GameStatisticRepository {
10
+ constructor (@InjectModel(GameStatistic.name) private gameStatisticModel: Model<GameStatisticDocument>) {
11
+ }
12
+
13
+ async findGameStatistic (channel: string, game: string): Promise<Array<GameStatistic> | null> {
14
+ return this.gameStatisticModel
15
+ .find({
16
+ channels: getChannelRegExpFilter(channel),
17
+ })
18
+ .exec();
19
+ }
20
+ }
21
+
@@ -1,57 +1,57 @@
1
- import { AdminRepository } from './admin.repository';
2
- import { ArticleRepository } from './article.repository';
3
- import { BannersRepository } from './banners.repository';
4
- import { ComplainsRepository } from './complains.repository';
5
- import { NotificationRepository } from './notification.repository';
6
- import { ProductsRepository } from './products.repository';
7
- import { ScheduledTournamentsRepository } from './scheduled-tournaments.repository';
8
- import { ServersRepository } from './servers.repository';
9
- import { UsersRepository } from './users.repository';
10
- import { MenuRepository } from './menu.repository';
11
- import { RuleRepository } from './rule.repository';
12
- import { RatingRepository } from './rating.repository';
13
- import { GameStatisticRepository } from './game-statistic.repository';
14
- import { FriendRepository } from './friend.repository';
15
- import { SettingRepository } from './setting.repository';
16
- import { PremiumRepository } from './premium.repository';
17
- import { WelcomeRepository } from './welcome.repository';
18
- import { DailyBonusRepository } from './daily-bonus.repository';
19
- import { RoomsRepository } from './rooms.repository';
20
- import { GameResultRepository } from './game-result.repository';
21
- import { BalanceHistoryRepository } from './balance-history.repository';
22
- import { SimpleRoomsRepository } from './simple-rooms.repository';
23
- import { TournamentOneTableRoomsRepository } from './tournament-one-table-rooms.repository';
24
- import { TournamentManyTablesRoomsRepository } from './tournament-many-tables-rooms.repository';
25
- import { ActivityLogRepository } from './activity-log.repository';
26
- import { AchievementRepository } from './achievement.repository';
27
- import { PurchaseRepository } from './purchase.repository';
28
-
29
- export {
30
- AdminRepository,
31
- ArticleRepository,
32
- BannersRepository,
33
- ComplainsRepository,
34
- NotificationRepository,
35
- ProductsRepository,
36
- ScheduledTournamentsRepository,
37
- ServersRepository,
38
- UsersRepository,
39
- MenuRepository,
40
- RatingRepository,
41
- GameStatisticRepository,
42
- RuleRepository,
43
- FriendRepository,
44
- SettingRepository,
45
- PremiumRepository,
46
- WelcomeRepository,
47
- DailyBonusRepository,
48
- RoomsRepository,
49
- GameResultRepository,
50
- BalanceHistoryRepository,
51
- SimpleRoomsRepository,
52
- TournamentOneTableRoomsRepository,
53
- TournamentManyTablesRoomsRepository,
54
- ActivityLogRepository,
55
- AchievementRepository,
56
- PurchaseRepository,
57
- }
1
+ import { AdminRepository } from './admin.repository';
2
+ import { ArticleRepository } from './article.repository';
3
+ import { BannersRepository } from './banners.repository';
4
+ import { ComplainsRepository } from './complains.repository';
5
+ import { NotificationRepository } from './notification.repository';
6
+ import { ProductsRepository } from './products.repository';
7
+ import { ScheduledTournamentsRepository } from './scheduled-tournaments.repository';
8
+ import { ServersRepository } from './servers.repository';
9
+ import { UsersRepository } from './users.repository';
10
+ import { MenuRepository } from './menu.repository';
11
+ import { RuleRepository } from './rule.repository';
12
+ import { RatingRepository } from './rating.repository';
13
+ import { GameStatisticRepository } from './game-statistic.repository';
14
+ import { FriendRepository } from './friend.repository';
15
+ import { SettingRepository } from './setting.repository';
16
+ import { PremiumRepository } from './premium.repository';
17
+ import { WelcomeRepository } from './welcome.repository';
18
+ import { DailyBonusRepository } from './daily-bonus.repository';
19
+ import { RoomsRepository } from './rooms.repository';
20
+ import { GameResultRepository } from './game-result.repository';
21
+ import { BalanceHistoryRepository } from './balance-history.repository';
22
+ import { SimpleRoomsRepository } from './simple-rooms.repository';
23
+ import { TournamentOneTableRoomsRepository } from './tournament-one-table-rooms.repository';
24
+ import { TournamentManyTablesRoomsRepository } from './tournament-many-tables-rooms.repository';
25
+ import { ActivityLogRepository } from './activity-log.repository';
26
+ import { AchievementRepository } from './achievement.repository';
27
+ import { PurchaseRepository } from './purchase.repository';
28
+
29
+ export {
30
+ AdminRepository,
31
+ ArticleRepository,
32
+ BannersRepository,
33
+ ComplainsRepository,
34
+ NotificationRepository,
35
+ ProductsRepository,
36
+ ScheduledTournamentsRepository,
37
+ ServersRepository,
38
+ UsersRepository,
39
+ MenuRepository,
40
+ RatingRepository,
41
+ GameStatisticRepository,
42
+ RuleRepository,
43
+ FriendRepository,
44
+ SettingRepository,
45
+ PremiumRepository,
46
+ WelcomeRepository,
47
+ DailyBonusRepository,
48
+ RoomsRepository,
49
+ GameResultRepository,
50
+ BalanceHistoryRepository,
51
+ SimpleRoomsRepository,
52
+ TournamentOneTableRoomsRepository,
53
+ TournamentManyTablesRoomsRepository,
54
+ ActivityLogRepository,
55
+ AchievementRepository,
56
+ PurchaseRepository,
57
+ }
@@ -1,21 +1,21 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Menu, MenuDocument } from '../';
6
- import { getChannelRegExpFilter } from '../utils';
7
-
8
- @Injectable()
9
- export class MenuRepository {
10
- constructor (@InjectModel(Menu.name) private menuModel: Model<MenuDocument>) {
11
- }
12
-
13
- async findMenus (channel: string, game: string): Promise<Array<Menu> | null> {
14
- return this.menuModel
15
- .find({
16
- channels: getChannelRegExpFilter(channel),
17
- })
18
- .exec();
19
- }
20
- }
21
-
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Menu, MenuDocument } from '../';
6
+ import { getChannelRegExpFilter } from '../utils';
7
+
8
+ @Injectable()
9
+ export class MenuRepository {
10
+ constructor (@InjectModel(Menu.name) private menuModel: Model<MenuDocument>) {
11
+ }
12
+
13
+ async findMenus (channel: string, game: string): Promise<Array<Menu> | null> {
14
+ return this.menuModel
15
+ .find({
16
+ channels: getChannelRegExpFilter(channel),
17
+ })
18
+ .exec();
19
+ }
20
+ }
21
+
@@ -1,54 +1,54 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Notification, NotificationDocument } from '../';
6
-
7
- @Injectable()
8
- export class NotificationRepository {
9
- constructor (@InjectModel(Notification.name) private notificationModel: Model<NotificationDocument>) {
10
- }
11
-
12
- async findById (id: string): Promise<Notification | null> {
13
- return this.notificationModel
14
- .findById(id)
15
- .exec();
16
- }
17
-
18
- async findAndCount (limit: number, skip: number): Promise<{
19
- items: Array<Notification>,
20
- total: number
21
- }> {
22
- const items = await this.notificationModel
23
- .find()
24
- .sort({ createDate: -1 })
25
- .limit(limit)
26
- .skip(skip)
27
- .exec();
28
-
29
- const total = await this.notificationModel
30
- .find()
31
- .countDocuments()
32
- .exec();
33
-
34
- return { items, total };
35
- }
36
-
37
- public async crateNotification (notification: Notification): Promise<Notification> {
38
- return this.notificationModel.create(notification);
39
- }
40
-
41
- async updateNotification (notificationId: string, notification: Partial<Notification>): Promise<void> {
42
- await this.notificationModel.findByIdAndUpdate(
43
- notificationId,
44
- {
45
- $set: {
46
- ...notification,
47
- },
48
- }).exec();
49
- }
50
-
51
- public async removeNotification (notificationId: string): Promise<void> {
52
- await this.notificationModel.findByIdAndDelete(notificationId);
53
- }
54
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Notification, NotificationDocument } from '../';
6
+
7
+ @Injectable()
8
+ export class NotificationRepository {
9
+ constructor (@InjectModel(Notification.name) private notificationModel: Model<NotificationDocument>) {
10
+ }
11
+
12
+ async findById (id: string): Promise<Notification | null> {
13
+ return this.notificationModel
14
+ .findById(id)
15
+ .exec();
16
+ }
17
+
18
+ async findAndCount (limit: number, skip: number): Promise<{
19
+ items: Array<Notification>,
20
+ total: number
21
+ }> {
22
+ const items = await this.notificationModel
23
+ .find()
24
+ .sort({ createDate: -1 })
25
+ .limit(limit)
26
+ .skip(skip)
27
+ .exec();
28
+
29
+ const total = await this.notificationModel
30
+ .find()
31
+ .countDocuments()
32
+ .exec();
33
+
34
+ return { items, total };
35
+ }
36
+
37
+ public async crateNotification (notification: Notification): Promise<Notification> {
38
+ return this.notificationModel.create(notification);
39
+ }
40
+
41
+ async updateNotification (notificationId: string, notification: Partial<Notification>): Promise<void> {
42
+ await this.notificationModel.findByIdAndUpdate(
43
+ notificationId,
44
+ {
45
+ $set: {
46
+ ...notification,
47
+ },
48
+ }).exec();
49
+ }
50
+
51
+ public async removeNotification (notificationId: string): Promise<void> {
52
+ await this.notificationModel.findByIdAndDelete(notificationId);
53
+ }
54
+ }
@@ -1,20 +1,18 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Premium, PremiumDocument } from '..';
6
- import { getChannelRegExpFilter } from '../utils';
7
-
8
- @Injectable()
9
- export class PremiumRepository {
10
- constructor (@InjectModel(Premium.name) private premiumModel: Model<PremiumDocument>) {
11
- }
12
-
13
- async findPremium (channel: string, game: string): Promise<Array<Premium> | null> {
14
- return this.premiumModel
15
- .find({
16
- channels: getChannelRegExpFilter(channel),
17
- })
18
- .exec();
19
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Premium, PremiumDocument } from '..';
6
+ import { getChannelRegExpFilter } from '../utils';
7
+
8
+ @Injectable()
9
+ export class PremiumRepository {
10
+ constructor (@InjectModel(Premium.name) private premiumModel: Model<PremiumDocument>) {
11
+ }
12
+
13
+ async findPremium ( gameType: string ): Promise<Premium | null> {
14
+ return this.premiumModel
15
+ .findOne({ gameType })
16
+ .exec();
17
+ }
20
18
  }
@@ -1,29 +1,29 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Product, ProductDocument } from '../';
6
- import { getChannelRegExpFilter } from '../utils';
7
-
8
- @Injectable()
9
- export class ProductsRepository {
10
- constructor (@InjectModel(Product.name) private productModel: Model<ProductDocument>) {
11
- }
12
-
13
- async findByProductId (productId: string): Promise<Product | null> {
14
- return this.productModel
15
- .findOne({ productId })
16
- .exec();
17
- }
18
-
19
- async findProducts (parentId: string | null, channel: string): Promise<Array<Product> | null> {
20
- return this.productModel
21
- .find({
22
- parentId,
23
- active: true,
24
- channels: getChannelRegExpFilter(channel),
25
- })
26
- .exec();
27
- }
28
- }
29
-
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Product, ProductDocument } from '../';
6
+ import { getChannelRegExpFilter } from '../utils';
7
+
8
+ @Injectable()
9
+ export class ProductsRepository {
10
+ constructor (@InjectModel(Product.name) private productModel: Model<ProductDocument>) {
11
+ }
12
+
13
+ async findByProductId (productId: string): Promise<Product | null> {
14
+ return this.productModel
15
+ .findOne({ productId })
16
+ .exec();
17
+ }
18
+
19
+ async findProducts (parentId: string | null, channel: string): Promise<Array<Product> | null> {
20
+ return this.productModel
21
+ .find({
22
+ parentId,
23
+ active: true,
24
+ channels: getChannelRegExpFilter(channel),
25
+ })
26
+ .exec();
27
+ }
28
+ }
29
+
@@ -1,95 +1,95 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/mongoose';
3
- import { Model } from 'mongoose';
4
-
5
- import { Purchase, PurchaseDocument } from '..';
6
- import { CurrencyEnum } from '../models/currency.enum';
7
-
8
- @Injectable()
9
- export class PurchaseRepository {
10
- constructor(@InjectModel(Purchase.name) private purchaseModel: Model<PurchaseDocument>) {
11
- }
12
-
13
- async findPurchasesByUserId(userId: string): Promise<Array<Purchase>> {
14
- return this.purchaseModel
15
- .find({ userId })
16
- .exec();
17
- }
18
-
19
- async findPurchaseByVKOrderId(vkOrderId: number): Promise<Purchase | null> {
20
- return this.purchaseModel
21
- .findOne({ vkOrderId })
22
- .exec();
23
- }
24
-
25
- async findPurchaseByYaOrderId(yaOrderId: string): Promise<Purchase | null> {
26
- return this.purchaseModel
27
- .findOne({ yaOrderId })
28
- .exec();
29
- }
30
-
31
- async addVKPUrchase(
32
- userId: string,
33
- userName: string,
34
- productId: string,
35
- productCode: string,
36
- productName: string,
37
- price: number,
38
- vkOrderId: number,
39
- token: string,
40
- game: string,
41
- ): Promise<Purchase> {
42
- return this.addPurchase({
43
- userId,
44
- userName,
45
- productId,
46
- productCode,
47
- productName,
48
- price,
49
- currency: CurrencyEnum.VK_VOTES,
50
- vkOrderId,
51
- token,
52
- game,
53
- });
54
- }
55
-
56
- async addYAPUrchase(
57
- userId: string,
58
- userName: string,
59
- productId: string,
60
- productCode: string,
61
- productName: string,
62
- price: number,
63
- yaOrderId: string,
64
- token: string,
65
- game: string,
66
- ): Promise<Purchase> {
67
- return this.addPurchase({
68
- userId,
69
- userName,
70
- productId,
71
- productCode,
72
- productName,
73
- price,
74
- currency: CurrencyEnum.YAN,
75
- yaOrderId,
76
- token,
77
- game,
78
- });
79
- }
80
-
81
- async addPurchase(purchase: Partial<Purchase>): Promise<Purchase> {
82
- return this.purchaseModel.create(purchase);
83
- }
84
-
85
- async removeByVKOkderId(vkOrderId: number): Promise<Purchase | null> {
86
- return this.purchaseModel.findOneAndUpdate(
87
- { vkOrderId },
88
- {
89
- removed: true,
90
- },
91
- { new: true },
92
- ).exec();
93
- }
94
- }
95
-
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectModel } from '@nestjs/mongoose';
3
+ import { Model } from 'mongoose';
4
+
5
+ import { Purchase, PurchaseDocument } from '..';
6
+ import { CurrencyEnum } from '../models/currency.enum';
7
+
8
+ @Injectable()
9
+ export class PurchaseRepository {
10
+ constructor(@InjectModel(Purchase.name) private purchaseModel: Model<PurchaseDocument>) {
11
+ }
12
+
13
+ async findPurchasesByUserId(userId: string): Promise<Array<Purchase>> {
14
+ return this.purchaseModel
15
+ .find({ userId })
16
+ .exec();
17
+ }
18
+
19
+ async findPurchaseByVKOrderId(vkOrderId: number): Promise<Purchase | null> {
20
+ return this.purchaseModel
21
+ .findOne({ vkOrderId })
22
+ .exec();
23
+ }
24
+
25
+ async findPurchaseByYaOrderId(yaOrderId: string): Promise<Purchase | null> {
26
+ return this.purchaseModel
27
+ .findOne({ yaOrderId })
28
+ .exec();
29
+ }
30
+
31
+ async addVKPurchase(
32
+ userId: string,
33
+ userName: string,
34
+ productId: string,
35
+ productCode: string,
36
+ productName: string,
37
+ price: number,
38
+ vkOrderId: number,
39
+ token: string,
40
+ game: string,
41
+ ): Promise<Purchase> {
42
+ return this.addPurchase({
43
+ userId,
44
+ userName,
45
+ productId,
46
+ productCode,
47
+ productName,
48
+ price,
49
+ currency: CurrencyEnum.VK_VOTES,
50
+ vkOrderId,
51
+ token,
52
+ game,
53
+ });
54
+ }
55
+
56
+ async addYAPUrchase(
57
+ userId: string,
58
+ userName: string,
59
+ productId: string,
60
+ productCode: string,
61
+ productName: string,
62
+ price: number,
63
+ yaOrderId: string,
64
+ token: string,
65
+ game: string,
66
+ ): Promise<Purchase> {
67
+ return this.addPurchase({
68
+ userId,
69
+ userName,
70
+ productId,
71
+ productCode,
72
+ productName,
73
+ price,
74
+ currency: CurrencyEnum.YAN,
75
+ yaOrderId,
76
+ token,
77
+ game,
78
+ });
79
+ }
80
+
81
+ async addPurchase(purchase: Partial<Purchase>): Promise<Purchase> {
82
+ return this.purchaseModel.create(purchase);
83
+ }
84
+
85
+ async removeByVKOkderId(vkOrderId: number): Promise<Purchase | null> {
86
+ return this.purchaseModel.findOneAndUpdate(
87
+ { vkOrderId },
88
+ {
89
+ removed: true,
90
+ },
91
+ { new: true },
92
+ ).exec();
93
+ }
94
+ }
95
+