import type * as Effect from "effect/Effect"; import * as Binding from "../Binding.ts"; import type { RuntimeContext } from "../RuntimeContext.ts"; import type { Redis, RedisCommandError, RedisUrlMissing } from "./Redis.ts"; /** * Bind a {@link Redis} database with write access (`set`, `del`). * * `WriteRedis` is the Context tag, the type, and the callable — * `yield* Fly.WriteRedis(Cache)`. Provide {@link WriteRedisHttp}. * * * ### Write * **Example:** Set a key * ```typescript * const cache = yield* Fly.WriteRedis(Cache); * yield* cache.set("marker", "hello"); * ``` * * @binding */ export interface WriteRedis extends Binding.Service< WriteRedis, "Fly.WriteRedis", (redis: Redis) => Effect.Effect > {} export const WriteRedis = Binding.Service("Fly.WriteRedis"); export interface WriteRedisClient { set( key: string, value: string, ): Effect.Effect; del( key: string, ): Effect.Effect; }