diff --git a/CHANGELOG.md b/CHANGELOG.md index a223279e462..ceb2dccd838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 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/gradle.properties b/gradle.properties index 6934f01096a..845b5348644 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,5 +14,5 @@ crypto_js_version=4.1.1 # Project data group=dev.inmo -version=0.13.0 -android_code_version=158 +version=0.13.1 +android_code_version=159 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..289adb04f8b 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 open fun createAndInsertId(value: InputValueType, it: InsertStatement): IdType? = null protected open fun insert(value: InputValueType, it: InsertStatement) { val id = createAndInsertId(value, it)