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,49 +1,49 @@
1
- import { Prop, Schema, SchemaFactory, Virtual } from '@nestjs/mongoose';
2
- import { Document, HydratedDocument } from 'mongoose';
3
-
4
- export type SimpleRoomDocument = HydratedDocument<SimpleRoom>;
5
-
6
- @Schema({ collection: 'simple_rooms' })
7
- export class SimpleRoom {
8
- @Virtual({
9
- get: function (this: Document) {
10
- return this._id.toString();
11
- },
12
- })
13
- readonly roomId: string;
14
-
15
- @Prop({ type: Object })
16
- title: Record<string, string>;
17
-
18
- @Prop({ type: Object })
19
- subtitle: Record<string, string>;
20
-
21
- @Prop({ type: Object })
22
- description: Record<string, string>;
23
-
24
- @Prop()
25
- tableSize: number;
26
-
27
- @Prop()
28
- bet: number;
29
-
30
- @Prop()
31
- ticketPrice: number;
32
-
33
- @Prop()
34
- roomType: string;
35
-
36
- @Prop()
37
- gameType: string;
38
-
39
- @Prop()
40
- rulesType: string;
41
-
42
- @Prop()
43
- deckType?: string;
44
-
45
- @Prop()
46
- enableForFastGame?: boolean;
47
- }
48
-
49
- export const SimpleRoomSchema = SchemaFactory.createForClass(SimpleRoom);
1
+ import { Prop, Schema, SchemaFactory, Virtual } from '@nestjs/mongoose';
2
+ import { Document, HydratedDocument } from 'mongoose';
3
+
4
+ export type SimpleRoomDocument = HydratedDocument<SimpleRoom>;
5
+
6
+ @Schema({ collection: 'simple_rooms' })
7
+ export class SimpleRoom {
8
+ @Virtual({
9
+ get: function (this: Document) {
10
+ return this._id.toString();
11
+ },
12
+ })
13
+ readonly roomId: string;
14
+
15
+ @Prop({ type: Object })
16
+ title: Record<string, string>;
17
+
18
+ @Prop({ type: Object })
19
+ subtitle: Record<string, string>;
20
+
21
+ @Prop({ type: Object })
22
+ description: Record<string, string>;
23
+
24
+ @Prop()
25
+ tableSize: number;
26
+
27
+ @Prop()
28
+ bet: number;
29
+
30
+ @Prop()
31
+ ticketPrice: number;
32
+
33
+ @Prop()
34
+ roomType: string;
35
+
36
+ @Prop()
37
+ gameType: string;
38
+
39
+ @Prop()
40
+ rulesType: string;
41
+
42
+ @Prop()
43
+ deckType?: string;
44
+
45
+ @Prop()
46
+ enableForFastGame?: boolean;
47
+ }
48
+
49
+ export const SimpleRoomSchema = SchemaFactory.createForClass(SimpleRoom);
@@ -1,33 +1,33 @@
1
- import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
- import { HydratedDocument } from 'mongoose';
3
-
4
- export type FBUserDocument = HydratedDocument<FBUser>;
5
-
6
- @Schema()
7
- export class FBUser {
8
- @Prop()
9
- contextId?: string;
10
-
11
- @Prop()
12
- contextType: string;
13
-
14
- @Prop()
15
- locale: string;
16
-
17
- @Prop()
18
- platform: string;
19
-
20
- @Prop()
21
- sdkVersion: string;
22
-
23
- @Prop()
24
- playerName: string;
25
-
26
- @Prop()
27
- playerPic: string;
28
-
29
- @Prop()
30
- playerId: string;
31
- }
32
-
33
- export const FBUserSchema = SchemaFactory.createForClass(FBUser);
1
+ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
+ import { HydratedDocument } from 'mongoose';
3
+
4
+ export type FBUserDocument = HydratedDocument<FBUser>;
5
+
6
+ @Schema()
7
+ export class FBUser {
8
+ @Prop()
9
+ contextId?: string;
10
+
11
+ @Prop()
12
+ contextType: string;
13
+
14
+ @Prop()
15
+ locale: string;
16
+
17
+ @Prop()
18
+ platform: string;
19
+
20
+ @Prop()
21
+ sdkVersion: string;
22
+
23
+ @Prop()
24
+ playerName: string;
25
+
26
+ @Prop()
27
+ playerPic: string;
28
+
29
+ @Prop()
30
+ playerId: string;
31
+ }
32
+
33
+ export const FBUserSchema = SchemaFactory.createForClass(FBUser);
@@ -1,24 +1,24 @@
1
- import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
- import { HydratedDocument } from 'mongoose';
3
-
4
- export type GoogleUserDocument = HydratedDocument<GoogleUser>;
5
-
6
- @Schema()
7
- export class GoogleUser {
8
- @Prop()
9
- userId: string;
10
-
11
- @Prop()
12
- fullName: string;
13
-
14
- @Prop()
15
- language: string;
16
-
17
- @Prop()
18
- avatarUrl: string;
19
-
20
- @Prop()
21
- email: string;
22
- }
23
-
24
- export const GoogleUserSchema = SchemaFactory.createForClass(GoogleUser);
1
+ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
+ import { HydratedDocument } from 'mongoose';
3
+
4
+ export type GoogleUserDocument = HydratedDocument<GoogleUser>;
5
+
6
+ @Schema()
7
+ export class GoogleUser {
8
+ @Prop()
9
+ userId: string;
10
+
11
+ @Prop()
12
+ fullName: string;
13
+
14
+ @Prop()
15
+ language: string;
16
+
17
+ @Prop()
18
+ avatarUrl: string;
19
+
20
+ @Prop()
21
+ email: string;
22
+ }
23
+
24
+ export const GoogleUserSchema = SchemaFactory.createForClass(GoogleUser);
@@ -1,53 +1,53 @@
1
- import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
- import { HydratedDocument } from 'mongoose';
3
-
4
- export type OKUserLocationDocument = HydratedDocument<OKUserLocation>;
5
-
6
- @Schema()
7
- export class OKUserLocation {
8
- @Prop()
9
- city: string;
10
-
11
- @Prop()
12
- country: string;
13
-
14
- @Prop()
15
- countryCode: string;
16
-
17
- @Prop()
18
- countryName: string;
19
- }
20
-
21
- export const OKUserLocationSchema =
22
- SchemaFactory.createForClass(OKUserLocation);
23
-
24
- export type OKUserDocument = HydratedDocument<OKUser>;
25
-
26
- @Schema()
27
- export class OKUser {
28
- @Prop()
29
- uid: string;
30
-
31
- @Prop()
32
- birthday: string;
33
-
34
- @Prop()
35
- birthdaySet: boolean;
36
-
37
- @Prop()
38
- age: number;
39
-
40
- @Prop()
41
- first_name: string;
42
-
43
- @Prop()
44
- last_name: string;
45
-
46
- @Prop()
47
- location: OKUserLocation;
48
-
49
- @Prop()
50
- pic128x128: string;
51
- }
52
-
53
- export const OKUserSchema = SchemaFactory.createForClass(OKUser);
1
+ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
2
+ import { HydratedDocument } from 'mongoose';
3
+
4
+ export type OKUserLocationDocument = HydratedDocument<OKUserLocation>;
5
+
6
+ @Schema()
7
+ export class OKUserLocation {
8
+ @Prop()
9
+ city: string;
10
+
11
+ @Prop()
12
+ country: string;
13
+
14
+ @Prop()
15
+ countryCode: string;
16
+
17
+ @Prop()
18
+ countryName: string;
19
+ }
20
+
21
+ export const OKUserLocationSchema =
22
+ SchemaFactory.createForClass(OKUserLocation);
23
+
24
+ export type OKUserDocument = HydratedDocument<OKUser>;
25
+
26
+ @Schema()
27
+ export class OKUser {
28
+ @Prop()
29
+ uid: string;
30
+
31
+ @Prop()
32
+ birthday: string;
33
+
34
+ @Prop()
35
+ birthdaySet: boolean;
36
+
37
+ @Prop()
38
+ age: number;
39
+
40
+ @Prop()
41
+ first_name: string;
42
+
43
+ @Prop()
44
+ last_name: string;
45
+
46
+ @Prop()
47
+ location: OKUserLocation;
48
+
49
+ @Prop()
50
+ pic128x128: string;
51
+ }
52
+
53
+ export const OKUserSchema = SchemaFactory.createForClass(OKUser);
@@ -1,160 +1,160 @@
1
- import { Prop, Schema, SchemaFactory, Virtual } from '@nestjs/mongoose';
2
- import { Document, HydratedDocument } from 'mongoose';
3
- import dayjs from 'dayjs';
4
-
5
- import { AccountTypeEnum } from '../models/account-type.enum';
6
-
7
- import { VKUser } from './user.vk.schema';
8
- import { OKUser } from './user.ok.schema';
9
- import { YAUser } from './user.ya.schema';
10
- import { TGUser } from './user.tg.schema';
11
- import { GoogleUser } from './user.google.schema';
12
- import { FBUser } from './user.fb.schema';
13
-
14
- export type UserDocument = HydratedDocument<User>;
15
-
16
- @Schema()
17
- export class User {
18
- @Virtual({
19
- get: function (this: Document) {
20
- return this._id.toString();
21
- },
22
- })
23
- readonly userId: string;
24
-
25
- @Prop({ required: true })
26
- fullName: string;
27
-
28
- @Prop({ required: true })
29
- balance: number;
30
-
31
- @Prop({ required: true })
32
- avatarUrl: string;
33
-
34
- @Prop({ default: new Date() })
35
- registerDate: Date;
36
-
37
- @Prop({ required: true })
38
- premiumExpired: Date;
39
-
40
- // settings
41
-
42
- @Prop({ default: '' })
43
- fullNameAlias: string;
44
-
45
- @Prop({ default: '' })
46
- avatarAliasUrl: string;
47
-
48
- @Prop({ default: '' })
49
- avatar: string;
50
-
51
- @Prop({ default: 'theme__light' })
52
- theme: string;
53
-
54
- @Prop({ default: 'language__ru' })
55
- language: string;
56
-
57
- @Prop({ default: 'avatar_frame__default' })
58
- avatarFrame: string;
59
-
60
- @Prop({ default: 'card_skin__default' })
61
- cardSkin: string;
62
-
63
- @Prop({ default: 'game_sounds__on' })
64
- gameSounds: string;
65
-
66
- @Prop({ default: 'bg_pattern__default' })
67
- bgPattern: string;
68
-
69
- @Prop({ default: 'room_table__on' })
70
- roomTable: string;
71
-
72
- @Prop({ default: 'color_schema__default' })
73
- colorSchema: string;
74
-
75
- @Prop({ default: 0 })
76
- experience: number;
77
-
78
- @Prop({ default: 1 })
79
- level: number;
80
-
81
- // users
82
-
83
- @Prop({ type: VKUser })
84
- vkUser?: VKUser;
85
-
86
- @Prop({ type: OKUser })
87
- okUser?: OKUser;
88
-
89
- @Prop({ type: YAUser })
90
- yaUser?: YAUser;
91
-
92
- @Prop({ type: GoogleUser })
93
- googleUser?: GoogleUser;
94
-
95
- @Prop({ type: FBUser })
96
- fbUser?: FBUser;
97
-
98
- @Prop({ type: TGUser })
99
- tgUser?: TGUser;
100
-
101
- // virtuals
102
-
103
- @Virtual({
104
- get: function (this: User) {
105
- return dayjs().isAfter(this.premiumExpired);
106
- },
107
- })
108
- readonly hasPremiumAccount: boolean;
109
-
110
- @Virtual({
111
- get: function (this: User) {
112
- return this.fullNameAlias || this.fullName;
113
- },
114
- })
115
- readonly publicFullName: string;
116
-
117
- @Virtual({
118
- get: function (this: User) {
119
- return this.avatarAliasUrl || this.avatarUrl;
120
- },
121
- })
122
- readonly publicAvatarUrl: string;
123
-
124
- @Virtual({
125
- get: function (this: User) {
126
- if (this.yaUser) {
127
- return AccountTypeEnum.YA;
128
- } else if (this.vkUser) {
129
- return AccountTypeEnum.VK;
130
- } else if (this.okUser) {
131
- return AccountTypeEnum.OK;
132
- } else if (this.fbUser) {
133
- return AccountTypeEnum.FB;
134
- } else if (this.googleUser) {
135
- return AccountTypeEnum.GOOGLE;
136
- }
137
-
138
- return AccountTypeEnum.GUEST;
139
- },
140
- })
141
- readonly accountType: string;
142
-
143
- @Virtual({
144
- get: function (this: User) {
145
- return (
146
- this.accountType === AccountTypeEnum.GUEST || !!this.yaUser?.isGuest
147
- );
148
- },
149
- })
150
- readonly isGuest: boolean;
151
-
152
- @Virtual({
153
- get: function (this: User) {
154
- return this.language.replace('language__', '');
155
- },
156
- })
157
- readonly normalizedLang: string;
158
- }
159
-
160
- export const UserSchema = SchemaFactory.createForClass(User);
1
+ import { Prop, Schema, SchemaFactory, Virtual } from '@nestjs/mongoose';
2
+ import { Document, HydratedDocument } from 'mongoose';
3
+ import dayjs from 'dayjs';
4
+
5
+ import { AccountTypeEnum } from '../models/account-type.enum';
6
+
7
+ import { VKUser } from './user.vk.schema';
8
+ import { OKUser } from './user.ok.schema';
9
+ import { YAUser } from './user.ya.schema';
10
+ import { TGUser } from './user.tg.schema';
11
+ import { GoogleUser } from './user.google.schema';
12
+ import { FBUser } from './user.fb.schema';
13
+
14
+ export type UserDocument = HydratedDocument<User>;
15
+
16
+ @Schema()
17
+ export class User {
18
+ @Virtual({
19
+ get: function (this: Document) {
20
+ return this._id.toString();
21
+ },
22
+ })
23
+ readonly userId: string;
24
+
25
+ @Prop({ required: true })
26
+ fullName: string;
27
+
28
+ @Prop({ required: true })
29
+ balance: number;
30
+
31
+ @Prop({ required: true })
32
+ avatarUrl: string;
33
+
34
+ @Prop({ default: new Date() })
35
+ registerDate: Date;
36
+
37
+ @Prop({ required: true })
38
+ premiumExpired: Date;
39
+
40
+ // settings
41
+
42
+ @Prop({ default: '' })
43
+ fullNameAlias: string;
44
+
45
+ @Prop({ default: '' })
46
+ avatarAliasUrl: string;
47
+
48
+ @Prop({ default: '' })
49
+ avatar: string;
50
+
51
+ @Prop({ default: 'theme__light' })
52
+ theme: string;
53
+
54
+ @Prop({ default: 'language__ru' })
55
+ language: string;
56
+
57
+ @Prop({ default: 'avatar_frame__default' })
58
+ avatarFrame: string;
59
+
60
+ @Prop({ default: 'card_skin__default' })
61
+ cardSkin: string;
62
+
63
+ @Prop({ default: 'game_sounds__on' })
64
+ gameSounds: string;
65
+
66
+ @Prop({ default: 'bg_pattern__default' })
67
+ bgPattern: string;
68
+
69
+ @Prop({ default: 'room_table__on' })
70
+ roomTable: string;
71
+
72
+ @Prop({ default: 'color_schema__default' })
73
+ colorSchema: string;
74
+
75
+ @Prop({ default: 0 })
76
+ experience: number;
77
+
78
+ @Prop({ default: 1 })
79
+ level: number;
80
+
81
+ // users
82
+
83
+ @Prop({ type: VKUser })
84
+ vkUser?: VKUser;
85
+
86
+ @Prop({ type: OKUser })
87
+ okUser?: OKUser;
88
+
89
+ @Prop({ type: YAUser })
90
+ yaUser?: YAUser;
91
+
92
+ @Prop({ type: GoogleUser })
93
+ googleUser?: GoogleUser;
94
+
95
+ @Prop({ type: FBUser })
96
+ fbUser?: FBUser;
97
+
98
+ @Prop({ type: TGUser })
99
+ tgUser?: TGUser;
100
+
101
+ // virtuals
102
+
103
+ @Virtual({
104
+ get: function (this: User) {
105
+ return dayjs().isAfter(this.premiumExpired);
106
+ },
107
+ })
108
+ readonly hasPremiumAccount: boolean;
109
+
110
+ @Virtual({
111
+ get: function (this: User) {
112
+ return this.fullNameAlias || this.fullName;
113
+ },
114
+ })
115
+ readonly publicFullName: string;
116
+
117
+ @Virtual({
118
+ get: function (this: User) {
119
+ return this.avatarAliasUrl || this.avatarUrl;
120
+ },
121
+ })
122
+ readonly publicAvatarUrl: string;
123
+
124
+ @Virtual({
125
+ get: function (this: User) {
126
+ if (this.yaUser) {
127
+ return AccountTypeEnum.YA;
128
+ } else if (this.vkUser) {
129
+ return AccountTypeEnum.VK;
130
+ } else if (this.okUser) {
131
+ return AccountTypeEnum.OK;
132
+ } else if (this.fbUser) {
133
+ return AccountTypeEnum.FB;
134
+ } else if (this.googleUser) {
135
+ return AccountTypeEnum.GOOGLE;
136
+ }
137
+
138
+ return AccountTypeEnum.GUEST;
139
+ },
140
+ })
141
+ readonly accountType: string;
142
+
143
+ @Virtual({
144
+ get: function (this: User) {
145
+ return (
146
+ this.accountType === AccountTypeEnum.GUEST || !!this.yaUser?.isGuest
147
+ );
148
+ },
149
+ })
150
+ readonly isGuest: boolean;
151
+
152
+ @Virtual({
153
+ get: function (this: User) {
154
+ return this.language.replace('language__', '');
155
+ },
156
+ })
157
+ readonly normalizedLang: string;
158
+ }
159
+
160
+ export const UserSchema = SchemaFactory.createForClass(User);