Compare commits
	
		
			2 Commits
		
	
	
		
			601b337369
			...
			9dfb2ba15d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9dfb2ba15d | |||
| 8878a13f4f | 
| @@ -33,10 +33,12 @@ export default function ChallengesList() { | ||||
|     onPostSuccess: () => { | ||||
|       setSuccessMessage("Le défi a bien été ajouté !") | ||||
|       setSuccessSnackbarVisible(true) | ||||
|       setEditChallengeVisible(false) | ||||
|       queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0] === 'get-challenges' }) | ||||
|     }, | ||||
|     onError: ({ response, error }) => { | ||||
|       setErrorVisible(true) | ||||
|       setEditChallengeVisible(false) | ||||
|       if (response) | ||||
|         setError([response.statusCode, response.message]) | ||||
|       else if (error) | ||||
| @@ -54,6 +56,8 @@ export default function ChallengesList() { | ||||
|     }, | ||||
|     onError: ({ response, error }) => { | ||||
|       setErrorVisible(true) | ||||
|       setEditChallengeVisible(false) | ||||
|       setDisplayedChallenge(null) | ||||
|       if (response) | ||||
|         setError([response.statusCode, response.message]) | ||||
|       else if (error) | ||||
| @@ -64,12 +68,12 @@ export default function ChallengesList() { | ||||
|     auth, | ||||
|     onPostSuccess: () => { | ||||
|       setSuccessMessage("Le défi a bien été supprimé !") | ||||
|       setSuccessSnackbarVisible(true) | ||||
|       setEditChallengeVisible(false) | ||||
|       setDisplayedChallenge(null) | ||||
|       queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0] === 'get-challenges' }) | ||||
|     }, | ||||
|     onError: ({ response, error }) => { | ||||
|       setErrorVisible(true) | ||||
|       setDisplayedChallenge(null) | ||||
|       if (response) | ||||
|         setError([response.statusCode, response.message]) | ||||
|       else if (error) | ||||
| @@ -132,7 +136,7 @@ export default function ChallengesList() { | ||||
|       </Snackbar> | ||||
|       <FAB | ||||
|           icon='plus' | ||||
|           style={styles.addButton} | ||||
|           style={{ ...styles.addButton, bottom: errorVisible || successSnackbarVisible ? 80 : styles.addButton.bottom }} | ||||
|           onPress={() => { | ||||
|             if (editChallengeId) { | ||||
|               setEditChallengeTitle("") | ||||
|   | ||||
| @@ -0,0 +1,41 @@ | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "ChallengeAction" DROP CONSTRAINT "ChallengeAction_challengeId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "Geolocation" DROP CONSTRAINT "Geolocation_playerId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_actionId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_runId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_tripId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "PlayerRun" DROP CONSTRAINT "PlayerRun_gameId_fkey"; | ||||
|  | ||||
| -- DropForeignKey | ||||
| ALTER TABLE "PlayerRun" DROP CONSTRAINT "PlayerRun_runnerId_fkey"; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "PlayerRun" ADD CONSTRAINT "PlayerRun_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "PlayerRun" ADD CONSTRAINT "PlayerRun_runnerId_fkey" FOREIGN KEY ("runnerId") REFERENCES "Player"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "Geolocation" ADD CONSTRAINT "Geolocation_playerId_fkey" FOREIGN KEY ("playerId") REFERENCES "Player"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "ChallengeAction" ADD CONSTRAINT "ChallengeAction_challengeId_fkey" FOREIGN KEY ("challengeId") REFERENCES "Challenge"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_actionId_fkey" FOREIGN KEY ("actionId") REFERENCES "ChallengeAction"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_tripId_fkey" FOREIGN KEY ("tripId") REFERENCES "TrainTrip"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
|  | ||||
| -- AddForeignKey | ||||
| ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_runId_fkey" FOREIGN KEY ("runId") REFERENCES "PlayerRun"("id") ON DELETE CASCADE ON UPDATE CASCADE; | ||||
| @@ -12,7 +12,7 @@ model Player { | ||||
|   name              String            @unique | ||||
|   password          String | ||||
|   money             Int               @default(0) | ||||
|   activeChallenge   ChallengeAction?  @relation("ActiveChallenge", fields: [activeChallengeId], references: [id]) | ||||
|   activeChallenge   ChallengeAction?  @relation("ActiveChallenge", fields: [activeChallengeId], references: [id], onDelete: SetNull) | ||||
|   activeChallengeId Int?              @unique | ||||
|   actions           ChallengeAction[] | ||||
|   geolocations      Geolocation[] | ||||
| @@ -24,17 +24,17 @@ model Player { | ||||
| model Game { | ||||
|   id              Int         @id @default(autoincrement()) | ||||
|   started         Boolean     @default(false) | ||||
|   currentRun      PlayerRun?  @relation("CurrentRun", fields: [currentRunId], references: [id]) | ||||
|   currentRun      PlayerRun?  @relation("CurrentRun", fields: [currentRunId], references: [id], onDelete: SetNull) | ||||
|   currentRunId    Int?        @unique | ||||
|   runs            PlayerRun[] @relation("GameRuns") | ||||
| } | ||||
|  | ||||
| model PlayerRun { | ||||
|   id               Int               @id @default(autoincrement()) | ||||
|   game             Game              @relation("GameRuns", fields: [gameId], references: [id]) | ||||
|   game             Game              @relation("GameRuns", fields: [gameId], references: [id], onDelete: Cascade) | ||||
|   runningGame      Game?             @relation("CurrentRun") | ||||
|   gameId           Int | ||||
|   runner           Player            @relation(fields: [runnerId], references: [id]) | ||||
|   runner           Player            @relation(fields: [runnerId], references: [id], onDelete: Cascade) | ||||
|   runnerId         Int | ||||
|   start            DateTime          @default(now()) @db.Timestamptz(3) | ||||
|   end              DateTime?         @db.Timestamptz(3) | ||||
| @@ -45,7 +45,7 @@ model PlayerRun { | ||||
|  | ||||
| model Geolocation { | ||||
|   id               Int      @id @default(autoincrement()) | ||||
|   player           Player   @relation(fields: [playerId], references: [id]) | ||||
|   player           Player   @relation(fields: [playerId], references: [id], onDelete: Cascade) | ||||
|   playerId         Int | ||||
|   longitude        Float | ||||
|   latitude         Float | ||||
| @@ -66,16 +66,16 @@ model Challenge { | ||||
|  | ||||
| model ChallengeAction { | ||||
|   id           Int          @id @default(autoincrement()) | ||||
|   player       Player       @relation(fields: [playerId], references: [id]) | ||||
|   player       Player       @relation(fields: [playerId], references: [id], onDelete: Restrict) | ||||
|   playerId     Int | ||||
|   challenge    Challenge    @relation(fields: [challengeId], references: [id]) | ||||
|   challenge    Challenge    @relation(fields: [challengeId], references: [id], onDelete: Cascade) | ||||
|   challengeId  Int          @unique | ||||
|   success      Boolean      @default(false) | ||||
|   start        DateTime     @default(now()) @db.Timestamptz(3) | ||||
|   end          DateTime?    @db.Timestamptz(3) | ||||
|   penaltyStart DateTime?    @db.Timestamptz(3) | ||||
|   penaltyEnd   DateTime?    @db.Timestamptz(3) | ||||
|   run          PlayerRun    @relation(fields: [runId], references: [id]) | ||||
|   run          PlayerRun    @relation(fields: [runId], references: [id], onDelete: Restrict) | ||||
|   runId        Int | ||||
|   activePlayer Player?      @relation("ActiveChallenge") | ||||
|   moneyUpdate  MoneyUpdate? | ||||
| @@ -83,7 +83,7 @@ model ChallengeAction { | ||||
|  | ||||
| model TrainTrip { | ||||
|   id            String       @id | ||||
|   player        Player       @relation(fields: [playerId], references: [id]) | ||||
|   player        Player       @relation(fields: [playerId], references: [id], onDelete: Restrict) | ||||
|   playerId      Int | ||||
|   distance      Float | ||||
|   from          String | ||||
| @@ -91,22 +91,22 @@ model TrainTrip { | ||||
|   departureTime DateTime     @db.Timestamptz(3) | ||||
|   arrivalTime   DateTime     @db.Timestamptz(3) | ||||
|   infoJson      Json | ||||
|   run           PlayerRun    @relation(fields: [runId], references: [id]) | ||||
|   run           PlayerRun    @relation(fields: [runId], references: [id], onDelete: Restrict) | ||||
|   runId         Int | ||||
|   moneyUpdate   MoneyUpdate? | ||||
| } | ||||
|  | ||||
| model MoneyUpdate { | ||||
|   id           Int              @id @default(autoincrement()) | ||||
|   player       Player           @relation(fields: [playerId], references: [id]) | ||||
|   player       Player           @relation(fields: [playerId], references: [id], onDelete: Restrict) | ||||
|   playerId     Int | ||||
|   amount       Int | ||||
|   reason       MoneyUpdateType | ||||
|   action       ChallengeAction? @relation(fields: [actionId], references: [id]) | ||||
|   action       ChallengeAction? @relation(fields: [actionId], references: [id], onDelete: Cascade) | ||||
|   actionId     Int?             @unique | ||||
|   trip         TrainTrip?       @relation(fields: [tripId], references: [id]) | ||||
|   trip         TrainTrip?       @relation(fields: [tripId], references: [id], onDelete: Cascade) | ||||
|   tripId       String?          @unique | ||||
|   run          PlayerRun?       @relation(fields: [runId], references: [id]) | ||||
|   run          PlayerRun?       @relation(fields: [runId], references: [id], onDelete: Cascade) | ||||
|   runId        Int?             @unique | ||||
|   timestamp    DateTime         @default(now()) @db.Timestamptz(3) | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { ConflictException, Injectable, NotFoundException } from '@nestjs/common' | ||||
| import { BadRequestException, ConflictException, Injectable, NotFoundException } from '@nestjs/common' | ||||
| import { CreateChallengeDto } from './dto/create-challenge.dto' | ||||
| import { UpdateChallengeDto } from './dto/update-challenge.dto' | ||||
| import { Challenge, Player } from '@prisma/client' | ||||
| @@ -13,6 +13,8 @@ export class ChallengesService { | ||||
|  | ||||
|   async create(createChallengeDto: CreateChallengeDto): Promise<Challenge> { | ||||
|     const data = { ...createChallengeDto } | ||||
|     if (await this.prisma.challenge.findFirst({ where: { title: createChallengeDto.title } })) | ||||
|       throw new BadRequestException(`Un défi existe déjà avec pour titre « ${createChallengeDto.title} ».`) | ||||
|     return await this.prisma.challenge.create({ data: data }) | ||||
|   } | ||||
|  | ||||
| @@ -40,6 +42,8 @@ export class ChallengesService { | ||||
|   async update(id: number, updateChallengeDto: UpdateChallengeDto): Promise<Challenge> { | ||||
|     if (!await this.findOne(id)) | ||||
|       throw new NotFoundException(`Aucun défi n'existe avec l'identifiant ${id}`) | ||||
|     if (await this.prisma.challenge.findFirst({ where: { title: updateChallengeDto.title, id: { not: id } } })) | ||||
|       throw new BadRequestException(`Un défi existe déjà avec pour titre « ${updateChallengeDto.title} ».`) | ||||
|     return await this.prisma.challenge.update({ | ||||
|       where: { id }, | ||||
|       data: updateChallengeDto, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user