Skip to content

Instantly share code, notes, and snippets.

@jsopenrb
Created July 7, 2017 09:13
Show Gist options
  • Save jsopenrb/e2eb174e243a791ef2ec252f633205de to your computer and use it in GitHub Desktop.
Save jsopenrb/e2eb174e243a791ef2ec252f633205de to your computer and use it in GitHub Desktop.
local scheduler = {}
local function update(tbl, name, values)
local res, err
if type(name) == 'string' and type(values) == 'table' then
res, err = db:update(tbl, values, { name = name })
scheduler.clear()
else
res, err = nil, 'invalid parameters'
end
return res, err
end
local function schedupdate(name, values)
return update('schedulers', name, values)
end
local function eventupdate(name, values)
return update('scheduler_events', name, values)
end
local function checkrange(value, min, max)
value = tonumber(value)
if type(value) == 'number' then
value = math.floor(value)
if min <= value and value <= max then
return value
end
end
end
local function setdate(name, prefix, day, month)
local values, res, err = {}
day = checkrange(day, 1, 31)
month = checkrange(month, 1, 12)
if day and month then
values[ prefix .. '_day' ] = day
values[ prefix .. '_month' ] = month
res, err = schedupdate(name, values)
else
res, err = nil, 'invalid day or month'
end
return res, err
end
scheduler.clear = function()
local files = io.ls('/tmp') or {}
for _, file in ipairs(files) do
if file:find('lm-scheduler-', 1, true) == 1 then
os.remove('/tmp/' .. file)
end
end
end
scheduler.enable = function(name)
return schedupdate(name, { active = 1 })
end
scheduler.disable = function(name)
return schedupdate(name, { active = 0 })
end
scheduler.eventenable = function(name)
return eventupdate(name, { active = 1 })
end
scheduler.eventdisable = function(name)
return eventupdate(name, { active = 0 })
end
scheduler.setstartdate = function(name, day, month)
return setdate(name, 'start', day, month)
end
scheduler.setenddate = function(name, day, month)
return setdate(name, 'end', day, month)
end
return scheduler
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment