Skip to content

Commit

Permalink
close result sets
Browse files Browse the repository at this point in the history
  • Loading branch information
fridgerator committed Jan 1, 2017
1 parent 417c3d7 commit 24e2b75
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions src/crecto/repo.cr
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ module Crecto
return nil if q.nil?

results = queryable.from_rs(q.as(DB::ResultSet))
q.as(DB::ResultSet).close

if query.preloads.any?
add_preloads(results, queryable, query.preloads)
Expand All @@ -48,8 +49,10 @@ module Crecto
# users = Crecto::Repo.all(User)
# ```
def self.all(queryable, query = Query.new)
query = ADAPTER.run(:all, queryable, query).as(DB::ResultSet)
queryable.from_rs(query)
q = ADAPTER.run(:all, queryable, query).as(DB::ResultSet)
results = queryable.from_rs(q)
q.close
results
end

# Return a single insance of *queryable* by primary key with *id*.
Expand All @@ -58,8 +61,9 @@ module Crecto
# user = Repo.get(User, 1)
# ```
def self.get(queryable, id)
query = ADAPTER.run(:get, queryable, id).as(DB::ResultSet)
results = queryable.from_rs(query)
q = ADAPTER.run(:get, queryable, id).as(DB::ResultSet)
results = queryable.from_rs(q)
q.close
results.first if results.any?
end

Expand All @@ -69,8 +73,9 @@ module Crecto
# user = Repo.get_by(User, name: "fred", age: 21)
# ```
def self.get_by(queryable, **opts)
query = ADAPTER.run(:all, queryable, Query.where(**opts).limit(1)).as(DB::ResultSet)
results = queryable.from_rs(query)
q = ADAPTER.run(:all, queryable, Query.where(**opts).limit(1)).as(DB::ResultSet)
results = queryable.from_rs(q)
q.close
results.first if results.any?
end

Expand All @@ -93,6 +98,7 @@ module Crecto
changeset.add_error("insert_error", "Insert Failed")
else
new_instance = changeset.instance.class.from_rs(query.as(DB::ResultSet)).first
query.as(DB::ResultSet).close
changeset = new_instance.class.changeset(new_instance) if new_instance
end

Expand Down Expand Up @@ -128,6 +134,7 @@ module Crecto
changeset.add_error("update_error", "Update Failed")
else
new_instance = changeset.instance.class.from_rs(query.as(DB::ResultSet)).first
query.as(DB::ResultSet).close
changeset = new_instance.class.changeset(new_instance) if new_instance
end

Expand Down Expand Up @@ -169,6 +176,7 @@ module Crecto
changeset.add_error("delete_error", "Delete Failed")
else
new_instance = changeset.instance.class.from_rs(query.as(DB::ResultSet)).first
query.as(DB::ResultSet).close
changeset = new_instance.class.changeset(new_instance) if new_instance
end

Expand Down Expand Up @@ -204,8 +212,10 @@ module Crecto
# Repo.query(User, "select * from users where id > ?", [30])
# ```
def self.query(queryable, sql : String, params = [] of DbValue)
query = ADAPTER.run(:sql, sql, params).as(DB::ResultSet)
queryable.from_rs(query)
q = ADAPTER.run(:sql, sql, params).as(DB::ResultSet)
results = queryable.from_rs(q)
q.close
results
end

# Run aribtrary sql. `query` will pass a PG::ResultSet as
Expand Down

0 comments on commit 24e2b75

Please sign in to comment.