From 301854d8da14821afd51946676e4f47a401ff55b Mon Sep 17 00:00:00 2001 From: Jorge Vargas Date: Sat, 15 Mar 2025 11:17:33 -0600 Subject: [PATCH 1/2] Implement search page --- astro.config.mjs | 3 +- .../migration.sql | 2 + prisma/schema.prisma | 2 + src/components/Header.astro | 8 ++- src/components/header/NavButton.astro | 6 +- src/components/header/Toggler.astro | 12 +--- src/components/search/AlbumSearch.astro | 72 +++++++++++++++++++ src/components/search/SearchBar.astro | 52 ++++++++++++++ src/img/icons/close.svg | 13 ++++ src/img/icons/search.svg | 4 ++ src/pages/search.astro | 18 +++++ src/utils/form.ts | 5 ++ 12 files changed, 180 insertions(+), 17 deletions(-) create mode 100644 prisma/migrations/20250315153419_full_index_for_album_search/migration.sql create mode 100644 src/components/search/AlbumSearch.astro create mode 100644 src/components/search/SearchBar.astro create mode 100644 src/img/icons/close.svg create mode 100644 src/img/icons/search.svg create mode 100644 src/pages/search.astro diff --git a/astro.config.mjs b/astro.config.mjs index f36ecd5..eceea68 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -59,8 +59,7 @@ export default defineConfig({ '/studio/[slug]': { status: 307, destination: '/maintenance' }, '/studio/list': { status: 307, destination: '/maintenance' }, '/holy12': { status: 307, destination: '/maintenance' }, - '/request': { status: 307, destination: '/maintenance' }, - '/search': { status: 307, destination: '/maintenance' } + '/request': { status: 307, destination: '/maintenance' } }, security: { checkOrigin: false diff --git a/prisma/migrations/20250315153419_full_index_for_album_search/migration.sql b/prisma/migrations/20250315153419_full_index_for_album_search/migration.sql new file mode 100644 index 0000000..0104251 --- /dev/null +++ b/prisma/migrations/20250315153419_full_index_for_album_search/migration.sql @@ -0,0 +1,2 @@ +-- CreateIndex +CREATE FULLTEXT INDEX `albums_title_subTitle_idx` ON `albums`(`title`, `subTitle`); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 53a7074..d6d1f7a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -153,6 +153,8 @@ model albums { relatedAlbums related_album[] @relation("related_album_albumIdToalbums") relatedTo related_album[] @relation("related_album_relatedIdToalbums") stores stores[] + + @@fulltext([title, subTitle]) } model animation { diff --git a/src/components/Header.astro b/src/components/Header.astro index f5bf8c5..af839bb 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -11,6 +11,8 @@ import Toggler from './header/Toggler.astro' import NavButton from './header/NavButton.astro' import LoginNav from './header/LoginNav.astro' import prismaClient from 'utils/prisma-client.js' +import { Icon } from 'astro-icon/components' +import SearchBar from './search/SearchBar.astro' const { value: bannerId } = (await prismaClient.config.findUnique({ where: { name: 'banner' } })) ?? {} const { value: bannerPosition } = (await prismaClient.config.findUnique({ where: { name: 'banner-position' } })) ?? {} @@ -42,7 +44,7 @@ const { session } = Astro.locals - + diff --git a/src/components/header/NavButton.astro b/src/components/header/NavButton.astro index ede444c..f1b2b95 100644 --- a/src/components/header/NavButton.astro +++ b/src/components/header/NavButton.astro @@ -1,8 +1,5 @@ --- -import Button from '../Button' -import clsx from 'clsx' - -const { class: className } = Astro.props +const { class: className, ...rest } = Astro.props --- diff --git a/src/components/header/Toggler.astro b/src/components/header/Toggler.astro index 8c81a6a..fb5a1ce 100644 --- a/src/components/header/Toggler.astro +++ b/src/components/header/Toggler.astro @@ -2,17 +2,11 @@ import { Icon } from 'astro-icon/components' --- - +
- +
-