ash_double_entry/lib/balance/balance.ex

46 lines
1.2 KiB
Elixir
Raw Normal View History

defmodule AshDoubleEntry.Balance do
2023-08-19 16:17:07 +12:00
@moduledoc """
An extension for creating a double entry ledger balance. See the getting started guide for more.
"""
@balance %Spark.Dsl.Section{
name: :balance,
schema: [
pre_check_identities_with: [
2024-04-02 10:21:49 +13:00
type: {:spark, Ash.Domain},
doc: "A domain to use to precheck generated identities. Required by certain data layers."
],
transfer_resource: [
type: {:spark, Ash.Resource},
doc: "The resource used for transfers",
required: true
],
account_resource: [
type: {:spark, Ash.Resource},
doc: "The resource used for accounts",
required: true
2023-12-06 13:49:23 +13:00
],
money_composite_type?: [
type: :boolean,
doc: "Whether the balance is stored as a composite type.",
default: true
],
data_layer_can_add_money?: [
type: :boolean,
doc: "Whether or not the data layer supports adding money.",
default: true
]
]
}
@sections [@balance]
@transformers [
AshDoubleEntry.Balance.Transformers.AddStructure
]
use Spark.Dsl.Extension,
sections: @sections,
transformers: @transformers
end