diff --git a/priv/repo/migrations/20251001141005_add_trigram_to_members.exs b/priv/repo/migrations/20251001141005_add_trigram_to_members.exs new file mode 100644 index 0000000..f502003 --- /dev/null +++ b/priv/repo/migrations/20251001141005_add_trigram_to_members.exs @@ -0,0 +1,66 @@ +defmodule Mv.Repo.Migrations.AddTrigramToMembers do + @moduledoc """ + Updates resources based on their most recent snapshots. + + This file was autogenerated with `mix ash_postgres.generate_migrations` + """ + + use Ecto.Migration + + def up do + # activate trigram-extension + execute("CREATE EXTENSION IF NOT EXISTS pg_trgm;") + + # ------------------------------------------------- + # Trigram‑Indizes (GIN) for fields we want to search in + # ------------------------------------------------- + # + # `gin_trgm_ops` ist the operator-class-name + # + + execute(""" + CREATE INDEX members_first_name_trgm_idx + ON members + USING GIN (first_name gin_trgm_ops); + """) + + execute(""" + CREATE INDEX members_last_name_trgm_idx + ON members + USING GIN (last_name gin_trgm_ops); + """) + + execute(""" + CREATE INDEX members_email_trgm_idx + ON members + USING GIN (email gin_trgm_ops); + """) + + execute(""" + CREATE INDEX members_city_trgm_idx + ON members + USING GIN (city gin_trgm_ops); + """) + + execute(""" + CREATE INDEX members_street_trgm_idx + ON members + USING GIN (street gin_trgm_ops); + """) + + execute(""" + CREATE INDEX members_notes_trgm_idx + ON members + USING GIN (notes gin_trgm_ops); + """) + end + + def down do + execute("DROP INDEX IF EXISTS members_first_name_trgm_idx;") + execute("DROP INDEX IF EXISTS members_last_name_trgm_idx;") + execute("DROP INDEX IF EXISTS members_email_trgm_idx;") + execute("DROP INDEX IF EXISTS members_city_trgm_idx;") + execute("DROP INDEX IF EXISTS members_street_trgm_idx;") + execute("DROP INDEX IF EXISTS members_notes_trgm_idx;") + end +end diff --git a/priv/resource_snapshots/repo/members/20251001141005.json b/priv/resource_snapshots/repo/members/20251001141005.json new file mode 100644 index 0000000..a541fc0 --- /dev/null +++ b/priv/resource_snapshots/repo/members/20251001141005.json @@ -0,0 +1,199 @@ +{ + "attributes": [ + { + "allow_nil?": false, + "default": "fragment(\"uuid_generate_v7()\")", + "generated?": false, + "precision": null, + "primary_key?": true, + "references": null, + "scale": null, + "size": null, + "source": "id", + "type": "uuid" + }, + { + "allow_nil?": false, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "first_name", + "type": "text" + }, + { + "allow_nil?": false, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "last_name", + "type": "text" + }, + { + "allow_nil?": false, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "email", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "birth_date", + "type": "date" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "paid", + "type": "boolean" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "phone_number", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "join_date", + "type": "date" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "exit_date", + "type": "date" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "notes", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "city", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "street", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "house_number", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "postal_code", + "type": "text" + }, + { + "allow_nil?": true, + "default": "nil", + "generated?": false, + "precision": null, + "primary_key?": false, + "references": null, + "scale": null, + "size": null, + "source": "search_vector", + "type": "tsvector" + } + ], + "base_filter": null, + "check_constraints": [], + "custom_indexes": [], + "custom_statements": [], + "has_create_action": true, + "hash": "9019AD59832AB926899B6A871A368CF65F757533795E4E38D5C0EE6AE58BE070", + "identities": [], + "multitenancy": { + "attribute": null, + "global": null, + "strategy": null + }, + "repo": "Elixir.Mv.Repo", + "schema": null, + "table": "members" +} \ No newline at end of file