Zmiany w schema:
Moduł logowania zmian:
WAZNE - żeby logi zmian nie zostawały w momencie jak jakaś tranzakcja failuje to do obu tych nowych metod bym dał jako argument aktualną tranzakcję z prismy, i wtedy jak inny serwis korzysta z tych metod to przekazuje swoją tranzakcję i w razie czego jest rollback na to wszystko tx: Prisma.TransactionClient,
Zmiany w schema:
schema.prismajest modelParticipantAttributeLogale jego polabeforeiaftertoString?w przeciwięstwie doJson?które jest w zwykłymParticipantAttribute, dlatego trzeba te dwa pola zmienićLogTriggerzawierający np. ADMIN, PARTICIPANT, SYSTEM), żeby zamienić pole:triggeredBy Stringw modeluParticipantAttributeLog@@unique([participantUuid, formUuid])do modeluParticipantFormLog(dla wydajnego upsert podczas aktualizowania logów)Moduł logowania zmian:
loggingalboaudit-log- w tym module nie trzeba kontrolera, tylko serwis, no i testy wsm też można odpóścić w tym przypadku.module.tstrzeba tylko ten service dodać doexports: []żeby inne moduły mogły z tego korzystaćlogAttributeChangesprzyjmująca stare atrybuty, nowe atrybuty. robi szybkie porównanie czy coś się zmieniło (np przez JSON.stringyfy) no i na koniec zapisuje tylko te atrybuty doParticipantAttributeLogktóre zmieniły wartość lub dopiero została ta wartość im ustawiona (np podczas tejestracji uczestnika) - wtedybeforeto poprostu null i tyle. a no i jeszcze trzeba przekazać info dlaczego jest ta zmiana i przez kogo opcjonalnie (przykładtriggerInfo: { by: LogTrigger; uuid?: string })logFormInteractionużywając prisma.participantFormLog.upsert, aby zaktualizować pole lastSubmittedAt (lub lastOpenedAt). z argumentów to chyba wystarczy tylkoparticipantUuid,formUuidoraz jakiś pseudointeractionType: 'OPENED' | 'SUBMITTED'żeby rozróżnic co tu się stałoWAZNE - żeby logi zmian nie zostawały w momencie jak jakaś tranzakcja failuje to do obu tych nowych metod bym dał jako argument aktualną tranzakcję z prismy, i wtedy jak inny serwis korzysta z tych metod to przekazuje swoją tranzakcję i w razie czego jest rollback na to wszystko
tx: Prisma.TransactionClient,