@fplpool/fpl-models 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/config/index.d.ts +34 -0
  2. package/dist/config/index.d.ts.map +1 -0
  3. package/{src/config/index.ts → dist/config/index.js} +7 -8
  4. package/dist/config/index.js.map +1 -0
  5. package/dist/enums/status-code.enum.d.ts +32 -0
  6. package/dist/enums/status-code.enum.d.ts.map +1 -0
  7. package/dist/enums/status-code.enum.js +36 -0
  8. package/dist/enums/status-code.enum.js.map +1 -0
  9. package/dist/enums/status.enum.d.ts +7 -0
  10. package/dist/enums/status.enum.d.ts.map +1 -0
  11. package/dist/enums/status.enum.js +10 -0
  12. package/dist/enums/status.enum.js.map +1 -0
  13. package/dist/errors/advanced.error.d.ts +5 -0
  14. package/dist/errors/advanced.error.d.ts.map +1 -0
  15. package/dist/errors/advanced.error.js +10 -0
  16. package/dist/errors/advanced.error.js.map +1 -0
  17. package/dist/index.d.ts +41 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +82 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/models/card.model.d.ts +22 -0
  22. package/dist/models/card.model.d.ts.map +1 -0
  23. package/{src/models/card.model.ts → dist/models/card.model.js} +20 -35
  24. package/dist/models/card.model.js.map +1 -0
  25. package/dist/models/config.model.d.ts +21 -0
  26. package/dist/models/config.model.d.ts.map +1 -0
  27. package/{src/models/config.model.ts → dist/models/config.model.js} +8 -23
  28. package/dist/models/config.model.js.map +1 -0
  29. package/dist/models/invoice.model.d.ts +35 -0
  30. package/dist/models/invoice.model.d.ts.map +1 -0
  31. package/dist/models/invoice.model.js +79 -0
  32. package/dist/models/invoice.model.js.map +1 -0
  33. package/dist/models/job.model.d.ts +26 -0
  34. package/dist/models/job.model.d.ts.map +1 -0
  35. package/dist/models/job.model.js +48 -0
  36. package/dist/models/job.model.js.map +1 -0
  37. package/dist/models/pool-gameweek-deadline.model.d.ts +21 -0
  38. package/dist/models/pool-gameweek-deadline.model.d.ts.map +1 -0
  39. package/dist/models/pool-gameweek-deadline.model.js +37 -0
  40. package/dist/models/pool-gameweek-deadline.model.js.map +1 -0
  41. package/dist/models/pool-gameweek-winner.model.d.ts +24 -0
  42. package/dist/models/pool-gameweek-winner.model.d.ts.map +1 -0
  43. package/dist/models/pool-gameweek-winner.model.js +43 -0
  44. package/dist/models/pool-gameweek-winner.model.js.map +1 -0
  45. package/dist/models/pool-gameweek.model.d.ts +27 -0
  46. package/dist/models/pool-gameweek.model.d.ts.map +1 -0
  47. package/dist/models/pool-gameweek.model.js +99 -0
  48. package/dist/models/pool-gameweek.model.js.map +1 -0
  49. package/dist/models/pool-invite.model.d.ts +26 -0
  50. package/dist/models/pool-invite.model.d.ts.map +1 -0
  51. package/dist/models/pool-invite.model.js +54 -0
  52. package/dist/models/pool-invite.model.js.map +1 -0
  53. package/dist/models/pool-member.model.d.ts +22 -0
  54. package/dist/models/pool-member.model.d.ts.map +1 -0
  55. package/dist/models/pool-member.model.js +45 -0
  56. package/dist/models/pool-member.model.js.map +1 -0
  57. package/dist/models/pool-transaction.model.d.ts +31 -0
  58. package/dist/models/pool-transaction.model.d.ts.map +1 -0
  59. package/dist/models/pool-transaction.model.js +109 -0
  60. package/dist/models/pool-transaction.model.js.map +1 -0
  61. package/dist/models/pool-wallet.model.d.ts +18 -0
  62. package/dist/models/pool-wallet.model.d.ts.map +1 -0
  63. package/dist/models/pool-wallet.model.js +86 -0
  64. package/dist/models/pool-wallet.model.js.map +1 -0
  65. package/dist/models/pool.model.d.ts +42 -0
  66. package/dist/models/pool.model.d.ts.map +1 -0
  67. package/{src/models/pool.model.ts → dist/models/pool.model.js} +33 -65
  68. package/dist/models/pool.model.js.map +1 -0
  69. package/dist/models/session.model.d.ts +19 -0
  70. package/dist/models/session.model.d.ts.map +1 -0
  71. package/dist/models/session.model.js +28 -0
  72. package/dist/models/session.model.js.map +1 -0
  73. package/dist/models/transaction.model.d.ts +32 -0
  74. package/dist/models/transaction.model.d.ts.map +1 -0
  75. package/{src/models/transaction.model.ts → dist/models/transaction.model.js} +38 -65
  76. package/dist/models/transaction.model.js.map +1 -0
  77. package/dist/models/user-settings.model.d.ts +20 -0
  78. package/dist/models/user-settings.model.d.ts.map +1 -0
  79. package/{src/models/user-settings.model.ts → dist/models/user-settings.model.js} +14 -29
  80. package/dist/models/user-settings.model.js.map +1 -0
  81. package/dist/models/user.model.d.ts +23 -0
  82. package/dist/models/user.model.d.ts.map +1 -0
  83. package/{src/models/user.model.ts → dist/models/user.model.js} +20 -37
  84. package/dist/models/user.model.js.map +1 -0
  85. package/dist/models/wallet.model.d.ts +23 -0
  86. package/dist/models/wallet.model.d.ts.map +1 -0
  87. package/dist/models/wallet.model.js +141 -0
  88. package/dist/models/wallet.model.js.map +1 -0
  89. package/dist/repositories/generic.repository.d.ts +17 -0
  90. package/dist/repositories/generic.repository.d.ts.map +1 -0
  91. package/dist/repositories/generic.repository.js +55 -0
  92. package/dist/repositories/generic.repository.js.map +1 -0
  93. package/dist/types/pool.d.ts +6 -0
  94. package/dist/types/pool.d.ts.map +1 -0
  95. package/dist/types/pool.js +10 -0
  96. package/dist/types/pool.js.map +1 -0
  97. package/dist/types/wallet.d.ts +16 -0
  98. package/dist/types/wallet.d.ts.map +1 -0
  99. package/dist/types/wallet.js +22 -0
  100. package/dist/types/wallet.js.map +1 -0
  101. package/package.json +11 -4
  102. package/src/index.ts +0 -19
  103. package/src/models/invoice.model.ts +0 -100
  104. package/src/models/job.model.ts +0 -62
  105. package/src/models/pool-gameweek-deadline.model.ts +0 -46
  106. package/src/models/pool-gameweek-winner.model.ts +0 -55
  107. package/src/models/pool-gameweek.model.ts +0 -114
  108. package/src/models/pool-invite.model.ts +0 -65
  109. package/src/models/pool-member.model.ts +0 -53
  110. package/src/models/pool-transaction.model.ts +0 -130
  111. package/src/models/pool-wallet.model.ts +0 -89
  112. package/src/models/session.model.ts +0 -45
  113. package/src/models/wallet.model.ts +0 -154
  114. package/src/repositories/generic.repository.ts +0 -86
  115. package/tsconfig.json +0 -103
@@ -1,100 +0,0 @@
1
- import {Document, Schema, Types, model} from "mongoose";
2
-
3
- import config from "../config";
4
- import sperseId from "sperse-id";
5
-
6
-
7
-
8
-
9
-
10
- export enum InvoiceStatus {
11
- Pending = "pending",
12
- Completed = "completed",
13
- Failed = "failed",
14
- }
15
-
16
- export interface IInvoice extends Document {
17
- _id: Types.ObjectId;
18
- uid: string;
19
- wallet: Types.ObjectId;
20
- status: InvoiceStatus;
21
- receipt?: string;
22
- createdAt: Date;
23
- updatedAt: Date;
24
- description?: string;
25
- amount: string;
26
- metadata: {
27
- paymentMethodType?: InvoicePaymentMethodType,
28
- cardId?: Types.ObjectId;
29
- currency: string;
30
- };
31
- }
32
-
33
- export enum InvoicePaymentMethodType {
34
- Card = "card",
35
- BankTransfer = "bank_transfer",
36
- // Crypto = "crypto",
37
- }
38
-
39
-
40
-
41
- const invoiceSchema = new Schema<IInvoice>({
42
- uid: {
43
- type: String,
44
- required: true,
45
- unique: true,
46
- default: () => sperseId(12, {numbers: true, capitalLetters: false, smallLetters: true})
47
- },
48
- wallet: {
49
- type: Schema.Types.ObjectId,
50
- ref: config.models.wallet,
51
- required: true
52
- },
53
- receipt: {
54
- type: String,
55
- required: false,
56
- default: null
57
- },
58
- status: {
59
- type: String,
60
- required: [true, 'Status is required'],
61
- enum: InvoiceStatus,
62
- default: InvoiceStatus.Pending
63
- },
64
- description: {
65
- type: String,
66
- required: false,
67
- default: null
68
- },
69
- amount: {
70
- type: String,
71
- required: true,
72
- default: "0.00"
73
- },
74
- metadata: {
75
- paymentMethodType: {
76
- type: String,
77
- enum: InvoicePaymentMethodType,
78
- default: InvoicePaymentMethodType.Card
79
- },
80
- cardId: {
81
- type: String,
82
- required: false,
83
- default: null
84
- },
85
- currency: {
86
- type: String,
87
- required: true,
88
- default: "USD"
89
- }
90
- }
91
- }, {
92
- timestamps: true,
93
- toJSON: {virtuals: true},
94
- toObject: {virtuals: true}
95
- })
96
-
97
-
98
- const Invoice = model<IInvoice>(config.models.invoice, invoiceSchema)
99
-
100
- export default Invoice;
@@ -1,62 +0,0 @@
1
- import {Document, Schema, Types, model} from "mongoose";
2
-
3
- import config from "../config";
4
-
5
-
6
-
7
- export enum JobStatus {
8
- Pending = "pending",
9
- Completed = "completed",
10
- Failed = "failed",
11
- }
12
-
13
- export interface IJob extends Document {
14
- _id: Types.ObjectId;
15
- queueName: string;
16
- payload: Record<string, any>;
17
- status: JobStatus;
18
- createdAt: Date;
19
- updatedAt: Date;
20
- lastAttemptedAt: Date | null;
21
- finalizedAt: Date | null;
22
- errorLogs: Array<any> | null;
23
- }
24
-
25
-
26
- const jobSchema = new Schema<IJob>({
27
- queueName: {
28
- type: String,
29
- required: [true, 'Queue name is required'],
30
- },
31
- payload: {
32
- type: Object
33
- },
34
- errorLogs: {
35
- type: Array,
36
- default: null
37
- },
38
- status: {
39
- type: String,
40
- required: [true, 'Status is required'],
41
- enum: JobStatus,
42
- default: JobStatus.Pending
43
- },
44
- lastAttemptedAt: {
45
- type: Date,
46
- default: null,
47
- },
48
- finalizedAt: {
49
- type: Date,
50
- default: null,
51
- },
52
- }, {
53
- timestamps: true,
54
- toJSON: {virtuals: true},
55
- toObject: {virtuals: true}
56
- })
57
-
58
-
59
-
60
- const Job = model<IJob>(config.models.job, jobSchema)
61
-
62
- export default Job;
@@ -1,46 +0,0 @@
1
- import { Document, Schema, Types, model } from "mongoose";
2
- import config from "../config";
3
- import { IPool } from "./pool.model";
4
-
5
-
6
- export enum PoolGameweekDeadlineType {
7
- Personal = 'personal',
8
- Members = 'members'
9
- }
10
-
11
- export interface IPoolGameweekDeadline extends Document {
12
- _id: Types.ObjectId;
13
- pool: IPool;
14
- type: PoolGameweekDeadlineType;
15
- msBeforeDeadline: number;
16
- }
17
-
18
-
19
- const poolGameweekDeadlineSchema = new Schema<IPoolGameweekDeadline>({
20
- pool: {
21
- type: Schema.Types.ObjectId,
22
- ref: config.models.pool,
23
- required: true
24
- },
25
- type: {
26
- type: String,
27
- enum: PoolGameweekDeadlineType,
28
- default: PoolGameweekDeadlineType.Members
29
- },
30
- msBeforeDeadline: {
31
- type: Number,
32
- required: true,
33
- default: 1000 * 60 * 30 //30 minutes before deadline
34
- }
35
- },
36
- {
37
- timestamps: true,
38
- toJSON: {virtuals: true},
39
- toObject: {virtuals: true}
40
- }
41
- );
42
-
43
-
44
- const PoolGameweekDeadline = model<IPoolGameweekDeadline>(config.models.poolGameweekDeadline, poolGameweekDeadlineSchema);
45
-
46
- export default PoolGameweekDeadline;
@@ -1,55 +0,0 @@
1
- import { Schema, model, Types, Document } from "mongoose";
2
- import config from "../config";
3
-
4
-
5
-
6
-
7
- export enum PoolGameweekWinnerStatus {
8
- Pending = "pending",
9
- Paid = "paid",
10
- Failed = "failed"
11
- }
12
-
13
- export interface IPoolGameweekWinner extends Document {
14
- _id: Types.ObjectId;
15
- gameweek: Types.ObjectId;
16
- winner: Types.ObjectId;
17
- score: number;
18
- status: PoolGameweekWinnerStatus;
19
- createdAt: Date;
20
- updatedAt: Date;
21
- }
22
-
23
-
24
- const poolGameweekWinnerSchema = new Schema<IPoolGameweekWinner>({
25
- gameweek: {
26
- type: Schema.Types.ObjectId,
27
- ref: config.models.poolGameweek,
28
- required: true
29
- },
30
- winner: {
31
- type: Schema.Types.ObjectId,
32
- ref: config.models.poolMember,
33
- required: true
34
- },
35
- score: {
36
- type: Number,
37
- required: true,
38
- default: 0
39
- },
40
- status: {
41
- type: String,
42
- enum: PoolGameweekWinnerStatus,
43
- default: PoolGameweekWinnerStatus.Pending
44
- },
45
- }, {
46
- timestamps: true,
47
- toJSON: {virtuals: true},
48
- toObject: {virtuals: true}
49
- })
50
-
51
-
52
-
53
- const PoolGameweekWinner = model<IPoolGameweekWinner>(config.models.poolGameweekWinner, poolGameweekWinnerSchema);
54
-
55
- export default PoolGameweekWinner;
@@ -1,114 +0,0 @@
1
- import { Schema, model, Types, Document } from "mongoose";
2
- import config from "../config";
3
- import { poolAmountPattern } from "./pool-transaction.model";
4
- import AdvancedError from "../errors/advanced.error";
5
- import StatusCode from "../enums/status-code.enum";
6
-
7
-
8
-
9
-
10
- export interface IPoolGameweek extends Document {
11
- _id: Types.ObjectId;
12
- pool: Types.ObjectId;
13
- gameweek: number;
14
- active: boolean;
15
- activePlayers: {member: Types.ObjectId, score: number}[];
16
- winner: Types.ObjectId | null;
17
- balance: string;
18
- startedAt: Date | null;
19
- participationRateBps: number;
20
- createdAt: Date;
21
- updatedAt: Date;
22
- hasPaid: (memberId: Types.ObjectId) => Promise<boolean>;
23
- }
24
-
25
-
26
- const poolGameweekSchema = new Schema<IPoolGameweek>({
27
- pool: {
28
- type: Schema.Types.ObjectId,
29
- ref: config.models.pool,
30
- required: true
31
- },
32
- gameweek: {
33
- type: Number,
34
- required: true
35
- },
36
- activePlayers: [{
37
- member: {
38
- type: Schema.Types.ObjectId,
39
- ref: config.models.poolMember,
40
- },
41
- score: {
42
- type: Number,
43
- required: true,
44
- default: 0
45
- }
46
- }],
47
- active: {
48
- type: Boolean,
49
- default: false
50
- },
51
- startedAt: {
52
- type: Date,
53
- required: false,
54
- default: null
55
- },
56
- participationRateBps: {
57
- type: Number,
58
- required: false,
59
- default: 0
60
- },
61
- balance: {
62
- type: String,
63
- required: false,
64
- default: "0.00",
65
- match: poolAmountPattern,
66
- set: function(value: string) {
67
- // If value already looks like a float (has a .), ensure two decimals
68
- if (typeof value === "string") {
69
- if (poolAmountPattern.test(value)) {
70
- // If it has a dot but is not two decimals, pad right
71
- if (value.indexOf('.') !== -1) {
72
- let [whole, decimals] = value.split('.');
73
- if (decimals === undefined) return whole + ".00";
74
- if (decimals.length === 1) return whole + "." + decimals + "0";
75
- if (decimals.length === 2) return value;
76
- if (decimals.length > 2) return whole + "." + decimals.slice(0,2);
77
- }
78
- // No decimal: add .00
79
- return value + ".00";
80
- }
81
- // If it's an integer, add .00
82
- if (/^\d+$/.test(value)) {
83
- return value + ".00";
84
- }
85
- }
86
- return value;
87
- }
88
- },
89
- winner: {
90
- type: Schema.Types.ObjectId,
91
- ref: config.models.poolGameweekWinner,
92
- required: false,
93
- default: null
94
- }
95
- }, {
96
- timestamps: true,
97
- toJSON: {virtuals: true},
98
- toObject: {virtuals: true}
99
- })
100
-
101
-
102
- poolGameweekSchema.methods.hasPaid = async function(memberId: Types.ObjectId): Promise<boolean> {
103
- try{
104
- return await this.activePlayers.some(({member}: {member: Types.ObjectId, score: number}) => member.toString() === memberId.toString());
105
- }catch(e: any){
106
- throw new AdvancedError(e.message, e.statusCode || StatusCode.INTERNAL_SERVER_ERROR)
107
- }
108
- }
109
-
110
-
111
-
112
- const PoolGameweek = model<IPoolGameweek>(config.models.poolGameweek, poolGameweekSchema);
113
-
114
- export default PoolGameweek;
@@ -1,65 +0,0 @@
1
- import { Schema, model, Types, Document } from "mongoose";
2
- import config from "../config";
3
-
4
-
5
- export interface IPoolInvite extends Document {
6
- _id: Types.ObjectId;
7
- pool: Types.ObjectId;
8
- email: string;
9
- status: PoolInviteStatus;
10
- invitedAt: Date;
11
- expiresAt: Date;
12
- updatedAt: Date;
13
- hasExpired: () => Promise<boolean>;
14
- }
15
-
16
- export enum PoolInviteStatus {
17
- Pending = "pending",
18
- Accepted = "accepted",
19
- Declined = "declined",
20
- Expired = "expired",
21
- }
22
-
23
-
24
- const poolInviteSchema = new Schema<IPoolInvite>({
25
- pool: {
26
- type: Schema.Types.ObjectId,
27
- ref: config.models.pool,
28
- required: true
29
- },
30
- email: {
31
- type: String,
32
- required: true
33
- },
34
- status: {
35
- type: String,
36
- required: true,
37
- enum: PoolInviteStatus,
38
- default: PoolInviteStatus.Pending
39
- },
40
- expiresAt: {
41
- type: Date,
42
- required: true,
43
- default: new Date(Date.now() + (1000 * 60 * 60 * 24 * 7)) //7 days
44
- }
45
- }, {
46
- timestamps: {
47
- createdAt: 'invitedAt',
48
- updatedAt: true
49
- },
50
- toJSON: {virtuals: true},
51
- toObject: {virtuals: true}
52
- })
53
-
54
- poolInviteSchema.methods.hasExpired = async function(): Promise<boolean> {
55
- if(Date.now() >= this.expiresAt.getTime() && this.status.toString() !== PoolInviteStatus.Expired.toString()){
56
- this.status = PoolInviteStatus.Expired;
57
- await this.save();
58
- }
59
- return this.status.toString() === PoolInviteStatus.Expired.toString();
60
- }
61
-
62
-
63
- const PoolInvite = model<IPoolInvite>(config.models.poolInvite, poolInviteSchema);
64
-
65
- export default PoolInvite;
@@ -1,53 +0,0 @@
1
- import { Document, Schema, Types, model } from "mongoose";
2
- import config from "../config";
3
-
4
-
5
- export interface IPoolMember extends Document {
6
- _id: Types.ObjectId;
7
- pool: Types.ObjectId;
8
- user: Types.ObjectId;
9
- isAdmin: boolean;
10
- status: PoolMemberStatus;
11
- joinedAt: Date;
12
- }
13
-
14
- export enum PoolMemberStatus {
15
- Active = "active",
16
- Inactive = "inactive",
17
- // Banned = "banned"
18
- }
19
-
20
- const poolMemberSchema = new Schema<IPoolMember>({
21
- user: {
22
- type: Schema.Types.ObjectId,
23
- ref: config.models.user,
24
- required: true
25
- },
26
- pool: {
27
- type: Schema.Types.ObjectId,
28
- ref: config.models.pool,
29
- required: true
30
- },
31
- isAdmin: {
32
- type: Boolean,
33
- default: false
34
- },
35
- status: {
36
- type: String,
37
- enum: PoolMemberStatus,
38
- default: PoolMemberStatus.Active
39
- }
40
- }, {
41
- timestamps: {
42
- createdAt: 'joinedAt',
43
- updatedAt: false
44
- },
45
- toJSON: {virtuals: true},
46
- toObject: {virtuals: true}
47
- })
48
-
49
-
50
- const PoolMember = model<IPoolMember>(config.models.poolMember, poolMemberSchema);
51
-
52
-
53
- export default PoolMember;
@@ -1,130 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
-
3
- import { Schema, model, Types, Document } from "mongoose";
4
-
5
- import config from "../config";
6
- import { TransactionMethod, TransactionStatus, TransactionType } from "../types/wallet";
7
-
8
-
9
-
10
-
11
-
12
- export interface IPoolTransaction extends Document {
13
- _id: Types.ObjectId;
14
- key: Types.UUID;
15
- wallet: Types.ObjectId;
16
- member: Types.ObjectId;
17
- paymentIntentId?: string;
18
- amount: string;
19
- description: string;
20
- method: TransactionMethod;
21
- type: TransactionType;
22
- status: TransactionStatus;
23
- metadata: {
24
- cardId?: Types.ObjectId;
25
- receiver?: Types.ObjectId;
26
- gameweeks?: number[];
27
- };
28
- createdAt: Date;
29
- updatedAt: Date;
30
- }
31
-
32
- export const poolAmountPattern = /^\d+(\.\d{1,2})?$/;
33
-
34
- const poolTransactionSchema = new Schema<IPoolTransaction>({
35
- wallet: {
36
- type: Schema.Types.ObjectId,
37
- ref: config.models.poolWallet,
38
- },
39
- member: {
40
- type: Schema.Types.ObjectId,
41
- ref: config.models.poolMember
42
- },
43
- key: {
44
- type: Schema.Types.UUID,
45
- required: false,
46
- unique: true,
47
- default: () => new Types.UUID(randomUUID())
48
- },
49
- paymentIntentId: {
50
- type: String,
51
- required: false
52
- },
53
- amount: {
54
- type: String,
55
- required: false,
56
- default: "0.00",
57
- set: function(value: string) {
58
- // If value already looks like a float (has a .), ensure two decimals
59
- if (typeof value === "string") {
60
- if (poolAmountPattern.test(value)) {
61
- // If it has a dot but is not two decimals, pad right
62
- if (value.indexOf('.') !== -1) {
63
- let [whole, decimals] = value.split('.');
64
- if (decimals === undefined) return whole + ".00";
65
- if (decimals.length === 1) return whole + "." + decimals + "0";
66
- if (decimals.length === 2) return value;
67
- if (decimals.length > 2) return whole + "." + decimals.slice(0,2);
68
- }
69
- // No decimal: add .00
70
- return value + ".00";
71
- }
72
- // If it's an integer, add .00
73
- if (/^\d+$/.test(value)) {
74
- return value + ".00";
75
- }
76
- }
77
- return value;
78
- }
79
- },
80
- description: {
81
- type: String,
82
- required: true
83
- },
84
- method: {
85
- type: String,
86
- enum: TransactionMethod,
87
- default: TransactionMethod.Wallet,
88
- required: true
89
- },
90
- metadata: {
91
- cardId: {
92
- type: Schema.Types.ObjectId,
93
- ref: config.models.card,
94
- required: false,
95
- default: null
96
- },
97
- receiver: {
98
- type: Schema.Types.ObjectId,
99
- ref: config.models.user,
100
- required: false,
101
- default: null
102
- },
103
- gameweeks: {
104
- type: Array<number>,
105
- required: false,
106
- default: null
107
- }
108
- },
109
- type: {
110
- type: String,
111
- enum: TransactionType,
112
- required: true
113
- },
114
- status: {
115
- type: String,
116
- enum: TransactionStatus,
117
- required: true,
118
- default: TransactionStatus.Pending
119
- }
120
- }, {
121
- timestamps: true,
122
- toJSON: {virtuals: true},
123
- toObject: {virtuals: true}
124
- })
125
-
126
-
127
- const PoolTransaction = model<IPoolTransaction>(config.models.poolTransaction, poolTransactionSchema);
128
-
129
-
130
- export default PoolTransaction;