Skip to content

Commit 66f1fbf

Browse files
author
morten.lund@maskon.no
committed
Merge branch 'main' of https://github.com/m0rt3nlund/ash_postgres into Partitioning-support
2 parents aea852e + 9b2a019 commit 66f1fbf

19 files changed

+962
-31
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,24 @@ See [Conventional Commits](https://www.conventionalcommits.org) for commit guide
55

66
<!-- changelog -->
77

8+
## [v2.5.5](https://github.com/ash-project/ash_postgres/compare/v2.5.4...v2.5.5) (2025-02-17)
9+
10+
11+
12+
13+
### Bug Fixes:
14+
15+
* ensure field names defaults to the field of the constraint
16+
17+
## [v2.5.4](https://github.com/ash-project/ash_postgres/compare/v2.5.3...v2.5.4) (2025-02-17)
18+
19+
20+
21+
22+
### Improvements:
23+
24+
* Add support for field names in idenitity constraints (#478)
25+
826
## [v2.5.3](https://github.com/ash-project/ash_postgres/compare/v2.5.2...v2.5.3) (2025-02-14)
927

1028

lib/data_layer.ex

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2336,7 +2336,7 @@ defmodule AshPostgres.DataLayer do
23362336
%Postgrex.Error{} = error,
23372337
stacktrace,
23382338
{:bulk_create, fake_changeset},
2339-
_resource
2339+
resource
23402340
) do
23412341
case Ecto.Adapters.Postgres.Connection.to_constraints(error, []) do
23422342
[] ->
@@ -2345,7 +2345,7 @@ defmodule AshPostgres.DataLayer do
23452345
constraints ->
23462346
{:error,
23472347
fake_changeset
2348-
|> constraints_to_errors(:insert, constraints)
2348+
|> constraints_to_errors(:insert, constraints, resource)
23492349
|> Ash.Error.to_ash_error()}
23502350
end
23512351
end
@@ -2398,7 +2398,12 @@ defmodule AshPostgres.DataLayer do
23982398
{:error, Ash.Error.to_ash_error(error, stacktrace)}
23992399
end
24002400

2401-
defp constraints_to_errors(%{constraints: user_constraints} = changeset, action, constraints) do
2401+
defp constraints_to_errors(
2402+
%{constraints: user_constraints} = changeset,
2403+
action,
2404+
constraints,
2405+
resource
2406+
) do
24022407
Enum.map(constraints, fn {type, constraint} ->
24032408
user_constraint =
24042409
Enum.find(user_constraints, fn c ->
@@ -2413,14 +2418,26 @@ defmodule AshPostgres.DataLayer do
24132418

24142419
case user_constraint do
24152420
%{field: field, error_message: error_message, type: type, constraint: constraint} ->
2416-
Ash.Error.Changes.InvalidAttribute.exception(
2417-
field: field,
2418-
message: error_message,
2419-
private_vars: [
2420-
constraint: constraint,
2421-
constraint_type: type
2422-
]
2423-
)
2421+
identities = Ash.Resource.Info.identities(resource)
2422+
table = AshPostgres.DataLayer.Info.table(resource)
2423+
2424+
identity =
2425+
Enum.find(identities, fn identity ->
2426+
"#{table}_#{identity.name}_index" == constraint
2427+
end)
2428+
2429+
field_names = if identity, do: identity.field_names || [field], else: [field]
2430+
2431+
Enum.map(field_names, fn field_name ->
2432+
Ash.Error.Changes.InvalidAttribute.exception(
2433+
field: field_name,
2434+
message: error_message,
2435+
private_vars: [
2436+
constraint: constraint,
2437+
constraint_type: type
2438+
]
2439+
)
2440+
end)
24242441

24252442
nil ->
24262443
Ecto.ConstraintError.exception(

lib/migration_generator/migration_generator.ex

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2317,22 +2317,23 @@ defmodule AshPostgres.MigrationGenerator do
23172317
Enum.find(
23182318
old_snapshot.attributes,
23192319
fn old_attribute ->
2320-
source_match =
2321-
Enum.find_value(attributes_to_rename, old_attribute.source, fn {new, old} ->
2320+
renaming_to_source =
2321+
Enum.find_value(attributes_to_rename, fn {new, old} ->
23222322
if old.source == old_attribute.source do
23232323
new.source
23242324
end
23252325
end)
23262326

2327-
source_match ==
2328-
attribute.source &&
2327+
if (renaming_to_source || old_attribute.source) == attribute.source do
23292328
attributes_unequal?(
23302329
old_attribute,
23312330
attribute,
23322331
snapshot.repo,
23332332
old_snapshot,
2334-
snapshot
2333+
snapshot,
2334+
not is_nil(renaming_to_source)
23352335
)
2336+
end
23362337
end
23372338
)}
23382339
end)
@@ -2534,11 +2535,25 @@ defmodule AshPostgres.MigrationGenerator do
25342535

25352536
# This exists to handle the fact that the remapping of the key name -> source caused attributes
25362537
# to be considered unequal. We ignore things that only differ in that way using this function.
2537-
defp attributes_unequal?(left, right, repo, _old_snapshot, _new_snapshot) do
2538+
defp attributes_unequal?(left, right, repo, _old_snapshot, _new_snapshot, ignore_names?) do
25382539
left = clean_for_equality(left, repo)
25392540

25402541
right = clean_for_equality(right, repo)
25412542

2543+
left =
2544+
if ignore_names? do
2545+
Map.drop(left, [:source, :name])
2546+
else
2547+
left
2548+
end
2549+
2550+
right =
2551+
if ignore_names? do
2552+
Map.drop(right, [:source, :name])
2553+
else
2554+
right
2555+
end
2556+
25422557
left != right
25432558
end
25442559

@@ -2595,7 +2610,7 @@ defmodule AshPostgres.MigrationGenerator do
25952610
end
25962611

25972612
def changing_multitenancy_affects_identities?(snapshot, old_snapshot) do
2598-
snapshot.multitenancy != old_snapshot.multitenancy ||
2613+
Map.delete(snapshot.multitenancy, :global) != Map.delete(old_snapshot.multitenancy, :global) ||
25992614
snapshot.base_filter != old_snapshot.base_filter
26002615
end
26012616

mix.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ defmodule AshPostgres.MixProject do
55
The PostgreSQL data layer for Ash Framework
66
"""
77

8-
@version "2.5.3"
8+
@version "2.5.5"
99

1010
def project do
1111
[
@@ -165,7 +165,7 @@ defmodule AshPostgres.MixProject do
165165
# Run "mix help deps" to learn about dependencies.
166166
defp deps do
167167
[
168-
{:ash, ash_version("~> 3.4 and >= 3.4.48")},
168+
{:ash, ash_version("~> 3.4 and >= 3.4.64")},
169169
{:ash_sql, ash_sql_version("~> 0.2 and >= 0.2.43")},
170170
{:igniter, "~> 0.5 and >= 0.5.16", optional: true},
171171
{:ecto_sql, "~> 3.12"},
@@ -197,7 +197,7 @@ defmodule AshPostgres.MixProject do
197197
[path: "../ash", override: true]
198198

199199
"main" ->
200-
[git: "https://github.com/ash-project/ash.git"]
200+
[git: "https://github.com/ash-project/ash.git", override: true]
201201

202202
version when is_binary(version) ->
203203
"~> #{version}"

mix.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
%{
2-
"ash": {:hex, :ash, "3.4.63", "7bf24d7e40039bf82652975460dca55e3d23fdb77738ebf665c16b7a4519b86e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.4.8 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.29 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "10175209ca1f01237959ce1ba0638b04c8d5a231dc0c128b2eea431ee32699e8"},
3-
"ash_sql": {:hex, :ash_sql, "0.2.56", "3d438a18af5d7c39e0b2b2ba6b6adc8b2abe40d9caa18af720433fc3126efac1", [:mix], [{:ash, ">= 3.4.60 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "22296a2afe1f69ec1c2de7490f6821a8551c16c914e746663458068a7808a9d4"},
2+
"ash": {:hex, :ash, "3.4.64", "cbc337173fada2c094aa7f852fbb82d16f7090c06272aa34feb7479d1ff91162", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.5.24 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.29 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f29472b64cec1c340a3f2f32ef3542b4d719a041a86678d0793442922f365709"},
3+
"ash_sql": {:hex, :ash_sql, "0.2.57", "51a574fed322e0e6fd743362cbea264275fd5799278288a3a41aa9a2e457d56d", [:mix], [{:ash, ">= 3.4.60 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "0b906cef68aceb2c9666a52d4e0350c271de55483d846bed2312c59f51af2f3a"},
44
"benchee": {:hex, :benchee, "1.3.1", "c786e6a76321121a44229dde3988fc772bca73ea75170a73fd5f4ddf1af95ccf", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "76224c58ea1d0391c8309a8ecbfe27d71062878f59bd41a390266bf4ac1cc56d"},
55
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
66
"credo": {:hex, :credo, "1.7.11", "d3e805f7ddf6c9c854fd36f089649d7cf6ba74c42bc3795d587814e3c9847102", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "56826b4306843253a66e47ae45e98e7d284ee1f95d53d1612bb483f88a8cf219"},
@@ -16,14 +16,14 @@
1616
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
1717
"ets": {:hex, :ets, "0.9.0", "79c6a6c205436780486f72d84230c6cba2f8a9920456750ddd1e47389107d5fd", [:mix], [], "hexpm", "2861fdfb04bcaeff370f1a5904eec864f0a56dcfebe5921ea9aadf2a481c822b"},
1818
"ex_check": {:hex, :ex_check, "0.16.0", "07615bef493c5b8d12d5119de3914274277299c6483989e52b0f6b8358a26b5f", [:mix], [], "hexpm", "4d809b72a18d405514dda4809257d8e665ae7cf37a7aee3be6b74a34dec310f5"},
19-
"ex_doc": {:hex, :ex_doc, "0.37.1", "65ca30d242082b95aa852b3b73c9d9914279fff56db5dc7b3859be5504417980", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "6774f75477733ea88ce861476db031f9399c110640752ca2b400dbbb50491224"},
19+
"ex_doc": {:hex, :ex_doc, "0.37.2", "2a3aa7014094f0e4e286a82aa5194a34dd17057160988b8509b15aa6c292720c", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "4dfa56075ce4887e4e8b1dcc121cd5fcb0f02b00391fd367ff5336d98fa49049"},
2020
"file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"},
2121
"finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"},
2222
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
23-
"git_ops": {:hex, :git_ops, "2.6.3", "38c6e381b8281b86e2911fa39bea4eab2d171c86d7428786566891efb73b68c3", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a81cb6c6a2a026a4d48cb9a2e1dfca203f9283a3a70aa0c7bc171970c44f23f8"},
23+
"git_ops": {:hex, :git_ops, "2.7.0", "fed1400d516d06810ac46a9d4b3e12ca4973683158ddc5931935567075ff1a4c", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:igniter, "~> 0.5", [hex: :igniter, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "29f1ddb3678969cb81dc56177d0c6e5c85a77a7ce50036207b920005cc6b5b26"},
2424
"glob_ex": {:hex, :glob_ex, "0.1.11", "cb50d3f1ef53f6ca04d6252c7fde09fd7a1cf63387714fe96f340a1349e62c93", [:mix], [], "hexpm", "342729363056e3145e61766b416769984c329e4378f1d558b63e341020525de4"},
2525
"hpax": {:hex, :hpax, "1.0.2", "762df951b0c399ff67cc57c3995ec3cf46d696e41f0bba17da0518d94acd4aac", [:mix], [], "hexpm", "2f09b4c1074e0abd846747329eaa26d535be0eb3d189fa69d812bfb8bfefd32f"},
26-
"igniter": {:hex, :igniter, "0.5.22", "af4deba45c9c0ffdff257f9730fcfb6322e785b030b4982550affe0aaabfa3fd", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:inflex, "~> 2.0", [hex: :inflex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "601b639bbf3a4740335a91b038999c3381ff9371f07122d0640b820cd2d5cfe3"},
26+
"igniter": {:hex, :igniter, "0.5.25", "a9e26794efe4b5619edd112b2ce8ffa3931f1e4d558dfebcd344553024e359b5", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:inflex, "~> 2.0", [hex: :inflex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "d944d3ed8439bb2d98391f39b86305d109f4123c947061db54c1c0f9ecad890e"},
2727
"inflex": {:hex, :inflex, "2.1.0", "a365cf0821a9dacb65067abd95008ca1b0bb7dcdd85ae59965deef2aa062924c", [:mix], [], "hexpm", "14c17d05db4ee9b6d319b0bff1bdf22aa389a25398d1952c7a0b5f3d93162dd8"},
2828
"iterex": {:hex, :iterex, "0.1.2", "58f9b9b9a22a55cbfc7b5234a9c9c63eaac26d276b3db80936c0e1c60355a5a6", [:mix], [], "hexpm", "2e103b8bcc81757a9af121f6dc0df312c9a17220f302b1193ef720460d03029d"},
2929
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
@@ -39,7 +39,7 @@
3939
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
4040
"owl": {:hex, :owl, "0.12.2", "65906b525e5c3ef51bab6cba7687152be017aebe1da077bb719a5ee9f7e60762", [:mix], [{:ucwidth, "~> 0.2", [hex: :ucwidth, repo: "hexpm", optional: true]}], "hexpm", "6398efa9e1fea70a04d24231e10dcd66c1ac1aa2da418d20ef5357ec61de2880"},
4141
"postgrex": {:hex, :postgrex, "0.20.0", "363ed03ab4757f6bc47942eff7720640795eb557e1935951c1626f0d303a3aed", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "d36ef8b36f323d29505314f704e21a1a038e2dc387c6409ee0cd24144e187c0f"},
42-
"reactor": {:hex, :reactor, "0.13.0", "072570a78e4cafcb81b81f143fc37f534ab7b206b2c5b445480638468bf59637", [:mix], [{:igniter, "~> 0.4", [hex: :igniter, repo: "hexpm", optional: true]}, {:iterex, "~> 0.1", [hex: :iterex, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16", [hex: :libgraph, repo: "hexpm", optional: false]}, {:spark, "~> 2.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "72aadf43584bab94b1907bff9371ac324acebd28f095f4320dd14dee2b499319"},
42+
"reactor": {:hex, :reactor, "0.13.2", "8260c8c7159748891298b05527b754d31c8d305a00497d03e638ba84654b8797", [:mix], [{:igniter, "~> 0.4", [hex: :igniter, repo: "hexpm", optional: true]}, {:iterex, "~> 0.1", [hex: :iterex, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16", [hex: :libgraph, repo: "hexpm", optional: false]}, {:spark, "~> 2.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2ec44588d61763da544382942c0218d7f7eab454b709756c1b1b9d70ed8821a"},
4343
"req": {:hex, :req, "0.5.8", "50d8d65279d6e343a5e46980ac2a70e97136182950833a1968b371e753f6a662", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "d7fc5898a566477e174f26887821a3c5082b243885520ee4b45555f5d53f40ef"},
4444
"rewrite": {:hex, :rewrite, "1.1.2", "f5a5d10f5fed1491a6ff48e078d4585882695962ccc9e6c779bae025d1f92eda", [:mix], [{:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}, {:text_diff, "~> 0.1", [hex: :text_diff, repo: "hexpm", optional: false]}], "hexpm", "7f8b94b1e3528d0a47b3e8b7bfeca559d2948a65fa7418a9ad7d7712703d39d4"},
4545
"simple_sat": {:hex, :simple_sat, "0.1.3", "f650fc3c184a5fe741868b5ac56dc77fdbb428468f6dbf1978e14d0334497578", [:mix], [], "hexpm", "a54305066a356b7194dc81db2a89232bacdc0b3edaef68ed9aba28dcbc34887b"},

0 commit comments

Comments
 (0)