From 9310cff78765b2a8588aaa19e8fb10d6183f0979 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Wed, 22 Feb 2023 23:03:34 +0900 Subject: Read configuration file --- sqlite.cr | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'sqlite.cr') 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 -- cgit 1.4.1