summaryrefslogtreecommitdiffstats
path: root/did-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'did-model.lua')
-rw-r--r--did-model.lua66
1 files changed, 53 insertions, 13 deletions
diff --git a/did-model.lua b/did-model.lua
index a84144c..c9256c8 100644
--- a/did-model.lua
+++ b/did-model.lua
@@ -341,18 +341,6 @@ local updaterules = function(did, rules)
sql = table.concat(sql, "")
res = assert (con:execute(sql))
end
- if #rules > 1 then
- res = {}
- for i,rule in ipairs(rules) do
- res[#res+1] = rule.extension
- end
- res = "Set DID "..did.." to extensions "..table.concat(res, ", ")
- elseif #rules == 1 then
- res = "Set DID "..did.." to extension "..rules[1].extension
- else
- res = "Cleared DID "..did
- end
- logme(res)
return res
end
@@ -590,6 +578,48 @@ local function adddash(did)
end
end
+local describechange = function(olddef, newdef)
+ local changes = {}
+ for name,val in pairs(newdef) do
+ if name ~= "did" and name ~= "rules" and val ~= (olddef[name] or "") then
+ changes[#changes+1] = name.." from '"..(olddef[name] or "").."' to '"..val.."'"
+ end
+ end
+
+ if #changes > 0 then
+ return table.concat(changes, " ")
+ else
+ return nil
+ end
+end
+
+local describeruleschange = function(oldrules, newrules)
+ local changes = {}
+ for i,rule in ipairs(newrules) do
+ rule2 = oldrules[i] or {did=rule.did, dayofweek="0000000"}
+ for name,val in pairs(rule) do
+ if val ~= (rule2[name] or "") then
+ changes[#changes+1] = "Rule "..i.." "..name.." from '"..(rule2[name] or "").."' to '"..val.."'"
+ end
+ end
+ end
+ for i=#newrules+1,#oldrules do
+ local values = {}
+ for name,val in pairs(oldrules[i]) do
+ if name ~= "did" and not (name == "dayofweek" and val == "0000000") then
+ values[#values+1] = name.." = "..val
+ end
+ end
+ changes[#changes+1] = "Rule "..i.." deleted ("..table.concat(values, ", ")..")"
+ end
+
+ if #changes > 0 then
+ return table.concat(changes, " ")
+ else
+ return nil
+ end
+end
+
-- ################################################################################
-- PUBLIC FUNCTIONS
@@ -741,12 +771,22 @@ function savedefinition(defin, exists)
elseif #def == 0 and exists then
defin.value.did.errtxt = "DID Number does not exist"
else
+ local descr = {}
+ descr[#descr+1] = describechange(def[1], definition)
if exists then
updatedefinitionentry(definition)
else
insertdefinitionentry(definition)
end
- defin.descr = updaterules(defin.value.did.value, rules)
+ local oldrules = listrules(definition.did)
+ updaterules(defin.value.did.value, rules)
+ descr[#descr+1] = describeruleschange(oldrules, listrules(definition.did))
+ if #descr > 0 then
+ defin.descr = "Updated DID "..definition.did.." "..table.concat(descr, " ")
+ logme(defin.descr)
+ else
+ defin.descr = "Updated DID "..definition.did.." no change"
+ end
defin.errtxt = nil
end
if connected then databasedisconnect() end