Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .formatter.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Used by "mix format"
[
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
35 changes: 18 additions & 17 deletions lib/ecto_psql_extras/detect_fk_column.ex
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
3 changes: 2 additions & 1 deletion lib/queries/calls.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion lib/queries/calls_legacy.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 0 additions & 1 deletion lib/queries/db_settings.ex
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,3 @@ defmodule EctoPSQLExtras.DbSettings do
"""
end
end

6 changes: 4 additions & 2 deletions lib/queries/duplicate_indexes.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand All @@ -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
3 changes: 2 additions & 1 deletion lib/queries/long_running_queries.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions lib/queries/null_indexes.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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

3 changes: 2 additions & 1 deletion lib/queries/outliers.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion lib/queries/outliers_legacy.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion lib/queries/unused_indexes.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions test/test_helper.exs
Original file line number Diff line number Diff line change
@@ -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()
Loading