40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { Repository } from 'typeorm';
|
|
import { UsageLog } from './usage.entity';
|
|
import { RedisService } from '../common/redis.service';
|
|
export declare class UsageService {
|
|
private usageRepository;
|
|
private redisService;
|
|
private readonly logger;
|
|
constructor(usageRepository: Repository<UsageLog>, redisService: RedisService);
|
|
recordRequest(data: {
|
|
tenantId: string;
|
|
apiKeyId: string;
|
|
endpoint: string;
|
|
method: string;
|
|
statusCode: number;
|
|
responseTimeMs: number;
|
|
userAgent?: string;
|
|
ipAddress?: string;
|
|
}): Promise<void>;
|
|
getMonthlyUsage(tenantId: string): Promise<number>;
|
|
checkQuota(tenantId: string, limit: number): Promise<{
|
|
allowed: boolean;
|
|
used: number;
|
|
}>;
|
|
checkRateLimit(tenantId: string, limit: number): Promise<{
|
|
allowed: boolean;
|
|
used: number;
|
|
}>;
|
|
getUsageHistory(tenantId: string, days?: number): Promise<any>;
|
|
getUsageSummary(tenantId: string, plan?: string): Promise<{
|
|
monthlyUsage: number;
|
|
monthlyLimit: any;
|
|
totalToday: number;
|
|
avgLatency: number;
|
|
successRate: number;
|
|
lastUpdated: Date;
|
|
}>;
|
|
private getMonthlyKey;
|
|
private getRateLimitKey;
|
|
}
|