diff --git a/packages/backend/src/models/usage-data.ee.ts b/packages/backend/src/models/usage-data.ee.ts index fdf10962..4c01d15d 100644 --- a/packages/backend/src/models/usage-data.ee.ts +++ b/packages/backend/src/models/usage-data.ee.ts @@ -11,6 +11,7 @@ class UsageData extends Base { consumedTaskCount!: number; nextResetAt!: string; subscription?: Subscription; + user?: User; static tableName = 'usage_data'; @@ -47,6 +48,12 @@ class UsageData extends Base { }); async checkIfLimitExceeded() { + const user = await this.$relatedQuery('user'); + + if (user.inTrial) { + return false; + } + const subscription = await this.$relatedQuery('subscription'); const plan = subscription.plan; @@ -55,7 +62,9 @@ class UsageData extends Base { } async increaseConsumedTaskCountByOne() { - return await this.$query().patch({ consumedTaskCount: raw('consumed_task_count + 1') }); + return await this.$query().patch({ + consumedTaskCount: raw('consumed_task_count + 1'), + }); } } diff --git a/packages/backend/src/models/user.ts b/packages/backend/src/models/user.ts index ff55c78d..8e7337ee 100644 --- a/packages/backend/src/models/user.ts +++ b/packages/backend/src/models/user.ts @@ -126,6 +126,19 @@ class User extends Base { }, }); + get inTrial() { + if (!this.trialExpiryDate) { + return false; + } + + const expiryDate = DateTime.fromJSDate( + this.trialExpiryDate as unknown as Date + ); + const now = DateTime.now(); + + return now < expiryDate; + } + login(password: string) { return bcrypt.compare(password, this.password); }