mirror of
https://github.com/ash-project/ash_postgres.git
synced 2024-09-21 05:53:18 +12:00
39 lines
886 B
Elixir
39 lines
886 B
Elixir
|
defmodule AshPostgres.Test.Author do
|
||
|
@moduledoc false
|
||
|
use Ash.Resource,
|
||
|
data_layer: AshPostgres.DataLayer
|
||
|
|
||
|
postgres do
|
||
|
table("authors")
|
||
|
repo(AshPostgres.TestRepo)
|
||
|
end
|
||
|
|
||
|
attributes do
|
||
|
uuid_primary_key(:id, writable?: true)
|
||
|
attribute(:first_name, :string)
|
||
|
attribute(:last_name, :string)
|
||
|
end
|
||
|
|
||
|
calculations do
|
||
|
calculate(:full_name, :string, expr(first_name <> " " <> last_name))
|
||
|
|
||
|
calculate(
|
||
|
:conditional_full_name,
|
||
|
:string,
|
||
|
expr(
|
||
|
if(
|
||
|
is_nil(first_name) or is_nil(last_name),
|
||
|
"(none)",
|
||
|
first_name <> " " <> last_name
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
|
||
|
calculate :param_full_name,
|
||
|
:string,
|
||
|
{AshPostgres.Test.Concat, keys: [:first_name, :last_name]} do
|
||
|
argument(:separator, :string, default: " ", constraints: [allow_empty?: true, trim?: false])
|
||
|
end
|
||
|
end
|
||
|
end
|