Plugin | Uni Ecto

Uni Ecto Plugin offers a clean, extensible, and Elixir‑idiomatic way to add cross-cutting database behaviours. By moving from ad‑hoc macros to a standard behaviour -based plugin system, we reduce boilerplate, improve composability, and keep Ecto’s explicit philosophy intact. We invite the community to contribute plugins and feedback.

changeset = User.changeset(%User{}, %name: "Mary", email: "mary@example.com") :error, changeset = Repo.insert(changeset) changeset.errors #=> [email: "has already been taken", []]

Automatically translates C# primitive types, vectors, and classes into Elixir structs and Ecto types. uni ecto plugin

Internally, this uses fragment SQL if the UNI is stored as text, or separate generated columns.

: The plugin includes "Pulse" settings (Speed and Intensity) that allow the light to flicker or throb, adding a "living" quality to titles or logos. Key Technical Features Uni Ecto Plugin offers a clean, extensible, and

: Uni.Ecto isolates its distortion to the edges of visible imagery, making it incredibly responsive to custom shapes, logo paths, and typographic contours.

Unlike basic foreign key scoping ( WHERE tenant_id = ? ), the uni_ecto_plugin often supports (separate schemas or separate databases). It seamlessly switches between tenants at the connection level. changeset = User

defmodule MyApp.User do use Ecto.Schema use Uni.Ecto.Plugin, plugins: [ Uni.Plugin.SoftDelete, column: :deleted_at, Uni.Plugin.Encryption, fields: [:email], key: :app_key ]

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ SoftDelete │ │ Encryption │ │ AuditTrail │ │ Plugin │ │ Plugin │ │ Plugin │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ └──────────────────┼──────────────────┘ ▼ ┌──────────────────┐ │ Uni.Plugin.Engine│ (compile-time) └────────┬─────────┘ ▼ Your Ecto.Schema (with plugin calls)

In a true SaaS app, tenants are created on the fly via a signup form.

defmodule MyApp.Accounts.User do use UniEctoPlugin.Schema schema "users" do field :name, :string field :email, :string uni_timestamps() # Automatically injects audited timestamp fields end end Use code with caution. Advanced Use Cases Automated Soft Deletes