Stockage du montant de la modification plutôt que le avant/après

This commit is contained in:
Emmy D'Anello 2024-12-08 11:39:57 +01:00
parent 6a0b4049b6
commit b44ffcd380
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
4 changed files with 37 additions and 25 deletions

View File

@ -0,0 +1,13 @@
/*
Warnings:
- You are about to drop the column `after` on the `MoneyUpdate` table. All the data in the column will be lost.
- You are about to drop the column `before` on the `MoneyUpdate` table. All the data in the column will be lost.
- Added the required column `amount` to the `MoneyUpdate` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "MoneyUpdate" DROP COLUMN "after",
DROP COLUMN "before",
ADD COLUMN "amount" INTEGER NOT NULL,
ADD COLUMN "timestamp" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP;

View File

@ -52,7 +52,7 @@ model ChallengeAction {
end DateTime? @db.Timestamptz(3)
penaltyStart DateTime? @db.Timestamptz(3)
penaltyEnd DateTime? @db.Timestamptz(3)
moneyUpdate MoneyUpdate?
moneyUpdate MoneyUpdate?
}
model TrainTrip {
@ -69,16 +69,16 @@ model TrainTrip {
}
model MoneyUpdate {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int
before Int
after Int
reason MoneyUpdateType
action ChallengeAction? @relation(fields: [actionId], references: [id])
actionId Int? @unique
trip TrainTrip? @relation(fields: [tripId], references: [id])
tripId String? @unique
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int
amount Int
reason MoneyUpdateType
action ChallengeAction? @relation(fields: [actionId], references: [id])
actionId Int? @unique
trip TrainTrip? @relation(fields: [tripId], references: [id])
tripId String? @unique
timestamp DateTime @default(now()) @db.Timestamptz(3)
}
enum MoneyUpdateType {

View File

@ -1,18 +1,13 @@
import { ApiProperty } from "@nestjs/swagger"
import { MoneyUpdateType } from "@prisma/client"
import { Type } from "class-transformer"
import { IsEnum, IsInt, IsOptional, IsUUID } from "class-validator"
import { IsDate, IsEnum, IsInt, IsOptional, IsUUID } from "class-validator"
export class CreateMoneyUpdateDto {
@IsInt()
@Type(() => Number)
@ApiProperty({ description: "Solde avant modification" })
before: number
@IsInt()
@Type(() => Number)
@ApiProperty({ description: "Solde après modification" })
after: number
@ApiProperty({ description: "Montant de la modification de solde" })
amount: number
@IsEnum(MoneyUpdateType)
@ApiProperty({ description: "Type de modification de solde" })
@ -28,4 +23,9 @@ export class CreateMoneyUpdateDto {
@IsUUID()
@ApiProperty({ description: "Identifiant du trajet acheté, si la mise à jour est liée à la réservation d'un train", nullable: true })
tripId?: string
@IsDate()
@Type(() => Date)
@ApiProperty({ description: "Date et heure de la modification de solde" })
timestamp: Date
}

View File

@ -1,6 +1,5 @@
import { ApiProperty } from "@nestjs/swagger"
import { MoneyUpdate, MoneyUpdateType } from "@prisma/client"
import { IsOptional } from "class-validator"
export class MoneyUpdateEntity implements MoneyUpdate {
constructor (partial: Partial<MoneyUpdateEntity>) {
@ -13,11 +12,8 @@ export class MoneyUpdateEntity implements MoneyUpdate {
@ApiProperty({ description: "Utilisateur⋅rice concerné⋅e par la mise à jour de solde" })
userId: number
@ApiProperty({ description: "Solde avant modification" })
before: number
@ApiProperty({ description: "Solde après modification" })
after: number
@ApiProperty({ description: "Montant de la modification du solde" })
amount: number
@ApiProperty({ description: "Type de modification de solde" })
reason: MoneyUpdateType
@ -27,4 +23,7 @@ export class MoneyUpdateEntity implements MoneyUpdate {
@ApiProperty({ description: "Identifiant du trajet acheté, si la mise à jour est liée à la réservation d'un train", nullable: true })
tripId: string
@ApiProperty({ description: "Date et heure de la modification de solde" })
timestamp: Date
}