MCPcopy
hub / github.com/CodebuffAI/codebuff / getWeeklyUsage

Function getWeeklyUsage

packages/billing/src/subscription.ts:199–242  ·  view source on GitHub ↗
(params: {
  userId: string
  billingPeriodStart: Date
  weeklyCreditsLimit: number
  logger: Logger
  conn?: DbConn
})

Source from the content-addressed store, hash-verified

197 * billing-aligned week.
198 */
199export async function getWeeklyUsage(params: {
200 userId: string
201 billingPeriodStart: Date
202 weeklyCreditsLimit: number
203 logger: Logger
204 conn?: DbConn
205}): Promise<WeeklyUsage> {
206 const {
207 userId,
208 billingPeriodStart,
209 weeklyCreditsLimit,
210 conn = db,
211 } = params
212
213 const now = new Date()
214 const weekStart = getWeekStart(billingPeriodStart, now)
215 const weekEnd = getWeekEnd(billingPeriodStart, now)
216
217 const result = await conn
218 .select({
219 total: sql<number>`COALESCE(SUM(${schema.creditLedger.principal} - ${schema.creditLedger.balance}), 0)`,
220 })
221 .from(schema.creditLedger)
222 .where(
223 and(
224 eq(schema.creditLedger.user_id, userId),
225 eq(schema.creditLedger.type, 'subscription'),
226 gte(schema.creditLedger.created_at, weekStart),
227 lt(schema.creditLedger.created_at, weekEnd),
228 ),
229 )
230
231 const used = Number(result[0]?.total ?? 0)
232
233 return {
234 used,
235 limit: weeklyCreditsLimit,
236 remaining: Math.max(0, weeklyCreditsLimit - used),
237 resetsAt: weekEnd,
238 percentUsed: weeklyCreditsLimit > 0
239 ? Math.round((used / weeklyCreditsLimit) * 100)
240 : 0,
241 }
242}
243
244// ---------------------------------------------------------------------------
245// Block grant management

Callers 2

checkRateLimitFunction · 0.85

Calls 3

fromMethod · 0.80
getWeekStartFunction · 0.70
getWeekEndFunction · 0.70

Tested by

no test coverage detected