- Add ioredis dependency to API package - Create Redis connection utility (apps/api/src/config/redis.ts) - Create Redis-backed spam rate limit middleware with per-minute and daily limits - Create spam classification routes (SMS, number reputation, call analysis, feedback) - Register middleware and routes in API server - Add 7 passing tests for rate limit enforcement - Update vitest config with required env vars Co-Authored-By: Paperclip <noreply@paperclip.ing>
19 lines
495 B
TypeScript
19 lines
495 B
TypeScript
import { Redis } from 'ioredis';
|
|
|
|
const redisHost = process.env.REDIS_HOST || 'localhost';
|
|
const redisPort = parseInt(process.env.REDIS_PORT || '6379', 10);
|
|
|
|
export const redis = new Redis({
|
|
host: redisHost,
|
|
port: redisPort,
|
|
retryStrategy: (times: number) => Math.min(times * 50, 2000),
|
|
lazyConnect: true,
|
|
});
|
|
|
|
export async function getRedisConnection(): Promise<Redis> {
|
|
if (redis.status === 'wait' || redis.status === 'connecting') {
|
|
await redis.connect();
|
|
}
|
|
return redis;
|
|
}
|