Sha256: 9eaff643605e8d66bff22583ddf3e0487014e3e7ad7c3e2e7389fe718b631b12

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

local model       = cmsgpack.unpack(ARGV[1])
local uniques     = cmsgpack.unpack(ARGV[2])
local tracked     = cmsgpack.unpack(ARGV[3])

local function remove_indices(model)
  local memo = model.key .. ":_indices"
  local existing = redis.call("SMEMBERS", memo)

  for _, key in ipairs(existing) do
    redis.call("SREM", key, model.id)
    redis.call("SREM", memo, key)
  end
end

local function remove_uniques(model, uniques)
  local memo = model.key .. ":_uniques"

  for field, _ in pairs(uniques) do
    local key = model.name .. ":uniques:" .. field

    redis.call("HDEL", key, redis.call("HGET", memo, key))
    redis.call("HDEL", memo, key)
  end
end

local function remove_tracked(model, tracked)
  for _, tracked_key in ipairs(tracked) do
    local key = model.key .. ":" .. tracked_key

    redis.call("DEL", key)
  end
end

local function delete(model)
  local keys = {
    model.key .. ":counters",
    model.key .. ":_indices",
    model.key .. ":_uniques",
    model.key
  }

  redis.call("SREM", model.name .. ":all", model.id)
  redis.call("DEL", unpack(keys))
end

remove_indices(model)
remove_uniques(model, uniques)
remove_tracked(model, tracked)
delete(model)

return model.id

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-2.0.0.alpha3 lib/ohm/lua/delete.lua