feat: Add inTrial getter method to User model

This commit is contained in:
Faruk AYDIN
2023-04-07 22:35:56 +02:00
parent 7d47793afb
commit 3bfc428dfe
2 changed files with 23 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ class UsageData extends Base {
consumedTaskCount!: number; consumedTaskCount!: number;
nextResetAt!: string; nextResetAt!: string;
subscription?: Subscription; subscription?: Subscription;
user?: User;
static tableName = 'usage_data'; static tableName = 'usage_data';
@@ -47,6 +48,12 @@ class UsageData extends Base {
}); });
async checkIfLimitExceeded() { async checkIfLimitExceeded() {
const user = await this.$relatedQuery('user');
if (user.inTrial) {
return false;
}
const subscription = await this.$relatedQuery('subscription'); const subscription = await this.$relatedQuery('subscription');
const plan = subscription.plan; const plan = subscription.plan;
@@ -55,7 +62,9 @@ class UsageData extends Base {
} }
async increaseConsumedTaskCountByOne() { async increaseConsumedTaskCountByOne() {
return await this.$query().patch({ consumedTaskCount: raw('consumed_task_count + 1') }); return await this.$query().patch({
consumedTaskCount: raw('consumed_task_count + 1'),
});
} }
} }

View File

@@ -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) { login(password: string) {
return bcrypt.compare(password, this.password); return bcrypt.compare(password, this.password);
} }