@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
8 lines (7 loc) • 1.12 kB
TypeScript
/**
* @module CircuitBreaker
*/
/**
* @internal
*/
export declare const circuitBreakerStorageLua = "\n-- @template TMetrics\n-- @param circuitBreakerPolicy InternalCircuitBreakerPolicy<TMetrics>\n-- @param currentDate number\nlocal function CircuitBreakerStorage(circuitBreakerPolicy, currentDate) \n -- @param key string\n -- @param AllCircuitBreakerState<TMetrics>\n local function find(key)\n if redis.call(\"EXISTS\", key) == 1 then\n local value = redis.call(\"GET\", key)\n return cjson.decode(value)\n end\n \n return circuitBreakerPolicy.initialState()\n end\n\n return {\n -- @param key string\n -- @param update DatabaseCircuitBreakerUpdateStateFn<TMetrics>\n atomicUpdate = function(key, update)\n local currentState = find(key)\n local newState = update(currentState, currentDate)\n redis.call(\"set\", key, cjson.encode(newState))\n\n return {\n from = currentState.type,\n to = newState.type,\n }\n end\n }\nend\n";