Mercurial Hosting > luan
annotate src/luan/modules/sql/Sql.luan @ 1268:725e52076f03
remove broken pooling
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 12 Nov 2018 03:54:04 -0700 |
parents | 9fa8b8389578 |
children | a015a0b5c388 |
rev | line source |
---|---|
1267 | 1 java() |
2 local Luan = require "luan:Luan.luan" | |
3 local error = Luan.error | |
4 local new_error = Luan.new_error or error() | |
5 local set_metatable = Luan.set_metatable or error() | |
6 local Database = require "java:luan.modules.sql.Database" | |
7 local Logging = require "luan:logging/Logging.luan" | |
8 local logger = Logging.logger "Sql" | |
9 | |
10 | |
11 local Sql = {} | |
12 | |
13 local mt = {} | |
14 | |
15 function mt.__gc(database) | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
16 if not database.is_closed() then |
1267 | 17 logger.error(database.created) |
18 database.close() | |
19 end | |
20 end | |
21 | |
22 function Sql.database(spec) | |
23 local database = {} | |
24 set_metatable(database,mt) | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
25 local java_database = Database.new(spec) |
1267 | 26 database.java = java_database |
27 database.created = new_error "not closed, created:" | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
28 database.close = java_database.con.close |
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
29 database.is_closed = java_database.con.isClosed |
1267 | 30 database.update = java_database.update |
31 | |
32 function database.query(sql,...) | |
33 local rs = java_database.query(sql,...) | |
34 local mt = {} | |
35 function mt.__index(_,key) | |
36 local rtn = rs.getObject(key) | |
37 return not rs.wasNull() and rtn or nil | |
38 end | |
39 local result = {} | |
40 set_metatable(result,mt) | |
41 return function() | |
42 if rs.isClosed() then | |
43 return nil | |
44 end | |
45 if not rs.next() then | |
46 rs.close() | |
47 return nil | |
48 end | |
49 return result | |
50 end | |
51 end | |
52 | |
53 return database | |
54 end | |
55 | |
56 return Sql |