Overview
Data modeling is not a simple process as it might look. Approaches to code like DDD (domain driven design) are completely based on working consciously over our domain entities to represent the business reliably. In this short course you will learn how to model your domain data using the tools and concepts that Functional Programming brings to the table.
Prerequisites
- Previous experience with Scala
- Previous experience with building micro-services-based architectures
What you'll learn
- The power of the Scala type system for data modeling.
Nothing
andUnit
. - Modeling domain entities with algebraic data types (ADTs). Product and sum types.
- Structural syntax derived at compile time for product types.
- Union types.
- Modeling errors in our domain using coproduct types.
- Modeling domain behaviors (business logic) as pure functions.
- Modeling domain behaviors (business logic) as ADTs (algebras).
- Functional data types for representing concerns over over our data.
- Leveraging immutability within our domain.
- Using optics to read and modify immutable domain data.
- Refining our domain types for a more precise representation of the business elements.
- Removing the need for testing invariants with refined types.
- Inline classes.
- Referential transparency and purity across all our domain.
- Determinism.