Skip to content

v3.6.0

Latest
Compare
Choose a tag to compare
@idugalic idugalic released this 15 Dec 12:00
· 19 commits to main since this release

Version 3.6.0 is a reactive and a multiplatform version of fmodel libraries optimized for Event sourcing, CQRS, and Domain Modeling.

Maven coordinates

 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>domain</artifactId>
    <version>3.6.0</version>
 </dependency>

 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>application-vanilla</artifactId>
    <version>3.6.0</version>
 </dependency>
 
 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>application-arrow</artifactId>
    <version>3.6.0</version>
 </dependency>

In this release, we have introduced a new component on the application layer EphemeralView:

A view that is built "on the fly" and not maintained/materialized.
Potential use cases include:

  • Lightweight aggregation for ad-hoc analysis
  • Development and prototyping read models
  • Building strongly consistent read models
  • Supporting the "read your own rights" guarantee

The main algorithm is as follows:

suspend fun <S, E, Q, EV> EV.handle(query: Q): S where EV : ViewStateComputation<S, E>, EV : EphemeralViewRepository<E, Q> =
    query.fetchEvents().fold(initialState) { s, e -> evolve(s, e) }

Events of type E are fetched based on a query Q, which are then used to build the respective view IView<S, E>. The result of that computation S is returned to the caller.

Thank you @DomenicDev for your contribution! You show that we can extend fmodel to better fit our specific requirements, by composing domain components in a different way. EphemeralView is a common use case, so we include it in the library. Looking forward to what is next? :)

The full release notes:

What's Changed

  • Update dependency org.jetbrains.kotlin.multiplatform to v2 by @renovate in #294
  • Update actions/checkout digest to a5ac7e5 by @renovate in #293
  • Update kotest to v5.9.1 by @renovate in #297
  • Update dependency io.kotest.multiplatform to v5.9.1 by @renovate in #296
  • Update plugin org.jetbrains.kotlinx.binary-compatibility-validator to v0.15.1 by @renovate in #302
  • Update dependency gradle to v8.9 by @renovate in #295
  • Update actions/checkout action to v4.1.7 by @renovate in #298
  • Update actions/checkout digest to 692973e by @renovate in #299
  • Update gradle/gradle-build-action action to v3.4.2 by @renovate in #300
  • Update actions/upload-artifact action to v4.3.4 by @renovate in #301
  • Update gradle/gradle-build-action action to v3.5.0 by @renovate in #303
  • Revert "Update gradle/gradle-build-action action to v3.5.0" by @idugalic in #305
  • Revert "Update gradle/gradle-build-action action to v3.4.2" by @idugalic in #307
  • Revert "Update dependency gradle to v8.9" by @idugalic in #308
  • Update plugin org.jetbrains.kotlinx.binary-compatibility-validator to v0.16.0 by @renovate in #304
  • Update gradle/gradle-build-action action to v3.5.0 by @renovate in #306
  • Update dependency gradle to v8.9 by @renovate in #309
  • Update plugin org.jetbrains.kotlinx.binary-compatibility-validator to v0.16.2 by @renovate in #311
  • Update plugin org.jetbrains.kotlinx.binary-compatibility-validator to v0.16.3 by @renovate in #313
  • Update actions/upload-artifact action to v4.3.6 by @renovate in #312
  • Update gradle/actions action to v4 by @renovate in #314
  • Update actions/setup-java action to v4.2.2 by @renovate in #315
  • Update dependency org.jetbrains.kotlin.multiplatform to v2.0.10 by @renovate in #316
  • Update dependency gradle to v8.10 by @renovate in #317
  • Update actions/upload-artifact action to v4.4.3 by @renovate in #319
  • Update dependency gradle to v8.10.2 by @renovate in #320
  • Update actions/setup-java action to v4.4.0 by @renovate in #321
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.9.0 by @renovate in #323
  • Update actions/checkout action to v4.2.1 by @renovate in #324
  • Update actions/checkout digest to eef6144 by @renovate in #326
  • Update dependency io.kotest.multiplatform to v6 by @renovate in #325
  • Update dependency org.jetbrains.kotlin.multiplatform to v2.0.21 by @renovate in #318
  • Update actions/checkout action to v4.2.2 by @renovate in #329
  • Update actions/setup-java action to v4.5.0 by @renovate in #330
  • Update dependency gradle to v8.11 by @renovate in #332
  • Update dependency gradle to v8.11.1 by @renovate in #333
  • Update dependency org.jetbrains.kotlin.multiplatform to v2.1.0 by @renovate in #335
  • EphemeralView implementation by @DomenicDev in #338
  • Update dependency io.arrow-kt:arrow-core to v2 by @renovate in #336

New Contributors

Full Changelog: v3.5.1...v3.6.0