mirror of
https://gitea.invidious.io/iv-org/shard-crystal-db.git
synced 2024-08-15 00:53:32 +00:00
add Connection#last_inserted_id
extract QueryMethods modules and use it in Database and Connection "add" finalize methods, but they cause GC warnings
This commit is contained in:
parent
1fb0b8a82b
commit
8c0313a306
6 changed files with 60 additions and 36 deletions
|
@ -12,6 +12,10 @@ class DummyDriver < DB::Driver
|
||||||
@last_statement = DummyStatement.new(self, query.split.map { |r| r.split ',' })
|
@last_statement = DummyStatement.new(self, query.split.map { |r| r.split ',' })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def last_insert_id : Int64
|
||||||
|
0
|
||||||
|
end
|
||||||
|
|
||||||
def perform_close
|
def perform_close
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,8 +18,17 @@ module DB
|
||||||
@closed
|
@closed
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# # :nodoc:
|
||||||
|
# def finalize
|
||||||
|
# close unless closed?
|
||||||
|
# end
|
||||||
|
|
||||||
abstract def prepare(query) : Statement
|
abstract def prepare(query) : Statement
|
||||||
|
|
||||||
|
include QueryMethods
|
||||||
|
|
||||||
|
abstract def last_insert_id : Int64
|
||||||
|
|
||||||
protected abstract def perform_close
|
protected abstract def perform_close
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,39 +31,6 @@ module DB
|
||||||
connection.prepare(query)
|
connection.prepare(query)
|
||||||
end
|
end
|
||||||
|
|
||||||
def query(query, *args)
|
include QueryMethods
|
||||||
prepare(query).query(*args)
|
|
||||||
end
|
|
||||||
|
|
||||||
def query(query, *args)
|
|
||||||
# CHECK prepare(query).query(*args, &block)
|
|
||||||
query(query, *args).tap do |rs|
|
|
||||||
begin
|
|
||||||
yield rs
|
|
||||||
ensure
|
|
||||||
rs.close
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def exec(query, *args)
|
|
||||||
prepare(query).exec(*args)
|
|
||||||
end
|
|
||||||
|
|
||||||
def scalar(query, *args)
|
|
||||||
prepare(query).scalar(*args)
|
|
||||||
end
|
|
||||||
|
|
||||||
def scalar(t, query, *args)
|
|
||||||
prepare(query).scalar(t, *args)
|
|
||||||
end
|
|
||||||
|
|
||||||
def scalar?(query, *args)
|
|
||||||
prepare(query).scalar?(*args)
|
|
||||||
end
|
|
||||||
|
|
||||||
def scalar?(t, query, *args)
|
|
||||||
prepare(query).scalar?(t, *args)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,6 +24,7 @@ module DB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require "./query_methods"
|
||||||
require "./database"
|
require "./database"
|
||||||
require "./driver"
|
require "./driver"
|
||||||
require "./connection"
|
require "./connection"
|
||||||
|
|
38
src/db/query_methods.cr
Normal file
38
src/db/query_methods.cr
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
module DB
|
||||||
|
module QueryMethods
|
||||||
|
def query(query, *args)
|
||||||
|
prepare(query).query(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def query(query, *args)
|
||||||
|
# CHECK prepare(query).query(*args, &block)
|
||||||
|
query(query, *args).tap do |rs|
|
||||||
|
begin
|
||||||
|
yield rs
|
||||||
|
ensure
|
||||||
|
rs.close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def exec(query, *args)
|
||||||
|
prepare(query).exec(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scalar(query, *args)
|
||||||
|
prepare(query).scalar(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scalar(t, query, *args)
|
||||||
|
prepare(query).scalar(t, *args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scalar?(query, *args)
|
||||||
|
prepare(query).scalar?(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def scalar?(t, query, *args)
|
||||||
|
prepare(query).scalar?(t, *args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -24,7 +24,7 @@ module DB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
raise "unreachable"
|
raise "no results"
|
||||||
end
|
end
|
||||||
|
|
||||||
def scalar?(*args)
|
def scalar?(*args)
|
||||||
|
@ -39,7 +39,7 @@ module DB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
raise "unreachable"
|
raise "no results"
|
||||||
end
|
end
|
||||||
|
|
||||||
def query(*args)
|
def query(*args)
|
||||||
|
@ -92,6 +92,11 @@ module DB
|
||||||
@closed
|
@closed
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# # :nodoc:
|
||||||
|
# def finalize
|
||||||
|
# close unless closed?
|
||||||
|
# end
|
||||||
|
|
||||||
# 1-based positional arguments
|
# 1-based positional arguments
|
||||||
protected def begin_parameters
|
protected def begin_parameters
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue