diff --git a/src/lib/server/api/databases/redis/schemas/login-requests.schema.ts b/src/lib/server/api/databases/redis/schemas/login-requests.schema.ts deleted file mode 100644 index f6c091a..0000000 --- a/src/lib/server/api/databases/redis/schemas/login-requests.schema.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Schema } from 'redis-om' - -export const loginRequestSchema = new Schema('album', { - id: { type: 'string' }, - hashedToken: { type: 'string' }, - email: { type: 'string' }, -}) \ No newline at end of file diff --git a/src/lib/server/api/middlewares/rate-limiter.middlware.ts b/src/lib/server/api/middlewares/rate-limiter.middlware.ts index 39f5841..79dcb93 100644 --- a/src/lib/server/api/middlewares/rate-limiter.middlware.ts +++ b/src/lib/server/api/middlewares/rate-limiter.middlware.ts @@ -25,8 +25,9 @@ export function limiter({ limit, minutes, key = "" }: { }, // Method to generate custom identifiers for clients. // Redis store configuration store: new RedisStore({ - sendCommand: (...args: string[]) => client.sendCommand(args), - }) as any, + // @ts-expect-error - Known issue: the `call` function is not present in @types/ioredis + sendCommand: (...args: string[]) => client.call(...args), + }) as any }) } diff --git a/src/lib/server/api/services/redis.service.ts b/src/lib/server/api/services/redis.service.ts index 3bc4765..3fd9eb1 100644 --- a/src/lib/server/api/services/redis.service.ts +++ b/src/lib/server/api/services/redis.service.ts @@ -1,42 +1,16 @@ -import { createClient, type RedisClientType } from "redis"; import { injectable, type Disposable } from "tsyringe"; import { config } from "../common/config"; -import type { AsyncService } from "../common/types/async-service"; +import { Redis } from "ioredis"; @injectable() -export class RedisService implements Disposable, AsyncService { - readonly client: RedisClientType; - private isConnected: boolean = false; +export class RedisService implements Disposable { + readonly client: Redis; constructor() { - this.client = createClient({ - url: config.redis.url, - }); - this.init(); - } - - async ensureConnected(): Promise { - if (!this.isConnected) { - await this.init(); - } - } - - async init(): Promise { - try { - await this.client.connect(); - this.isConnected = this.client.isReady; - console.log('Redis connected'); - } catch (error) { - console.error('Failed to connect to Redis:', error); - throw error; - } + this.client = new Redis(config.redis.url) } async dispose(): Promise { - if (this.isConnected) { - await this.client.disconnect(); - this.isConnected = false; - console.log('Redis disconnected'); - } + this.client.disconnect(); } } \ No newline at end of file