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
Current section
409 Versions
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…