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