ash_postgres/lib/ash_postgres.ex

52 lines
1.7 KiB
Elixir
Raw Normal View History

2019-12-05 03:58:20 +13:00
defmodule AshPostgres do
2019-12-06 07:45:42 +13:00
@moduledoc """
A postgres extension library for `Ash`.
2019-12-06 07:45:42 +13:00
`AshPostgres.DataLayer` provides a DataLayer, and a DSL extension to configure that data layer.
2019-12-06 07:45:42 +13:00
The dsl extension exposes the `postgres` section. See: `AshPostgres.DataLayer.postgres/1` for more.
2019-12-06 07:45:42 +13:00
"""
2020-05-03 07:06:52 +12:00
alias Ash.Dsl.Extension
2019-12-06 07:45:42 +13:00
2020-09-20 10:08:09 +12:00
@doc "The configured repo for a resource"
2019-11-27 11:33:52 +13:00
def repo(resource) do
2020-06-28 07:11:28 +12:00
Extension.get_opt(resource, [:postgres], :repo, nil, true)
2020-01-18 06:24:07 +13:00
end
2020-05-03 07:06:52 +12:00
2020-09-20 10:08:09 +12:00
@doc "The configured table for a resource"
def table(resource) do
2020-06-28 07:11:28 +12:00
Extension.get_opt(resource, [:postgres], :table, nil, true)
2020-05-03 07:06:52 +12:00
end
@doc "Whether or not the resource should be included when generating migrations"
def migrate?(resource) do
Extension.get_opt(resource, [:postgres], :migrate?, nil, true)
end
2020-09-20 10:08:09 +12:00
@doc "A stringified version of the base_filter, to be used in a where clause when generating unique indexes"
def base_filter_sql(resource) do
Extension.get_opt(resource, [:postgres], :base_filter_sql, nil)
end
@doc "Skip generating unique indexes when generating migrations"
def skip_unique_indexes?(resource) do
Extension.get_opt(resource, [:postgres], :skip_unique_indexes?, [])
end
2020-10-29 15:26:45 +13:00
@doc "The template for a managed tenant"
def manage_tenant_template(resource) do
Extension.get_opt(resource, [:postgres, :manage_tenant], :template, nil)
end
@doc "Whether or not to create a tenant for a given resource"
def manage_tenant_create?(resource) do
Extension.get_opt(resource, [:postgres, :manage_tenant], :create?, false)
end
@doc "Whether or not to update a tenant for a given resource"
def manage_tenant_update?(resource) do
Extension.get_opt(resource, [:postgres, :manage_tenant], :update?, false)
end
2019-10-31 04:13:22 +13:00
end