diff options
Diffstat (limited to 'sqlite.cr')
-rw-r--r-- | sqlite.cr | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/sqlite.cr b/sqlite.cr index 7df496b..4cca647 100644 --- a/sqlite.cr +++ b/sqlite.cr @@ -50,18 +50,18 @@ class Database class Statement def initialize(db, query) bytes = query.to_slice - Database.check SQLite.prepare db.ref, bytes, bytes.size, + Database.check SQLite.prepare db, bytes, bytes.size, out @ref, out @tail end - def ref - @ref - end - def step : LibC::Int SQLite.step @ref end + def row + Row.new @ref + end + def finalize Database.check SQLite.finalize @ref end @@ -102,20 +102,19 @@ class Database self.exec SCHEMA do end self.exec "PRAGMA user_version = #{MIGRATIONS.size}" do end end + rescue ex + self.finalize + raise ex end end - def ref - @ref - end - def exec(query : String) - stmt = Statement.new self, query + stmt = Statement.new @ref, query loop do rc = stmt.step case rc when SQLite::ROW - yield Row.new stmt.ref + yield stmt.row when SQLite::DONE break else @@ -124,6 +123,14 @@ class Database end end + def members + result = [] of Tuple(String, String, String) + self.exec "SELECT nick, opennic, icann FROM member" do |row| + result << {row[0].text, row[1].text, row[2].text} + end + result + end + def finalize Database.check SQLite.close @ref end |