Packages

phoenix_kit

1.7.69
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib phoenix_kit users admin_note.ex
Raw

lib/phoenix_kit/users/admin_note.ex

defmodule PhoenixKit.Users.AdminNote do
@moduledoc """
Schema for admin notes about users.
Admin notes allow administrators to record internal notes about users that are
only visible to other administrators. This enables admin-to-admin communication
about user accounts.
## Fields
- `user_uuid` - The user being noted about
- `author_uuid` - The admin who wrote the note
- `content` - The note content
- `inserted_at` - When the note was created
- `updated_at` - When the note was last updated
## Permissions
- Only admins can view, create, edit, and delete notes
- Any admin can edit or delete any note
- Notes show author information for accountability
"""
use Ecto.Schema
import Ecto.Changeset
@type t :: %__MODULE__{
uuid: UUIDv7.t() | nil,
user_uuid: UUIDv7.t() | nil,
author_uuid: UUIDv7.t() | nil,
content: String.t(),
inserted_at: DateTime.t(),
updated_at: DateTime.t()
}
@primary_key {:uuid, UUIDv7, autogenerate: true}
schema "phoenix_kit_admin_notes" do
belongs_to :user, PhoenixKit.Users.Auth.User,
foreign_key: :user_uuid,
references: :uuid,
type: UUIDv7
belongs_to :author, PhoenixKit.Users.Auth.User,
foreign_key: :author_uuid,
references: :uuid,
type: UUIDv7
field :content, :string
timestamps(type: :utc_datetime)
end
@doc """
Creates a changeset for a new admin note.
"""
def changeset(admin_note, attrs) do
admin_note
|> cast(attrs, [:user_uuid, :author_uuid, :content])
|> validate_required([:user_uuid, :author_uuid, :content])
|> validate_length(:content, min: 1, max: 10_000)
|> foreign_key_constraint(:user_uuid)
|> foreign_key_constraint(:author_uuid)
end
@doc """
Creates a changeset for updating an existing admin note.
Only the content can be updated.
"""
def update_changeset(admin_note, attrs) do
admin_note
|> cast(attrs, [:content])
|> validate_required([:content])
|> validate_length(:content, min: 1, max: 10_000)
end
end