Packages

ash_postgres

2.4.2
2.10.0 2.9.1 2.9.0 2.8.0 2.7.0 2.6.32 2.6.31 2.6.30 2.6.29 2.6.28 2.6.27 2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 2.6.4 2.6.3 2.6.2 2.6.1 2.6.0 2.5.22 2.5.21 2.5.20 2.5.19 2.5.18 2.5.17 2.5.16 2.5.15 2.5.14 2.5.13 2.5.12 2.5.11 2.5.10 2.5.9 2.5.8 2.5.7 2.5.6 2.5.5 2.5.4 2.5.3 2.5.2 2.5.1 2.5.0 2.4.21 2.4.20 2.4.19 2.4.18 2.4.17 2.4.16 2.4.15 2.4.14 2.4.13 2.4.12 2.4.11 2.4.10 2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 2.3.1 2.3.0 2.2.5 2.2.4 2.2.3 2.2.2 2.2.1 2.2.0 2.1.19 2.1.18 2.1.17 2.1.15 2.1.14 2.1.13 2.1.12 2.1.11 2.1.10 2.1.9 2.1.8 2.1.6 2.1.5 2.1.4 2.1.3 2.1.2 2.1.1 2.1.0 2.0.12 2.0.11 2.0.10 2.0.9 2.0.8 2.0.7 2.0.6 2.0.5 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0 2.0.0-rc.15 2.0.0-rc.14 2.0.0-rc.13 2.0.0-rc.12 2.0.0-rc.11 2.0.0-rc.10 2.0.0-rc.9 2.0.0-rc.8 2.0.0-rc.7 2.0.0-rc.6 2.0.0-rc.5 2.0.0-rc.4 2.0.0-rc.3 2.0.0-rc.2 2.0.0-rc.1 2.0.0-rc.0 1.5.30 1.5.29 1.5.28 1.5.27 1.5.26 1.5.25 1.5.24 1.5.23 1.5.22 1.5.21 1.5.20 1.5.19 1.5.18 1.5.17 1.5.16 1.5.15 1.5.14 1.5.13 1.5.12 1.5.11 1.5.10 1.5.9 1.5.8 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 1.5.2 1.5.1 1.5.0 1.4.0 1.3.68 1.3.67 1.3.66 1.3.65 1.3.64 1.3.63 1.3.62 1.3.61 1.3.60 1.3.59 1.3.58 1.3.56 1.3.55 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 1.3.49 1.3.48 1.3.47 1.3.46 1.3.45 1.3.44 1.3.43 1.3.42 1.3.41 1.3.40 1.3.39 1.3.38 1.3.37 1.3.36 1.3.35 1.3.34 1.3.33 1.3.32 1.3.31 1.3.30 1.3.29 1.3.28 1.3.26 1.3.25 1.3.24 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 1.3.18 1.3.17 1.3.16 1.3.15 1.3.14 1.3.12 1.3.11 1.3.10 1.3.9 1.3.8 1.3.6 1.3.5 1.3.4 1.3.3 1.3.2 1.3.1 1.3.0 1.3.0-rc.4 1.3.0-rc.3 1.3.0-rc.2 1.3.0-rc.0 1.2.6 1.2.5 1.2.4 1.2.3 1.2.2 1.2.1 1.2.0 1.2.0-rc.1 1.2.0-rc.0 1.1.3 1.1.2 1.1.1 1.1.0 1.0.0 1.0.0-rc.9 1.0.0-rc.8 1.0.0-rc.7 1.0.0-rc.6 1.0.0-rc.5 1.0.0-rc.4 1.0.0-rc.3 1.0.0-rc.2 1.0.0-rc.1 1.0.0-rc.0 1.0.0-pre.3 1.0.0-pre.2 1.0.0-pre.1 1.0.0-pre.0 0.43.0 0.42.0-rc.7 0.42.0-rc.6 0.42.0-rc.5 0.42.0-rc.4 0.42.0-rc.3 0.42.0-rc.1 0.42.0-rc.0 0.41.7 0.41.6 0.41.5 0.41.4 0.41.3 0.41.2 0.41.1 0.41.0-rc0 retired 0.41.0-rc.9 0.41.0-rc.8 0.41.0-rc.7 0.41.0-rc.6 0.41.0-rc.5 0.41.0-rc.4 0.41.0-rc.3 0.41.0-rc.2 0.41.0-rc.1 0.41.0-rc.0 0.40.11 0.40.10 0.40.9 0.40.8 0.40.7 0.40.6 0.40.5 0.40.4 0.40.3 0.40.2 0.40.1 0.40.0-rc5 0.40.0-rc4 0.40.0-rc3 0.40.0-rc2 0.40.0-rc1 0.39.0-rc0 0.38.11 0.38.10 0.38.9 0.38.8 0.38.7 0.38.6 0.38.5 0.38.4 0.38.3 0.38.2 0.38.1 0.38.0 0.37.8 0.37.7 0.37.6 0.37.5 0.37.4 0.37.3 0.37.2 0.37.1 0.37.0 0.36.5 0.36.4 0.36.3 0.36.2 0.36.1 0.36.0 0.35.5 0.35.4 0.35.3 0.35.1 0.34.5 0.34.4 0.34.3 0.34.2 0.34.1 0.34.0 0.33.1 0.33.0 0.32.2 0.32.1 0.32.0 0.31.1 0.30.1 0.29.6 0.29.5 0.29.4 0.29.3 0.29.2 0.29.1 0.28.1 0.28.0 0.27.0 0.26.2 0.26.1 0.26.0 0.25.5 0.25.4 0.25.3 0.25.2 0.25.1 0.25.0 0.24.0 0.23.2 0.23.1 0.23.0 0.22.1 0.22.0 0.21.0 0.20.1 0.20.0 0.19.0 0.18.0 0.17.0 0.16.1 0.15.0 0.14.0 0.13.0 0.12.1 0.12.0 0.11.2 0.10.0 0.9.0 0.8.0 0.7.0 0.6.0 0.5.0 0.4.0 0.3.0 0.2.1 0.2.0 0.1.4 0.1.3 0.1.2 0.1.1 0.1.1-rc.2 0.1.1-rc.1 0.1.1-rc.0 0.1.0

The PostgreSQL data layer for Ash Framework

Security advisory: This version has known vulnerabilities. View advisories

Current section

409 Versions

Jump to

Compare versions

10 files changed
+248 additions
-63 deletions
  @@ -5,6 +5,31 @@ See [Conventional Commits](Https://conventionalcommits.org) for commit guideline
5 5
6 6 <!-- changelog -->
7 7
8 + ## [v2.4.2](https://github.com/ash-project/ash_postgres/compare/v2.4.1...v2.4.2) (2024-09-24)
9 +
10 +
11 +
12 +
13 + ### Bug Fixes:
14 +
15 + * typo of `biging` -> `bigint`
16 +
17 + * altering attributes not properly generating foreign keys in some cases
18 +
19 + * installer: use correct module name in the `DataCase` moduledocs. (#393)
20 +
21 + * trim input before passing to `String.to_integer/1`. (#389)
22 +
23 + ### Improvements:
24 +
25 + * add `--repo` option to installer, and warn on clashing existing repo
26 +
27 + * prompt for minimum pg version
28 +
29 + * adjust mix task aliases to be used with `ash_postgres`
30 +
31 + * set a name for generated migrations
32 +
8 33 ## [v2.4.1](https://github.com/ash-project/ash_postgres/compare/v2.4.0...v2.4.1) (2024-09-16)
  @@ -1,7 +1,7 @@
1 1 {<<"links">>,
2 2 [{<<"GitHub">>,<<"https://github.com/ash-project/ash_postgres">>}]}.
3 3 {<<"name">>,<<"ash_postgres">>}.
4 - {<<"version">>,<<"2.4.1">>}.
4 + {<<"version">>,<<"2.4.2">>}.
5 5 {<<"description">>,<<"The PostgreSQL data layer for Ash Framework">>}.
6 6 {<<"elixir">>,<<"~> 1.13">>}.
7 7 {<<"app">>,<<"ash_postgres">>}.
  @@ -78,7 +78,7 @@
78 78 [{<<"name">>,<<"igniter">>},
79 79 {<<"app">>,<<"igniter">>},
80 80 {<<"optional">>,false},
81 - {<<"requirement">>,<<"~> 0.3 and >= 0.3.36">>},
81 + {<<"requirement">>,<<"~> 0.3 and >= 0.3.42">>},
82 82 {<<"repository">>,<<"hexpm">>}],
83 83 [{<<"name">>,<<"ecto_sql">>},
84 84 {<<"app">>,<<"ecto_sql">>},
  @@ -2,13 +2,14 @@ defmodule AshPostgres.Igniter do
2 2 @moduledoc "Codemods and utilities for working with AshPostgres & Igniter"
3 3
4 4 @doc false
5 - def default_repo_contents(otp_app) do
5 + def default_repo_contents(otp_app, name, opts \\ []) do
6 + min_pg_version = get_min_pg_version(name, opts)
7 +
6 8 """
7 9 use AshPostgres.Repo, otp_app: #{inspect(otp_app)}
8 10
9 11 def min_pg_version do
10 - # Adjust this according to your postgres version
11 - %Version{major: 16, minor: 0, patch: 0}
12 + %Version{major: #{min_pg_version.major}, minor: #{min_pg_version.minor}, patch: #{min_pg_version.patch}}
12 13 end
13 14
14 15 def installed_extensions do
  @@ -80,7 +81,12 @@ defmodule AshPostgres.Igniter do
80 81 otp_app = Igniter.Project.Application.app_name(igniter)
81 82
82 83 igniter =
83 - Igniter.Code.Module.create_module(igniter, repo, default_repo_contents(otp_app))
84 + Igniter.Code.Module.create_module(
85 + igniter,
86 + repo,
87 + default_repo_contents(otp_app, repo),
88 + opts
89 + )
84 90
85 91 {igniter, repo}
86 92 else
  @@ -110,4 +116,50 @@ defmodule AshPostgres.Igniter do
110 116 )
111 117 end)
112 118 end
119 +
120 + @doc false
121 + def get_min_pg_version(name, opts) do
122 + if opts[:yes] do
123 + %Version{major: 16, minor: 0, patch: 0}
124 + else
125 + lead_in = """
126 + Generating #{inspect(name)}
127 +
128 + What is the minimum postgres version you will be using?
129 +
130 + AshPostgres uses this information when generating queries and migrations
131 + to choose the best available features for your version of postgres.
132 + """
133 +
134 + format_request =
135 + """
136 + Please enter the version in the format major.minor.patch (e.g. 13.4.0)
137 +
138 + Default: 16.0.0
139 +
140 + ❯
141 + """
142 +
143 + prompt =
144 + if opts[:invalid_loop?] do
145 + format_request
146 + else
147 + "#{lead_in}\n\n#{format_request}"
148 + end
149 +
150 + prompt
151 + |> String.trim_trailing()
152 + |> Mix.shell().prompt()
153 + |> String.trim()
154 + |> case do
155 + "" -> "16.0.0"
156 + input -> input
157 + end
158 + |> Version.parse()
159 + |> case do
160 + {:ok, version} -> version
161 + :error -> get_min_pg_version(name, Keyword.put(opts, :invalid_loop?, true))
162 + end
163 + end
164 + end
113 165 end
  @@ -727,6 +727,7 @@ defmodule AshPostgres.MigrationGenerator do
727 727
728 728 opts
729 729 |> prompt(message)
730 + |> String.trim()
730 731 |> String.to_integer()
731 732 end
732 733
  @@ -2198,12 +2199,10 @@ defmodule AshPostgres.MigrationGenerator do
2198 2199 []
2199 2200 end
2200 2201
2201 - if has_reference?(old_snapshot.multitenancy, old_attribute) and
2202 - Map.get(old_attribute, :references) != Map.get(new_attribute, :references) do
2202 + if Map.get(old_attribute, :references) != Map.get(new_attribute, :references) do
2203 2203 redo_deferrability =
2204 - if differently_deferrable?(new_attribute, old_attribute) do
2205 - []
2206 - else
2204 + if has_reference?(old_snapshot.multitenancy, old_attribute) and
2205 + differently_deferrable?(new_attribute, old_attribute) do
2207 2206 [
2208 2207 %Operation.AlterDeferrability{
2209 2208 table: snapshot.table,
  @@ -2212,24 +2211,38 @@ defmodule AshPostgres.MigrationGenerator do
2212 2211 direction: :up
2213 2212 }
2214 2213 ]
2214 + else
2215 + []
2215 2216 end
2216 2217
2217 2218 old_and_alter =
2218 - [
2219 - %Operation.DropForeignKey{
2220 - attribute: old_attribute,
2221 - table: snapshot.table,
2222 - schema: snapshot.schema,
2223 - multitenancy: old_snapshot.multitenancy,
2224 - direction: :up
2225 - },
2226 - %Operation.AlterAttribute{
2227 - new_attribute: new_attribute,
2228 - old_attribute: old_attribute,
2229 - schema: snapshot.schema,
2230 - table: snapshot.table
2231 - }
2232 - ] ++ redo_deferrability
2219 + if has_reference?(old_snapshot.multitenancy, old_attribute) do
2220 + [
2221 + %Operation.DropForeignKey{
2222 + attribute: old_attribute,
2223 + table: snapshot.table,
2224 + schema: snapshot.schema,
2225 + multitenancy: old_snapshot.multitenancy,
2226 + direction: :up
2227 + },
2228 + %Operation.AlterAttribute{
2229 + new_attribute: new_attribute,
2230 + old_attribute: old_attribute,
2231 + schema: snapshot.schema,
2232 + table: snapshot.table
2233 + }
2234 + ]
2235 + else
2236 + [
2237 + %Operation.AlterAttribute{
2238 + new_attribute: new_attribute,
2239 + old_attribute: old_attribute,
2240 + schema: snapshot.schema,
2241 + table: snapshot.table
2242 + }
2243 + ]
2244 + end ++
2245 + redo_deferrability
2233 2246
2234 2247 if has_reference?(snapshot.multitenancy, new_attribute) do
2235 2248 reference_ops = [
  @@ -501,7 +501,7 @@ defmodule AshPostgres.MigrationGenerator.Operation do
501 501 Map.get(old_attribute, :references) != Map.get(attribute, :references) do
502 502 reference(multitenancy, attribute, schema)
503 503 else
504 - if attribute.type == :biging and attribute.default == "nil" and attribute.generated? do
504 + if attribute.type == :bigint and attribute.default == "nil" and attribute.generated? do
505 505 ":bigserial"
506 506 else
507 507 inspect(attribute.type)
Loading more files…