Note That money_sql is supported on Elixir 1.11 and later only.
This is the changelog for Money_SQL v1.9.2 released on October 1st, 2023.
- Return an error is loading invalid amounts such as
InfandNaN. Thanks to @dhedlund for the report and PR. Closes #34.
This is the changelog for Money_SQL v1.9.2 released on June 17th, 2022.
Please ensure that if you are using Ecto embedded schemas that include a money type that it is configured with the type Money.Ecto.Map.Type, NOT Money.Ecto.Composite.Type.
In previous releases the misconfiguration of the type worked by accident. In this release and subsequent releases you will likely see an exception like ** (Protocol.UndefinedError) protocol Jason.Encoder not implemented for {"USD", Decimal.new("50.00")} of type Tuple. This is most likely an indication of type misconfiguration in an embedded schema.
- Fixes dumping and loading of
Money.Ecto.Map.Typewhen used in embedded schemas. Many thanks to @redrabbit for the issue and the PR. Closes #32.
This is the changelog for Money_SQL v1.9.1 released on May 12th, 2022.
- Fixes casting a map when the
"amount"isnil. Thanks to @treere for the report and PR. Closes #30.
This is the changelog for Money_SQL v1.9.0 released on April 28th, 2022.
- Adds
Money.Ecto.Query.APIquery helpers to simplify Ecto queries involving money columns. Thanks very much to @am-kantox for the excellent suggestion and PR.
This is the changelog for Money_SQL v1.8.0 released on December 26th, 2022.
-
Adds migrations and SQL functions to support
minandmaxaggregate functions for Postgres when using themoney_with_currencycomposite data type. The new mix task ismoney.gen.postgres.min_max_functions. -
Renames the migration task
money.gen.postgres.aggregate_functionstomoney.gen.postgres.sum_functionto better reflect its intent. This change affects only new installations. It has no effect on pre-existing generated migrations.
This is the changelog for Money_SQL v1.7.3 released on December 18th, 2022.
- WHen loading money from the database with the
Money.Ecto.Map.Typetype, do not do localized parsing of the amount. The amount is always saved usingDecimal.to_string/1and therefore is not localized. It must not be parsed with localization on loading.
This is the changelog for Money_SQL v1.7.2 released on August 27th, 2022.
- Makes the aggregate functions parallel-safe which provides up to 100% speed improvement. Thanks to @milangupta1 for the PR.
This is the changelog for Money_SQL v1.7.1 released on July 8th, 2022.
- Fixes casting a money map when the currency is
nil. Thanks to @frahugo for the report. Closes #24.
This is the changelog for Money_SQL v1.7.0 released on May 21st, 2022.
- Adds the module
Money.Validationto provide Ecto Changeset validations. In particular it addsMoney.Validation.validate_money/3which behaves exactly likeEcto.Changeset.validate_number/3only fort:Money.t/0types.
This is the changelog for Money_SQL v1.6.0 released on December 31st, 2021.
Note That money_sql is now supported on Elixir 1.10 and later only.
t:Money.Ecto.Composite.Typeandt:Money.Ecto.Map.Typenow return the exception module when there is an error incast/1. For example:
iex> Money.Ecto.Composite.Type.cast("") ==
{:error,
[
exception: Money.InvalidAmountError,
message: "Amount cannot be converted to a number: \"\""
]}The expected exceptions are:
Money.InvalidAmountErrorMoney.UnknownCurrencyErrorMoney.ParseError
Thanks to @DaTrader for the enhancement request.
This is the changelog for Money_SQL v1.5.2 released on December 13th, 2021.
Note That money_sql is now supported on Elixir 1.10 and later only.
- Fixes
c:Ecto.ParameterizedType.embed_as/2callback for theEcto.ParameterizedTypebehaviour. Thanks to @nseantanly for the report and the PR.
This is the changelog for Money_SQL v1.5.1 released on December 8th, 2021.
Note That money_sql is now supported on Elixir 1.10 and later only.
-
Implements
c:Ecto.ParameterizedType.equal?/3callback for theEcto.ParameterizedTypebehaviour. Thanks to @namhoangyojee for the report and the PR. -
Adds
@impl Ecto.ParamaterizedTypeto the relevant callbacks.
This is the changelog for Money_SQL v1.5.0 released on September 25th, 2021.
-
Adds a
+operator for the Postgres type:money_with_currency -
The name of the migration to create the
:money_with_currencytype has shortened to bemoney.gen.postgres.money_with_currency
This is the changelog for Money_SQL v1.4.5 released on June 3rd, 2021.
- Remove conditional compilation in
Money.Ecto.Composite.Type- the type is alwaysEcto.ParameterizedType.
This is the changelog for Money_SQL v1.4.4 released on March 18th, 2021.
- Don't use
is_struct/1guard to support compatibility on older Elixir releases
This is the changelog for Money_SQL v1.4.3 released on February 17th, 2021.
- Don't propogate a
:defaultoption into thet:Moneyfrom the schema. Fixes #14. Thanks to @emaiax.
This is the changelog for Money_SQL v1.4.2 released on February 12th, 2021.
- Dumping/loading
nilreturns{:ok, nil}. Thanks to @morinap.
This is the changelog for Money_SQL v1.4.1 released on February 11th, 2021.
- Casting
nilreturns{:ok, nil}. Thanks to @morinap.
This is the changelog for Money_SQL v1.4.0 released on February 10th, 2021.
-
Fix parsing error handling in
Money.Ecto.Composite.Type.cast/2. Thanks to @NikitaAvvakumov. Closes #10. -
Fix casting localized amounts. Thanks to @olivermt. Closes #11.
- Changes
Money.Ecto.Composite.TypeandMoney.Ecto.Map.Typeto beParameterizedType. As a result, Ecto 3.5 or later is required. This change allows configuration of format options for the:money_with_currencyto added as parameters in the Ecto schema. For the example schema:
defmodule Organization do
use Ecto.Schema
@primary_key false
schema "organizations" do
field :payroll, Money.Ecto.Composite.Type
field :tax, Money.Ecto.Composite.Type, fractional_digits: 4
field :name, :string
field :employee_count, :integer
timestamps()
end
endThe field :tax will be instantiated as a Money.t with :format_options of fractional_digits: 4.
This is the changelog for Money_SQL v1.3.1 released on September 30th, 2020.
- Fixes compatibility with both
Decimalversion1.xand2.x. Thanks to @doughsay and @coladarci for the report. Closes #8.
This is the changelog for Money_SQL v1.3.0 released on January 30th, 2020.
- Updates to
ex_moneyversion5.0. Thanks to @morgz
This is the changelog for Money_SQL v1.2.1 released on November 3rd, 2019.
-
Fixes
Money.Ecto.Composite.TypeandMoney.Ecto.Map.Typeby ensuring theload/1andcast/1callbacks conform to their typespecs. Thanks to @bgracie. Closes #4 and #5. -
Fixes the migration templates for
money.gen.postgres.aggregate_functionsto usenumericintermediate types rather thannumeric(20,8). For current installations it should be enough to runmix money.gen.postgres.aggregate_functionsagain followed bymix ecto.migrateto install the corrected aggregate function.
This is the changelog for Money_SQL v1.2.0 released on November 2nd, 2019.
- Removes the precision specification from intermediate results of the
sumaggregate function for Postgres.
- Adds
equal?/2callbacks to theMoney.Ecto.Composite.TypeandMoney.Ecto.Map.Typeforecto_sqlversion 3.2
This is the changelog for Money_SQL v1.1.0 released on August 22nd, 2019.
- Renames the migration that generator that creates the Postgres composite type to be more meaningful.
- Correctly generate and execute migrations. Fixes #1 and #2. Thanks to @davidsulc, @KungPaoChicken.
This is the changelog for Money_SQL v1.0.0 released on July 8th, 2019.
- Initial release. Extracted from ex_money