mirror of
https://github.com/LBRYFoundation/tracker.git
synced 2025-08-23 17:47:29 +00:00
67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package redis
|
|
|
|
import (
|
|
"github.com/garyburd/redigo/redis"
|
|
)
|
|
|
|
var incSlotsScript = redis.NewScript(1, incSlotsScriptSrc)
|
|
|
|
const incSlotsScriptSrc = `
|
|
if redis.call("exists", keys[1]) == 1 then
|
|
local json = redis.call("get", keys[1])
|
|
local user = cjson.decode(json)
|
|
user["slots_used"] = user["slots_used"] + 1
|
|
json = cjson.encode(user)
|
|
redis.call("set", key, json)
|
|
return user["slots_used"]
|
|
else
|
|
return nil
|
|
end
|
|
`
|
|
|
|
var decSlotsScript = redis.NewScript(1, incSlotsScriptSrc)
|
|
|
|
const decSlotsScriptSrc = `
|
|
if redis.call("exists", keys[1]) == 1 then
|
|
local json = redis.call("get", keys[1])
|
|
local user = cjson.decode(json)
|
|
if user["slots_used"] > 0
|
|
user["slots_used"] = user["slots_used"] - 1
|
|
end
|
|
json = cjson.encode(user)
|
|
redis.call("set", key, json)
|
|
return user["slots_used"]
|
|
else
|
|
return nil
|
|
end
|
|
`
|
|
|
|
var activeScript = redis.NewScript(1, decSlotsScriptSrc)
|
|
|
|
const activeScriptSrc = `
|
|
if redis.call("exists", keys[1]) == 1 then
|
|
local json = redis.call("get", keys[1])
|
|
local torrent = cjson.decode(json)
|
|
torrent["active"] = true
|
|
json = cjson.encode(torrent)
|
|
redis.call("set", key, json)
|
|
return user["slots_used"]
|
|
else
|
|
return nil
|
|
end
|
|
`
|
|
|
|
var rmSeederScript = redis.NewScript(2, rmSeederScriptSrc)
|
|
|
|
const rmSeederScriptSrc = `
|
|
if redis.call("EXISTS", keys[1]) == 1 then
|
|
local json = redis.call("GET", keys[1])
|
|
local torrent = cjson.decode(json)
|
|
table.remove(torrent["seeders"], keys[2])
|
|
json = cjson.encode(torrent)
|
|
redis.call("SET", key, json)
|
|
return 0
|
|
else
|
|
return nil
|
|
end
|
|
`
|