diff --git a/.formatter.exs b/.formatter.exs new file mode 100644 index 0000000..d2cda26 --- /dev/null +++ b/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e886bf..2aad612 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -164,3 +164,24 @@ jobs: run: | sleep 4 # wait pg mix test --include distribution + + format: + name: mix formatt (Elixir ${{matrix.pair.elixir}} | Erlang/OTP ${{matrix.pair.otp}}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - pair: + elixir: 1.18 + otp: 27 + steps: + - uses: actions/checkout@v4 + - uses: erlef/setup-beam@v1 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + with: + otp-version: ${{matrix.pair.otp}} + elixir-version: ${{matrix.pair.elixir}} + - name: Check formatting + run: mix format --check-formatted diff --git a/lib/ecto_psql_extras/detect_fk_column.ex b/lib/ecto_psql_extras/detect_fk_column.ex index 115a07c..b343c0d 100644 --- a/lib/ecto_psql_extras/detect_fk_column.ex +++ b/lib/ecto_psql_extras/detect_fk_column.ex @@ -1,21 +1,22 @@ defmodule EctoPSQLExtras.DetectFkColumn do - defp plural_rules, do: [ - {~r/s$/i, "s"}, - {~r/^(ax|test)is$/i, "\\1es"}, - {~r/(octop|vir)us$/i, "\\1i"}, - {~r/(alias|status)$/i, "\\1es"}, - {~r/(bu)s$/i, "\\1ses"}, - {~r/(buffal|tomat)o$/i, "\\1oes"}, - {~r/([ti])um$/i, "\\1a"}, - {~r/sis$/i, "ses"}, - {~r/(?:([^f])fe|([lr])f)$/i, "\\1\\2ves"}, - {~r/([^aeiouy]|qu)y$/i, "\\1ies"}, - {~r/(x|ch|ss|sh)$/i, "\\1es"}, - {~r/(matr|vert|ind)(?:ix|ex)$/i, "\\1ices"}, - {~r/^(m|l)ouse$/i, "\\1ice"}, - {~r/^(ox)$/i, "\\1en"}, - {~r/(quiz)$/i, "\\1zes"} - ] + defp plural_rules, + do: [ + {~r/s$/i, "s"}, + {~r/^(ax|test)is$/i, "\\1es"}, + {~r/(octop|vir)us$/i, "\\1i"}, + {~r/(alias|status)$/i, "\\1es"}, + {~r/(bu)s$/i, "\\1ses"}, + {~r/(buffal|tomat)o$/i, "\\1oes"}, + {~r/([ti])um$/i, "\\1a"}, + {~r/sis$/i, "ses"}, + {~r/(?:([^f])fe|([lr])f)$/i, "\\1\\2ves"}, + {~r/([^aeiouy]|qu)y$/i, "\\1ies"}, + {~r/(x|ch|ss|sh)$/i, "\\1es"}, + {~r/(matr|vert|ind)(?:ix|ex)$/i, "\\1ices"}, + {~r/^(m|l)ouse$/i, "\\1ice"}, + {~r/^(ox)$/i, "\\1en"}, + {~r/(quiz)$/i, "\\1zes"} + ] @irregular %{ "person" => "people", diff --git a/lib/queries/calls.ex b/lib/queries/calls.ex index 1581a28..1c712c4 100644 --- a/lib/queries/calls.ex +++ b/lib/queries/calls.ex @@ -30,6 +30,7 @@ defmodule EctoPSQLExtras.Calls do AND query NOT LIKE '/* ECTO_PSQL_EXTRAS:%' ORDER BY calls DESC LIMIT <%= limit %>; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/calls_legacy.ex b/lib/queries/calls_legacy.ex index 7ff9e49..dbb1fbc 100644 --- a/lib/queries/calls_legacy.ex +++ b/lib/queries/calls_legacy.ex @@ -29,6 +29,7 @@ defmodule EctoPSQLExtras.CallsLegacy do AND query NOT LIKE '/* ECTO_PSQL_EXTRAS:%' ORDER BY calls DESC LIMIT <%= limit %>; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/db_settings.ex b/lib/queries/db_settings.ex index 96f1be2..7120f98 100644 --- a/lib/queries/db_settings.ex +++ b/lib/queries/db_settings.ex @@ -28,4 +28,3 @@ defmodule EctoPSQLExtras.DbSettings do """ end end - diff --git a/lib/queries/duplicate_indexes.ex b/lib/queries/duplicate_indexes.ex index b05d4dc..f1f0954 100644 --- a/lib/queries/duplicate_indexes.ex +++ b/lib/queries/duplicate_indexes.ex @@ -3,7 +3,8 @@ defmodule EctoPSQLExtras.DuplicateIndexes do def info do %{ - title: "Multiple indexes that have the same set of columns, same opclass, expression and predicate.", + title: + "Multiple indexes that have the same set of columns, same opclass, expression and predicate.", index: 7, columns: [ %{name: :size, type: :string}, @@ -28,6 +29,7 @@ defmodule EctoPSQLExtras.DuplicateIndexes do FROM pg_index) sub GROUP BY key HAVING count(*)>1 ORDER BY sum(pg_relation_size(idx)) DESC; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/long_running_queries.ex b/lib/queries/long_running_queries.ex index 53c8271..0b2dc81 100644 --- a/lib/queries/long_running_queries.ex +++ b/lib/queries/long_running_queries.ex @@ -31,6 +31,7 @@ defmodule EctoPSQLExtras.LongRunningQueries do AND now() - pg_stat_activity.query_start > interval '<%= threshold %>' ORDER BY now() - pg_stat_activity.query_start DESC; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/null_indexes.ex b/lib/queries/null_indexes.ex index fe5ae64..3824b81 100644 --- a/lib/queries/null_indexes.ex +++ b/lib/queries/null_indexes.ex @@ -53,7 +53,7 @@ defmodule EctoPSQLExtras.NullIndexes do AND pg_relation_size(c.oid) > <%= min_relation_size_mb %> * 1024 ^ 2 ORDER BY pg_relation_size(c.oid) * s.null_frac DESC; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end - diff --git a/lib/queries/outliers.ex b/lib/queries/outliers.ex index 55eb851..aece13e 100644 --- a/lib/queries/outliers.ex +++ b/lib/queries/outliers.ex @@ -30,6 +30,7 @@ defmodule EctoPSQLExtras.Outliers do AND query NOT LIKE '/* ECTO_PSQL_EXTRAS:%' ORDER BY total_exec_time DESC LIMIT <%= limit %>; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/outliers_legacy.ex b/lib/queries/outliers_legacy.ex index 761b9b0..6d96f36 100644 --- a/lib/queries/outliers_legacy.ex +++ b/lib/queries/outliers_legacy.ex @@ -30,6 +30,7 @@ defmodule EctoPSQLExtras.OutliersLegacy do AND query NOT LIKE '/* ECTO_PSQL_EXTRAS:%' ORDER BY total_time DESC LIMIT <%= limit %>; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/lib/queries/unused_indexes.ex b/lib/queries/unused_indexes.ex index e63fdc5..f8b7493 100644 --- a/lib/queries/unused_indexes.ex +++ b/lib/queries/unused_indexes.ex @@ -35,6 +35,7 @@ defmodule EctoPSQLExtras.UnusedIndexes do WHERE NOT indisunique AND idx_scan < <%= min_scans %> AND pg_relation_size(relid) > 5 * 8192 ORDER BY pg_relation_size(i.indexrelid) / nullif(idx_scan, 0) DESC NULLS FIRST, pg_relation_size(i.indexrelid) DESC; - """ |> EEx.eval_string(args) + """ + |> EEx.eval_string(args) end end diff --git a/test/test_helper.exs b/test/test_helper.exs index 6ed808c..f99e677 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,8 +1,8 @@ -Code.require_file "support/test_repo.exs", __DIR__ +Code.require_file("support/test_repo.exs", __DIR__) Application.put_env(:ecto_psql_extras, :node_name, Node.self()) -Application.put_env(:dummy_app, Dummy.Repo, [url: EctoPSQLExtras.TestRepo.database_url()]) +Application.put_env(:dummy_app, Dummy.Repo, url: EctoPSQLExtras.TestRepo.database_url()) ExUnit.configure(exclude: :distribution) ExUnit.start()