diff --git a/src/quota/tokenCount.ts b/src/quota/tokenCount.ts index f1ce0a3..263ba13 100644 --- a/src/quota/tokenCount.ts +++ b/src/quota/tokenCount.ts @@ -65,9 +65,34 @@ export default class tokenCount implements IQuota { return this.createUserQuotaData(this.defaultQuota, usedUnits); } + /** + * Helper function to use proper query based on considerInputTokensAsHalf setting + * @param user The user to find nth usage + * @param requestTimestamp the timestamp of the request + * @param unitCount the unit count to check + * @returns promise of giving out the record + */ findNthUsage(user: string, requestTimestamp: number, unitCount: number) { if (this.considerInputTokensAsHalf) - throw("Not implemented"); + return database.$queryRaw>` + SELECT t1.*, ( + SELECT + SUM(usageResponse + usageRequest/2) AS usage + FROM \`usage\` + WHERE + user = ${user} AND + timestamp >= ${requestTimestamp - this.lookback} AND + timestamp <= t1.timestamp + ) as usage + FROM + \`usage\` AS t1 + WHERE + user = ${user} AND + timestamp >= ${requestTimestamp - this.lookback} AND + usage >= ${unitCount} + ORDER BY timestamp ASC + LIMIT 1 + `; return database.$queryRaw>` SELECT t1.*, ( SELECT @@ -100,7 +125,6 @@ export default class tokenCount implements IQuota { this.findNthUsage(userId, request.createdTimestamp, unitCount) ]); - console.log(renameMebecause); return { ...userQuota, recoveryTimestamp: (renameMebecause.at(0)?.timestamp.valueOf() ?? Infinity) + this.lookback,