49 lines
1.7 KiB
Elixir
49 lines
1.7 KiB
Elixir
defmodule Mv.Membership do
|
|
@moduledoc """
|
|
Ash Domain for membership management.
|
|
|
|
## Resources
|
|
- `Member` - Club members with personal information and custom field values
|
|
- `CustomFieldValue` - Dynamic custom field values attached to members
|
|
- `CustomField` - Schema definitions for custom fields
|
|
|
|
## Public API
|
|
The domain exposes these main actions:
|
|
- Member CRUD: `create_member/1`, `list_members/0`, `update_member/2`, `destroy_member/1`
|
|
- Custom field value management: `create_custom_field_value/1`, `list_custom_field_values/0`, etc.
|
|
- Custom field management: `create_custom_field/1`, `list_custom_fields/0`, etc.
|
|
|
|
## Admin Interface
|
|
The domain is configured with AshAdmin for management UI.
|
|
"""
|
|
use Ash.Domain,
|
|
extensions: [AshAdmin.Domain, AshPhoenix]
|
|
|
|
admin do
|
|
show? true
|
|
end
|
|
|
|
resources do
|
|
resource Mv.Membership.Member do
|
|
define :create_member, action: :create_member
|
|
define :list_members, action: :read
|
|
define :update_member, action: :update_member
|
|
define :destroy_member, action: :destroy
|
|
end
|
|
|
|
resource Mv.Membership.CustomFieldValue do
|
|
define :create_custom_field_value, action: :create
|
|
define :list_custom_field_values, action: :read
|
|
define :update_custom_field_value, action: :update
|
|
define :destroy_custom_field_value, action: :destroy
|
|
end
|
|
|
|
resource Mv.Membership.CustomField do
|
|
define :create_custom_field, action: :create
|
|
define :list_custom_fields, action: :read
|
|
define :update_custom_field, action: :update
|
|
define :destroy_custom_field, action: :destroy_with_values
|
|
define :prepare_custom_field_deletion, action: :prepare_deletion, args: [:id]
|
|
end
|
|
end
|
|
end
|