diff --git a/spec/adapters/postgres_schema_spec.cr b/spec/adapters/postgres_schema_spec.cr index 34f17fe..3adf260 100644 --- a/spec/adapters/postgres_schema_spec.cr +++ b/spec/adapters/postgres_schema_spec.cr @@ -56,7 +56,9 @@ describe CQL::Schema do FROM information_schema.columns WHERE table_schema = 'public' AND table_name = '#{table}' AND column_name = '#{col}'; SQL - Example.db.query_one(query, as: Int32) + Example.exec_query do |conn| + conn.query_one(query, as: Int32) + end rescue exception Log.debug { exception } 0 @@ -68,7 +70,9 @@ describe CQL::Schema do query = <<-SQL SELECT 1 FROM pg_indexes WHERE tablename = '#{table}' AND indexname = '#{index}'; SQL - Example.db.query_one(query, as: Int32) + Example.exec_query do |conn| + conn.query_one(query, as: Int32) + end rescue exception 0 end diff --git a/spec/adapters/sqlite_schema_spec.cr b/spec/adapters/sqlite_schema_spec.cr index 60d6094..f0b7b9b 100644 --- a/spec/adapters/sqlite_schema_spec.cr +++ b/spec/adapters/sqlite_schema_spec.cr @@ -4,7 +4,9 @@ describe CQL::Schema do column_exists = ->(col : Symbol, table : Symbol) do begin query = "SELECT 1 FROM pragma_table_info('#{table}') WHERE name = '#{col}';\n" - result = Data.db.query_one(query, as: Int32) + result = Data.exec_query do |conn| + conn.query_one(query, as: Int32) + end result rescue exception 0 @@ -16,7 +18,9 @@ describe CQL::Schema do query = <<-SQL SELECT 1 FROM SQLite_master WHERE type = 'index' AND tbl_name = '#{table}' AND name = '#{index}'; SQL - result = Data.db.query_one(query, as: Int32) + result = Data.exec_query do |conn| + conn.query_one(query, as: Int32) + end result rescue exception 0 @@ -29,7 +33,9 @@ describe CQL::Schema do table = Data.customers.table_name.to_s check_query = "SELECT name FROM sqlite_master WHERE type='table' AND name='#{table}'" - name = Data.db.query_one(check_query, as: String) + name = Data.exec_query do |conn| + conn.query_one(check_query, as: Int32) + end name.should eq table end diff --git a/spec/table_spec.cr b/spec/table_spec.cr index 2d9f2ee..5734de6 100644 --- a/spec/table_spec.cr +++ b/spec/table_spec.cr @@ -50,7 +50,7 @@ describe CQL::Table do check_query = "SELECT name FROM sqlite_master WHERE type='table' AND name='#{table}'" expect_raises(DB::NoResultsError) do - TableDB.db.query_one(check_query, as: String) + TableDB.exec_query { |conn| conn.query_one(check_query, as: String) } end end end diff --git a/src/delete.cr b/src/delete.cr index 9889ecd..60e9de5 100644 --- a/src/delete.cr +++ b/src/delete.cr @@ -43,8 +43,8 @@ module CQL # ``` def commit query, params = to_sql - @schame.exec_query do |conn| - conn.exec query, args: params + @schema.exec_query do |conn| + conn.exec(query, args: params) end end diff --git a/src/insert.cr b/src/insert.cr index ce46e68..1740082 100644 --- a/src/insert.cr +++ b/src/insert.cr @@ -60,11 +60,11 @@ module CQL # Reset to ensure nothing else but the :id is returned @back = Array(Expression::Column).new query, params = back(:id).to_sql - @schame.exec_query do |conn| + @schema.exec_query do |conn| conn.query_one(query, args: params, as: type) end else - commit.last_insert_id + self.commit.last_insert_id end end @@ -87,7 +87,7 @@ module CQL # ``` def commit query, params = to_sql - @schame.exec_query do |conn| + @schema.exec_query do |conn| conn.exec(query, args: params) end rescue ex diff --git a/src/query.cr b/src/query.cr index b7dd58c..a6452c1 100644 --- a/src/query.cr +++ b/src/query.cr @@ -66,10 +66,9 @@ module CQL # ``` def all(as as_kind) query, params = to_sql - as_kind.from_rs - @schame.exec_query do |conn| - conn.query(query, args: params) + @schema.exec_query do |conn| + as_kind.from_rs(conn.query(query, args: params)) end end @@ -104,8 +103,7 @@ module CQL # ``` def first(as as_kind) query, params = to_sql - Log.debug { "Query: #{query}, Params: #{params}" } - @schame.exec_query do |conn| + @schema.exec_query do |conn| conn.query_one(query, args: params, as: as_kind) end end @@ -139,7 +137,7 @@ module CQL # ``` def get(as as_kind) query, params = to_sql - @schame.exec_query do |conn| + @schema.exec_query do |conn| conn.scalar(query, args: params, as: as_kind) end end @@ -155,7 +153,7 @@ module CQL # ``` def each(as as_kind, &) query, params = to_sql - @schame.exec_query do |conn| + @schema.exec_query do |conn| conn.query_each(query, args: params) do |result| yield as_kind.from_rs(result) end diff --git a/src/schema.cr b/src/schema.cr index 7f2f2fa..7210e92 100644 --- a/src/schema.cr +++ b/src/schema.cr @@ -110,17 +110,15 @@ module CQL # schema.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)") # ``` def exec(sql : String) - db = DB.open(@uri) - db.exec(sql) - ensure - db.close + DB.open(@uri) do |conn| + conn.exec(sql) + end end def exec_query(&) - db = DB.open(@uri) - yield db - ensure - db.close + DB.open(@uri) do |conn| + yield conn + end end # Creates a new query for the schema. @@ -217,10 +215,12 @@ module CQL sql_statements = alter_table.to_sql(@gen) Log.debug { sql_statements } - db.transaction do |tx| - cnn = tx.connection - sql_statements.split(";\n").each do |sql| - cnn.exec(sql) unless sql.empty? + exec_query do |conn| + conn.transaction do |tx| + cnn = tx.connection + sql_statements.split(";\n").each do |sql| + cnn.exec(sql) unless sql.empty? + end end end end diff --git a/src/update.cr b/src/update.cr index 36c5619..94f33ef 100644 --- a/src/update.cr +++ b/src/update.cr @@ -48,8 +48,8 @@ module CQL # ``` def commit query, params = to_sql - @schame.exec_query do |conn| - conn.exec query, args: params + @schema.exec_query do |conn| + conn.exec(query, args: params) end end