From 2511e18d694e6599f12dd9d0f8f00bba98377129 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 17 Oct 2022 14:42:53 +0600 Subject: [PATCH] AbstractExposedWriteCRUDRepo#createAndInsertId now is optional and returns nullable value --- CHANGELOG.md | 4 ++++ .../exposed/AbstractExposedWriteCRUDRepo.kt | 20 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f85e97d9a0..ceb2dccd838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.13.1 +* `Repos`: + * `Exposed`: + * `AbstractExposedWriteCRUDRepo#createAndInsertId` now is optional and returns nullable value + ## 0.13.0 **ALL DEPRECATIONS HAVE BEEN REMOVED** diff --git a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt index 1440b5cfaf1..50530bfd24f 100644 --- a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt +++ b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt @@ -27,8 +27,24 @@ abstract class AbstractExposedWriteCRUDRepo( protected abstract fun InsertStatement.asObject(value: InputValueType): ObjectType - protected abstract fun update(id: IdType, value: InputValueType, it: UpdateBuilder) - protected abstract fun createAndInsertId(value: InputValueType, it: InsertStatement): IdType + /** + * @param id Can be null only if [createAndInsertId] have returned null (it can be useful when you have + * autoincrement identifier) + * @param it Will be [UpdateStatement] when it is called from [update] method or [InsertStatement] from the [create] + * one. Anyway, it is main method where you should put the logic of table filling by [value] data + * + * @see createAndInsertId + */ + protected abstract fun update(id: IdType?, value: InputValueType, it: UpdateBuilder) + + /** + * Override this method to interact with [it] ([InsertStatement]) and put there new id with [IdType]. + * + * By default, have null value due to the fact that in the most cases users have [autoIncrement]ing id columns + * + * @return In case when id for the model has been created new [IdType] should be returned + */ + protected abstract fun createAndInsertId(value: InputValueType, it: InsertStatement): IdType? protected open fun insert(value: InputValueType, it: InsertStatement) { val id = createAndInsertId(value, it)