Skip to content

Commit 58f4fc0

Browse files
author
Joakim Reinert
committed
streamline CUD methods by using tx = nil default assignment
1 parent 4e48aca commit 58f4fc0

1 file changed

Lines changed: 16 additions & 41 deletions

File tree

src/crecto/repo.cr

Lines changed: 16 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ module Crecto
234234
# user = User.new
235235
# Repo.insert(user)
236236
# ```
237-
def insert(queryable_instance, tx : DB::Transaction?)
237+
def insert(queryable_instance, tx : DB::Transaction? = nil)
238238
changeset = queryable_instance.class.changeset(queryable_instance)
239239
return changeset unless changeset.valid?
240240

@@ -263,19 +263,15 @@ module Crecto
263263
changeset
264264
end
265265

266-
def insert(queryable_instance)
267-
insert(queryable_instance, nil)
268-
end
269-
270266
# Insert a changeset instance into the data store.
271267
#
272268
# ```
273269
# user = User.new
274270
# changeset = User.changeset(user)
275271
# Repo.insert(changeset)
276272
# ```
277-
def insert(changeset : Crecto::Changeset::Changeset)
278-
insert(changeset.instance)
273+
def insert(changeset : Crecto::Changeset::Changeset, tx : DB::Transaction? = nil)
274+
insert(changeset.instance, tx)
279275
end
280276

281277
# Insert a schema instance into the data store or raise if the resulting
@@ -299,16 +295,16 @@ module Crecto
299295
# changeset = User.changeset(user)
300296
# Repo.insert!(changeset)
301297
# ```
302-
def insert!(changeset : Crecto::Changeset::Changeset)
303-
insert!(changeset.instance)
298+
def insert!(changeset : Crecto::Changeset::Changeset, tx : DB::Transaction? = nil)
299+
insert!(changeset.instance, tx)
304300
end
305301

306302
# Update a shema instance in the data store.
307303
#
308304
# ```
309305
# Repo.update(user)
310306
# ```
311-
def update(queryable_instance, tx : DB::Transaction?)
307+
def update(queryable_instance, tx : DB::Transaction? = nil)
312308
changeset = queryable_instance.class.changeset(queryable_instance)
313309
return changeset unless changeset.valid?
314310

@@ -331,17 +327,13 @@ module Crecto
331327
changeset
332328
end
333329

334-
def update(queryable_instance)
335-
update(queryable_instance, nil)
336-
end
337-
338330
# Update a changeset instance in the data store.
339331
#
340332
# ```
341333
# Repo.update(changeset)
342334
# ```
343-
def update(changeset : Crecto::Changeset::Changeset)
344-
update(changeset.instance)
335+
def update(changeset : Crecto::Changeset::Changeset, tx : DB::Transaction? = nil)
336+
update(changeset.instance, tx)
345337
end
346338

347339
# Update a schema instance in the data store or raise if the resulting
@@ -362,8 +354,8 @@ module Crecto
362354
# ```
363355
# Repo.update(changeset)
364356
# ```
365-
def update!(changeset : Crecto::Changeset::Changeset)
366-
update!(changeset.instance)
357+
def update!(changeset : Crecto::Changeset::Changeset, tx : DB::Transaction? = nil)
358+
update!(changeset.instance, tx)
367359
end
368360

369361
# Update multipile records with a single query
@@ -372,28 +364,20 @@ module Crecto
372364
# query = Crecto::Repo::Query.where(name: "Ted", count: 0)
373365
# Repo.update_all(User, query, {count: 1, date: Time.now})
374366
# ```
375-
def update_all(queryable, query, update_hash : Hash, tx : DB::Transaction?)
367+
def update_all(queryable, query, update_hash : Hash, tx : DB::Transaction? = nil)
376368
config.adapter.run(tx || config.get_connection, :update_all, queryable, query, update_hash)
377369
end
378370

379-
def update_all(queryable, query, update_hash : Hash)
380-
update_all(queryable, query, update_hash, nil)
381-
end
382-
383-
def update_all(queryable, query, update_hash : NamedTuple, tx : DB::Transaction?)
371+
def update_all(queryable, query, update_hash : NamedTuple, tx : DB::Transaction? = nil)
384372
update_all(queryable, query, update_hash.to_h, tx)
385373
end
386374

387-
def update_all(queryable, query, update_hash : NamedTuple)
388-
update_all(queryable, query, update_hash, nil)
389-
end
390-
391375
# Delete a shema instance from the data store.
392376
#
393377
# ```
394378
# Repo.delete(user)
395379
# ```
396-
def delete(queryable_instance, tx : DB::Transaction?)
380+
def delete(queryable_instance, tx : DB::Transaction? = nil)
397381
changeset = queryable_instance.class.changeset(queryable_instance)
398382
return changeset unless changeset.valid?
399383

@@ -410,17 +394,13 @@ module Crecto
410394
changeset
411395
end
412396

413-
def delete(queryable_instance)
414-
delete(queryable_instance, nil)
415-
end
416-
417397
# Delete a changeset instance from the data store.
418398
#
419399
# ```
420400
# Repo.delete(changeset)
421401
# ```
422-
def delete(changeset : Crecto::Changeset::Changeset)
423-
delete(changeset.instance)
402+
def delete(changeset : Crecto::Changeset::Changeset, tx : DB::Transaction? = nil)
403+
delete(changeset.instance, tx)
424404
end
425405

426406
# Delete a schema instance from the data store or raise if the resulting
@@ -451,19 +431,14 @@ module Crecto
451431
# query = Crecto::Repo::Query.where(name: "Fred")
452432
# Repo.delete_all(User, query)
453433
# ```
454-
def delete_all(queryable, query : Query?, tx : DB::Transaction?)
455-
query = Query.new if query.nil?
434+
def delete_all(queryable, query : Query = Query.new, tx : DB::Transaction? = nil)
456435
check_dependents(queryable, query, tx)
457436
result = config.adapter.run(tx || config.get_connection, :delete_all, queryable, query)
458437
if tx.nil? && config.adapter == Crecto::Adapters::Postgres
459438
result.as(DB::ResultSet).close if result.is_a?(DB::ResultSet)
460439
end
461440
end
462441

463-
def delete_all(queryable, query = Query.new)
464-
delete_all(queryable, query, nil)
465-
end
466-
467442
# Run aribtrary sql queries. `query` will cast the output as that
468443
# object. In this example, `query` will try to cast the
469444
# output as `User`. If query results happen to error nil is

0 commit comments

Comments
 (0)