summaryrefslogtreecommitdiffstats
path: root/kamailio-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'kamailio-model.lua')
-rw-r--r--kamailio-model.lua39
1 files changed, 26 insertions, 13 deletions
diff --git a/kamailio-model.lua b/kamailio-model.lua
index 089c465..587f7ad 100644
--- a/kamailio-model.lua
+++ b/kamailio-model.lua
@@ -285,12 +285,12 @@ function mymodule.create_database(self, create_db)
return create_db
end
-function mymodule.search_database(id, value, comparison)
+function mymodule.get_search_database(self, clientdata)
local errtxt
retval = {}
- retval.id = cfe({type="select", value=id or "", label="Table.Column", option={}, seq=1})
- retval.comparison = cfe({type="select", value=comparison or "=", label="Comparison", option={"=", "!=", "~", "!~", "~*", "!*~"}, seq=2})
- retval.value = cfe({label="Value", value=value or "", descr="Value or SQL regular expression", seq=3})
+ retval.id = cfe({type="select", value=clientdata.id or "", label="Table.Column", option={}, seq=1})
+ retval.comparison = cfe({type="select", value=clientdata.comparison or "=", label="Comparison", option={"=", "!=", "~", "!~", "~*", "!*~"}, seq=2})
+ retval.value = cfe({label="Value", value=clientdata.value or "", descr="Value or SQL regular expression", seq=3})
local res, err = pcall(function()
local connected = databaseconnect()
local tables = dbkam.listtables() or {}
@@ -300,15 +300,6 @@ function mymodule.search_database(id, value, comparison)
retval.id.option[#retval.id.option + 1] = t.."."..c
end
end
- -- Get the rows from the DB
- if id and modelfunctions.validateselect(retval.id) and modelfunctions.validateselect(retval.comparison) then
- retval.result = cfe({type="structure", value={}, label="List of Rows", seq=4 })
- local table, column = string.match(id, "^([^.]*)%.(.*)")
- if table then
- local sql = "SELECT * FROM "..dbkam.escape(table).." WHERE "..dbkam.escape(column)..dbkam.escape(comparison).."'"..dbkam.escape(value).."'"
- retval.result.value = getselectresponse(sql)
- end
- end
if connected then databasedisconnect() end
end)
if not res and err then
@@ -317,6 +308,28 @@ function mymodule.search_database(id, value, comparison)
return cfe({type="group", value=retval, label="Database Search", errtxt=errtxt})
end
+function mymodule.search_database(self, search)
+ if modelfunctions.validateselect(search.value.id) and modelfunctions.validateselect(search.value.comparison) then
+ local res, err = pcall(function()
+ local connected = databaseconnect()
+ -- Get the rows from the DB
+ search.value.result = cfe({type="structure", value={}, label="List of Rows", seq=4 })
+ local table, column = string.match(search.value.id.value, "^([^.]*)%.(.*)")
+ if table then
+ local sql = "SELECT * FROM "..dbkam.escape(table).." WHERE "..dbkam.escape(column)..dbkam.escape(search.value.comparison.value).."'"..dbkam.escape(search.value.value.value).."'"
+ search.value.result.value = getselectresponse(sql)
+ end
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ search.errtxt = err
+ end
+ else
+ search.errtxt = "Failed to search database"
+ end
+ return search
+end
+
for n,f in pairs(dbmodelfunctions) do
mymodule[n] = function(...)
databasecreate()