Uni Ecto acts as a "Universal Skin" (Ecto). It provides a standardized Plugin API that allows developers to swap underlying providers without rewriting business logic.
For a user-friendly approach, you can even pass a fantasy name as the first argument and manually specify the target fields for the error message to ensure it appears correctly in your Phoenix forms: uni ecto plugin
| Ecto Feature | UNI Plugin Support | |--------------|--------------------| | Changeset validation | Custom validate_uni/3 to check resolvability or format | | Preloading | Works with belongs_to_uni like normal associations | | Streams | UNI fields are streamed as structs, no extra overhead | | Multi-tenancy | UNI origin can act as tenant ID; plugin can scope queries automatically | | Migrations | add :customer_uni, :string + optional generated columns via uni_add_components/2 | Uni Ecto acts as a "Universal Skin" (Ecto)
...then the uni_ecto_plugin is your best friend. uni ecto plugin