defmodule Rivet.Ident.UserData do @moduledoc """ Schema for representing and working with a Ident.UserData. """ use TypedEctoSchema use Rivet.Ecto.Model import EctoEnum alias Rivet.Ident defenum(Types, available: 0, address: 2, profile: 4, toggles: 5, save: 6 ) typed_schema "user_datas" do belongs_to(:user, Ident.User, type: :binary_id, foreign_key: :user_id) field(:type, Types) field(:value, :map) timestamps() end use Rivet.Ecto.Collection, not_found: :atom, required: [:user_id, :type, :value], update: [:value], unique: [:type] end