ash_postgres/test/support/multitenancy/resources/post.ex

46 lines
1 KiB
Elixir
Raw Normal View History

2020-10-29 15:26:45 +13:00
defmodule AshPostgres.MultitenancyTest.Post do
@moduledoc false
use Ash.Resource,
data_layer: AshPostgres.DataLayer,
authorizers: [Ash.Policy.Authorizer]
policies do
policy always() do
authorize_if(always())
end
policy action(:update_with_policy) do
# this is silly, but we want to force it to make a query
authorize_if(expr(exists(self, true)))
end
end
2020-10-29 15:26:45 +13:00
attributes do
2021-01-13 14:27:39 +13:00
uuid_primary_key(:id, writable?: true)
2021-01-13 14:22:28 +13:00
attribute(:name, :string)
2020-10-29 15:26:45 +13:00
end
actions do
2022-04-20 03:08:28 +12:00
defaults([:create, :read, :update, :destroy])
update(:update_with_policy)
2020-10-29 15:26:45 +13:00
end
postgres do
table "multitenant_posts"
repo AshPostgres.TestRepo
end
multitenancy do
# Tells the resource to use the data layer
# multitenancy, in this case separate postgres schemas
2021-01-13 14:22:28 +13:00
strategy(:context)
2020-10-29 15:26:45 +13:00
end
relationships do
2021-01-13 14:22:28 +13:00
belongs_to(:org, AshPostgres.MultitenancyTest.Org)
belongs_to(:user, AshPostgres.MultitenancyTest.User)
has_one(:self, __MODULE__, destination_attribute: :id, source_attribute: :id)
2020-10-29 15:26:45 +13:00
end
end