Mercurial Hosting > luan
annotate src/luan/modules/sql/Sql.luan @ 1407:1979cff9aad2
add sql/Web_query
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 20 Sep 2019 17:00:30 -0600 |
parents | 8d95711f6615 |
children |
rev | line source |
---|---|
1353
8d95711f6615
replace java() with require "java"
Franklin Schmidt <fschmidt@gmail.com>
parents:
1343
diff
changeset
|
1 require "java" |
1267 | 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() | |
1407 | 6 local range = Luan.range or error() |
1267 | 7 local Database = require "java:luan.modules.sql.Database" |
8 local Logging = require "luan:logging/Logging.luan" | |
9 local logger = Logging.logger "Sql" | |
10 | |
11 | |
12 local Sql = {} | |
13 | |
14 local mt = {} | |
15 | |
16 function mt.__gc(database) | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
17 if not database.is_closed() then |
1267 | 18 logger.error(database.created) |
19 database.close() | |
20 end | |
21 end | |
22 | |
23 function Sql.database(spec) | |
24 local database = {} | |
25 set_metatable(database,mt) | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
26 local java_database = Database.new(spec) |
1267 | 27 database.java = java_database |
28 database.created = new_error "not closed, created:" | |
1268
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
29 database.close = java_database.con.close |
725e52076f03
remove broken pooling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
30 database.is_closed = java_database.con.isClosed |
1267 | 31 database.update = java_database.update |
1341
a015a0b5c388
add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents:
1268
diff
changeset
|
32 database.set = java_database.set |
1267 | 33 |
34 function database.query(sql,...) | |
35 local rs = java_database.query(sql,...) | |
1407 | 36 local query = {} |
37 query.java = rs | |
38 | |
1267 | 39 local mt = {} |
40 function mt.__index(_,key) | |
41 local rtn = rs.getObject(key) | |
42 return not rs.wasNull() and rtn or nil | |
43 end | |
44 local result = {} | |
45 set_metatable(result,mt) | |
1407 | 46 function query.results() |
1267 | 47 if rs.isClosed() then |
48 return nil | |
49 end | |
50 if not rs.next() then | |
51 rs.close() | |
52 return nil | |
53 end | |
54 return result | |
1407 | 55 end |
56 | |
57 function query.column_names() | |
58 local meta = rs.getMetaData() | |
59 local names = {} | |
60 for i in range(1,meta.getColumnCount()) do | |
61 names[i] = meta.getColumnName(i) | |
62 end | |
63 return names | |
64 end | |
65 | |
66 return query | |
1267 | 67 end |
68 | |
69 return database | |
70 end | |
71 | |
72 return Sql |