diff --git a/apps/api/src/meilisearch/person.ts b/apps/api/src/meilisearch/person.ts index f45d9b9e..a9330584 100644 --- a/apps/api/src/meilisearch/person.ts +++ b/apps/api/src/meilisearch/person.ts @@ -24,6 +24,14 @@ export async function updateMeiliPerson(person: MeiliPerson) { } } +export async function deleteMeiliPerson(id: number) { + try { + await meilisearchClient.index(searchIndex).deleteDocument(id) + } catch (error) { + console.error('deleteMeiliPerson', error, id) + } +} + export async function syncAllPersonsToMeili() { await meilisearchClient.index(searchIndex).updateSettings(updateSettings) await meilisearchClient.updateIndex(searchIndex, { primaryKey: 'id' }) diff --git a/apps/api/src/services/anmeldung/anmeldungPublicCreate.ts b/apps/api/src/services/anmeldung/anmeldungPublicCreate.ts index 23a0e1aa..d3aebf77 100644 --- a/apps/api/src/services/anmeldung/anmeldungPublicCreate.ts +++ b/apps/api/src/services/anmeldung/anmeldungPublicCreate.ts @@ -9,6 +9,7 @@ import { definePublicMutateProcedure } from '../../types/defineProcedure.js' import logActivity from '../../util/activity.js' import { sendMail } from '../../util/mail.js' import { getPersonCreateData, personSchema } from '../person/schema/person.schema.js' +import { updateMeiliPerson } from '../../meilisearch/person.js' export const inputSchema = z.strictObject({ token: z.string().optional(), @@ -118,9 +119,28 @@ export const anmeldungPublicCreateProcedure = definePublicMutateProcedure({ data: personData, select: { id: true, + firstname: true, + lastname: true, + birthday: true, + email: true, + gliederung: { + select: { + id: true, + name: true, + }, + }, }, }) + await updateMeiliPerson({ + id: person.id, + firstname: person.firstname, + lastname: person.lastname, + birthday: person.birthday, + email: person.email, + gliederung: person.gliederung, + }) + const accessToken = randomUUID() const assignmentCode = ctx.authenticated ? null : randomUUID() const anmeldung = await prisma.anmeldung.create({ diff --git a/apps/api/src/services/person/personPatch.ts b/apps/api/src/services/person/personPatch.ts index 6e690ce6..92205e1f 100644 --- a/apps/api/src/services/person/personPatch.ts +++ b/apps/api/src/services/person/personPatch.ts @@ -6,6 +6,7 @@ import { defineProtectedMutateProcedure } from '../../types/defineProcedure.js' import { getPersonCreateData, personSchemaOptional } from './schema/person.schema.js' import { TRPCError } from '@trpc/server' +import { updateMeiliPerson } from '../../meilisearch/person.js' export const personVerwaltungPatchProcedure = defineProtectedMutateProcedure({ key: 'patch', @@ -47,15 +48,35 @@ export const personVerwaltungPatchProcedure = defineProtectedMutateProcedure({ personId: input.id, }, }) - - return prisma.person.update({ + const person = await prisma.person.update({ where: { id: input.id, }, data: await getPersonCreateData(input.data), select: { id: true, + firstname: true, + lastname: true, + birthday: true, + email: true, + gliederung: { + select: { + id: true, + name: true, + }, + }, }, }) + + await updateMeiliPerson({ + id: person.id, + firstname: person.firstname, + lastname: person.lastname, + birthday: person.birthday, + email: person.email, + gliederung: person.gliederung, + }) + + return person }, }) diff --git a/apps/api/src/services/person/personVerwaltungRemove.ts b/apps/api/src/services/person/personVerwaltungRemove.ts index 34fb1a7a..8734de04 100644 --- a/apps/api/src/services/person/personVerwaltungRemove.ts +++ b/apps/api/src/services/person/personVerwaltungRemove.ts @@ -3,6 +3,7 @@ import z from 'zod' import prisma from '../../prisma.js' import { defineProtectedMutateProcedure } from '../../types/defineProcedure.js' +import { deleteMeiliPerson } from '../../meilisearch/person.js' export const personVerwaltungRemoveProcedure = defineProtectedMutateProcedure({ key: 'verwaltungRemove', @@ -11,10 +12,13 @@ export const personVerwaltungRemoveProcedure = defineProtectedMutateProcedure({ id: z.number().int(), }), async handler(options) { - return prisma.person.delete({ + await prisma.person.delete({ where: { id: options.input.id, }, }) + + await deleteMeiliPerson(options.input.id) + return options.input.id }, }) diff --git a/apps/frontend/src/components/GlobalSearch.vue b/apps/frontend/src/components/GlobalSearch.vue index 62c13521..dc25fa23 100644 --- a/apps/frontend/src/components/GlobalSearch.vue +++ b/apps/frontend/src/components/GlobalSearch.vue @@ -134,6 +134,7 @@ const { state: searchResults, execute: searchAPI } = useAsyncState( aria-hidden="true" />