diff --git a/database/migrations/2026_01_27_195456_alter_table_person_addresses_increase_varchar_postal.php b/database/migrations/2026_01_27_195456_alter_table_person_addresses_increase_varchar_postal.php new file mode 100644 index 0000000..5c65dbe --- /dev/null +++ b/database/migrations/2026_01_27_195456_alter_table_person_addresses_increase_varchar_postal.php @@ -0,0 +1,49 @@ +dropIndex('person_addresses_search_vector_idx'); + $table->dropColumn('search_vector'); + + + $table->string('post_code', 50)->nullable()->change(); + + }); + + // Add a generated tsvector column for fulltext search + DB::statement(" + ALTER TABLE person_addresses + ADD COLUMN search_vector tsvector + GENERATED ALWAYS AS ( + to_tsvector('simple', + coalesce(address, '') || ' ' || + coalesce(post_code, '') || ' ' || + coalesce(city, '') + ) + ) STORED + "); + + // Create GIN index on the tsvector column for fast fulltext search + DB::statement('CREATE INDEX person_addresses_search_vector_idx ON person_addresses USING GIN(search_vector)'); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('person_addresses', function (Blueprint $table) { + $table->string('post_code', 20)->change(); + }); + } +}; diff --git a/resources/js/Pages/Client/Index.vue b/resources/js/Pages/Client/Index.vue index 9e7e307..a99e3be 100644 --- a/resources/js/Pages/Client/Index.vue +++ b/resources/js/Pages/Client/Index.vue @@ -6,10 +6,8 @@ import CreateDialog from "@/Components/Dialogs/CreateDialog.vue"; import DataTable from "@/Components/DataTable/DataTableNew2.vue"; import { hasPermission } from "@/Services/permissions"; import { Button } from "@/Components/ui/button"; -import { Card, CardHeader, CardTitle, CardContent } from "@/Components/ui/card"; +import { CardTitle } from "@/Components/ui/card"; import { Input } from "@/Components/ui/input"; -import ActionMenuItem from "@/Components/DataTable/ActionMenuItem.vue"; -import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { Select, SelectContent, @@ -27,8 +25,7 @@ import { import { useForm } from "vee-validate"; import { toTypedSchema } from "@vee-validate/zod"; import * as z from "zod"; -import ActionMessage from "@/Components/ActionMessage.vue"; -import { Mail, Plug2Icon, Plus, UsersRoundIcon } from "lucide-vue-next"; +import { Plus, UsersRoundIcon } from "lucide-vue-next"; import { Separator } from "@/Components/ui/separator"; import AppCard from "@/Components/app/ui/card/AppCard.vue";