2023-08-06 16:27:33 +12:00
|
|
|
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.
|
|
|
|
"""
|
|
|
|
|
2023-08-06 16:27:33 +12:00
|
|
|
@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."
|
2023-08-06 16:27:33 +12:00
|
|
|
],
|
|
|
|
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
|
2024-04-30 07:40:06 +12:00
|
|
|
],
|
|
|
|
data_layer_can_add_money?: [
|
|
|
|
type: :boolean,
|
|
|
|
doc: "Whether or not the data layer supports adding money.",
|
|
|
|
default: true
|
2023-08-06 16:27:33 +12:00
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
@sections [@balance]
|
|
|
|
|
|
|
|
@transformers [
|
|
|
|
AshDoubleEntry.Balance.Transformers.AddStructure
|
|
|
|
]
|
|
|
|
|
|
|
|
use Spark.Dsl.Extension,
|
|
|
|
sections: @sections,
|
|
|
|
transformers: @transformers
|
|
|
|
end
|