import type { Redis } from 'ioredis'
import type { CacheBackend } from './index.js'

export function createRedisBackend(client: Redis): CacheBackend {
  return {
    async get(key) {
      const value = await client.get(key)
      return value ?? undefined
    },

    async set(key, value, ttlSeconds) {
      if (ttlSeconds !== undefined) {
        await client.set(key, value, 'EX', ttlSeconds)
        return
      }
      await client.set(key, value)
    },

    async del(key) {
      await client.del(key)
    },
  }
}
