Commit Graph

19 Commits

Author SHA1 Message Date
Alexey Melnichuk 27f2f41cb4 Fix. Improve parameters patterns. (#2218)
E.g. now it handle queries like
```Lua
local sql = "select :J::text as value"
print(dbh:first_value(sql, {J='hello'}))
```
2017-04-22 10:18:10 -06:00
Alexey Melnichuk 571e42508f Fix. Use local `err` variable in `apply_param` (#2152) 2016-11-22 16:48:54 -07:00
Alexey Melnichuk 090f9b0d7b Add. Extend database API to support parameters. (#2086) 2016-11-17 11:41:16 -07:00
Alexey Melnichuk 0a0383db9a Add. Handler for SUBSCRIBE method for call flow application. (#1701)
* Add. Handler for SUBSCRIBE method for call flow application.

Usage:
1. Run form fs_cli `luarun call_flow_subscribe`
2. Create new call flow extension and set feature code to `flow+<EXTENSION>`(e.g. `flow+401`).
3. Set on the phone BLF key to `flow+401`

This code based on `mod_valet_parking`.

* Add. prevent running 2 copy of script.

Remove some unused vars and simplify implementation.

* Fix. Use correct protocol for send event.

* Fix. Do escape SQL arguments

* Fix. escape `+` sign in call flow extension.
2016-06-24 10:32:19 -06:00
Alexey Melnichuk 423e0ab503 Add. `role` to be able select database backend in constructor.
To configure use `database.backend` option
It can be a string value like `database.backend = 'native'`.
So it will always use same backend.
Or it can be a table value like
```Lua
database.backend = {
  main   = 'native';
  base64 = '';
}
```
Role `database.backend.main` is predefined and it equal to `native` if not set.
If there no role when Database class creates or role unknown role `main` is used
```Lua
dbh = Database.new('system') -- uses role `main`
dbh = Database.new('system', 'main') -- same as previews
dbh = Database.new('system', 'base64') -- uses role `base64`
dbh = Database.new('system', 'test')   -- uses role `main`
```
2016-03-25 10:04:48 +03:00
mafoo b7555579bf WhitespaceClean-resources/install/scripts
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:21:52 +00:00
Alexey Melnichuk 7e1481b747 Fix. FreeSWITCH also breaks loop if return string value which contain number.
```Lua
dbh:query(sql, function()
  return "1" -- breaks loop
end)
2016-02-26 14:17:28 +03:00
Alexey Melnichuk ebfcdc38be Fix. LuaSQL db backend breaks loop only on positive numbers. 2016-02-26 13:57:32 +03:00
Alexey Melnichuk c96a5bee48 Fix. ODBC db backend should breaks loop only when callback returns number ~= 0
```Lua
dbh:query(sql, function(row)
  -- return 0     -- should not break loop
  -- return true  -- should not break loop
  return 1 -- should break loop
end)
```
2016-02-26 13:52:27 +03:00
Alexey Melnichuk e784cb3d6f Fix. `unpack` moved to `table` in Lua 5.2 2016-02-20 15:22:28 +03:00
Alexey Melnichuk 5afec68fb1 Add. Support multiple database backends.
```Lua
local Database = require 'resources.functions.database'

-- Default backend configured via xml_handler.db_backend = 'native'
dbh = Database.new("system")

-- To use other backends you can use
dbh = Database.backend.luasql("system")
```
2016-02-19 17:03:45 +03:00
Alexey Melnichuk 871b632d49 Add. Lua part of fax_queue.
To poll active task you can run `luarun fax_queue_poll_once.lua`
2015-11-18 16:27:55 +03:00
markjcrane 71ea6a8328 Change the Database:query to make the fn optional which will make it more backwards compatible with current code. This fixes an issue with recent movement to the database class in call_forward.lua. 2015-11-10 17:04:42 -07:00
Alexey Melnichuk 6711b7aa8b Merge branch 'master' into intercept_load_balance
# Conflicts:
#	resources/install/scripts/intercept_group.lua
2015-11-10 12:30:45 +03:00
markjcrane 758d6b9f53 Add functions to the config require 'resources.functions.config' 2015-11-03 16:41:59 -07:00
Alexey Melnichuk 8bbf8d6777 Use local variables. 2015-10-25 09:57:20 +03:00
Alexey Melnichuk 5fab1a34f7 Add. Support intercept FIFO/CallCenter/Enterprise in load balancing mode.
Change. `intercept.lua` and `intercept_group.lua` merge in one `intercept.lua` file.
Call `intercept.lua` without arguments behave like `intercept_group.lua`.
2015-09-25 15:30:57 +04:00
Alexey Melnichuk 6304c470cf Fix. load `file_exists` function 2015-09-10 14:36:30 +04:00
Alexey Melnichuk ebb61f955c Add. database class
```Lua
local Database = require "resources.functions.database"
local dbh = Database.new('system')

--get the domain_uuid
if (domain_uuid == nil) and (domain_name ~= nil) then
  local sql = "SELECT domain_uuid FROM v_domains "
  sql = sql .. "WHERE domain_name='" .. domain_name .. "';"
  domain_uuid = dbh:first_value(sql)
end

local dbh_switch = Database.new('switch') -- check also SQLite file.

local row = dbh_switch:first_row(sql)
if row then
  ...
end
```
2015-09-10 14:29:13 +04:00