UNPKG

@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
/** * @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";