From 3167853d7c4145ece6d8f1be233727b909f9d9f4 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Fri, 30 Dec 2022 22:23:16 +0530 Subject: [PATCH 01/15] feat: daily challenges (incomplete) --- .gitignore | 3 + Dockerfile | 2 +- .../server/daily_challenge/DailyChallenge.kt | 11 ++ .../daily_challenge/DailyChallengeEntity.kt | 18 +++ .../DailyChallengeRepository.kt | 12 ++ .../daily_challenge/DailyChallengeType.kt | 6 + .../server/daily_challenge/dcConstants.json | 122 ++++++++++++++++++ .../resources/META-INF/application.docker.yml | 45 +++++++ 8 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json create mode 100644 server/src/main/resources/META-INF/application.docker.yml diff --git a/.gitignore b/.gitignore index a69ccd3c..bccdad4f 100644 --- a/.gitignore +++ b/.gitignore @@ -39,9 +39,12 @@ out/ ### Data ### data +/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json ### OpenAPI ### openapitools.json ### App Config ### server/src/main/resources/application.yml + + diff --git a/Dockerfile b/Dockerfile index 576c050f..5776b94e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM gradle:7.3.3-jdk17 as base +FROM gradle:7.6-jdk17 as base WORKDIR /server COPY build.gradle.kts settings.gradle.kts gradlew ./ COPY library/build.gradle.kts library/settings.gradle.kts ./library/ diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt new file mode 100644 index 00000000..b35d351c --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt @@ -0,0 +1,11 @@ +package delta.codecharacter.server.daily_challenge + +data class DailyChallenge( + val map: String?, + val maxCoinsToUse: Int?, + val defensesToBeDestroyed: Int?, + val destructionPercentage: String?, + val code: String?, + val maxAirDefenses: Int?, + val maxLandDefenses: Int? +) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt new file mode 100644 index 00000000..3b00508b --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -0,0 +1,18 @@ +package delta.codecharacter.server.game + +import delta.codecharacter.server.daily_challenge.DailyChallenge +import delta.codecharacter.server.daily_challenge.DailyChallengeType +import org.springframework.data.annotation.Id +import org.springframework.data.mongodb.core.mapping.Document +import java.util.Date +import java.util.UUID + +@Document(collection = "daily_challenges") // change it later +data class DailyChallengeEntity( + @Id val id: UUID, + val name: String, + val type: DailyChallengeType, + val description: String, + val date: Date, + val challenge: DailyChallenge +) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt new file mode 100644 index 00000000..e95e054a --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -0,0 +1,12 @@ +package delta.codecharacter.server.daily_challenge + +import delta.codecharacter.server.game.DailyChallengeEntity +import delta.codecharacter.server.game.GameEntity +import delta.codecharacter.server.user.UserEntity +import org.springframework.data.mongodb.repository.MongoRepository +import org.springframework.stereotype.Repository +import java.util.* + +@Repository interface DailyChallengeRepository : MongoRepository { + fun findFirstByDate(date: Date): Optional +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt new file mode 100644 index 00000000..967a17a4 --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt @@ -0,0 +1,6 @@ +package delta.codecharacter.server.daily_challenge + +enum class DailyChallengeType { + MAP, + CODE +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json new file mode 100644 index 00000000..e22902ba --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json @@ -0,0 +1,122 @@ +[ + { + "UUID": "45fbb467-25f3-4fc4-9e1c-0473245af7ef", + "name": "Esse labore occaecat labore anim adipisicing aliqua non enim commodo cillum ipsum reprehenderit ipsum.", + "type": "CODE", + "description": "Laboris ea enim dolor et sint officia pariatur deserunt culpa cillum.", + "challenge": { + "code": "Dolor nisi nisi amet ex nostrud id.", + "maxAirDefenses": 2, + "maxLandDefenses": 9, + "destruction": "30%" + } + }, + { + "UUID": "3a735c9b-ea16-4341-9fdd-5b3e7feed9aa", + "name": "Nulla pariatur proident et officia do consequat tempor.", + "type": "CODE", + "description": "Fugiat velit in sint sint Lorem.", + "challenge": { + "code": "Magna quis est excepteur consectetur anim laboris in proident ullamco consequat.", + "maxAirDefenses": 3, + "maxLandDefenses": 9, + "destruction": "26%" + } + }, + { + "UUID": "27227eff-6bda-48ea-a447-69b565faecd0", + "name": "Sint qui nulla reprehenderit adipisicing.", + "type": "CODE", + "description": "Est cupidatat dolor est minim et.", + "challenge": { + "code": "Eiusmod esse labore ut ut duis culpa dolor cupidatat ut magna duis incididunt consequat ipsum.", + "maxAirDefenses": 3, + "maxLandDefenses": 9, + "destruction": "11%" + } + }, + { + "UUID": "daf80f9e-0cdb-45a3-9ce1-e1ffa7d9e712", + "name": "Consequat incididunt anim sit sit.", + "type": "MAP", + "description": "Aute non in ad occaecat nulla pariatur aliquip consectetur.", + "challenge": { + "map": "Cillum commodo tempor culpa nostrud magna reprehenderit do esse eu excepteur velit laboris et dolore.", + "maxCoinsToUse": 273, + "defensesToBeDestroyed": 5, + "destruction": "61%" + } + }, + { + "UUID": "55644105-bc3c-492e-9780-b80342257631", + "name": "Aute magna culpa cupidatat sit pariatur culpa tempor sunt laborum aute laboris.", + "type": "CODE", + "description": "Cupidatat duis tempor ullamco qui minim.", + "challenge": { + "code": "Culpa commodo in cillum aute irure anim elit incididunt proident minim ipsum irure veniam irure.", + "maxAirDefenses": 2, + "maxLandDefenses": 10, + "destruction": "16%" + } + }, + { + "UUID": "659baee8-4669-449b-a087-3611ddefbc95", + "name": "Ut reprehenderit do esse mollit mollit ipsum magna eu eu mollit esse.", + "type": "MAP", + "description": "Mollit quis elit quis duis exercitation incididunt aliqua et dolor occaecat.", + "challenge": { + "map": "Non deserunt tempor velit veniam ullamco consectetur officia velit in velit do voluptate aliquip.", + "maxCoinsToUse": 289, + "defensesToBeDestroyed": 5, + "destruction": "63%" + } + }, + { + "UUID": "1d442707-84ab-4fc8-8d5e-b0c5598fefec", + "name": "In dolore quis veniam commodo dolor laborum.", + "type": "MAP", + "description": "Aliqua ea eiusmod aliquip enim anim exercitation excepteur.", + "challenge": { + "map": "Id sint reprehenderit commodo eu reprehenderit aute culpa.", + "maxCoinsToUse": 239, + "defensesToBeDestroyed": 4, + "destruction": "65%" + } + }, + { + "UUID": "a37c6d10-2595-464b-88cd-aad5c953ecc5", + "name": "Amet ea aliquip officia sit elit anim id esse do ad sit in.", + "type": "MAP", + "description": "Ut deserunt esse sunt dolore dolor ea veniam Lorem.", + "challenge": { + "map": "Cupidatat amet deserunt in ipsum reprehenderit officia adipisicing consequat sint dolore duis.", + "maxCoinsToUse": 260, + "defensesToBeDestroyed": 3, + "destruction": "33%" + } + }, + { + "UUID": "5b17aa90-927b-4cdf-bc4e-f240af920eec", + "name": "Deserunt ad voluptate labore Lorem excepteur excepteur ullamco cupidatat minim adipisicing consequat qui eu commodo.", + "type": "CODE", + "description": "Nostrud excepteur amet minim amet est duis ad reprehenderit velit ullamco.", + "challenge": { + "code": "Elit quis Lorem ut sit consectetur enim consectetur laborum ex elit reprehenderit ipsum.", + "maxAirDefenses": 2, + "maxLandDefenses": 9, + "destruction": "15%" + } + }, + { + "UUID": "c3c49a34-ae22-49a5-b71d-bcec3f6a1e3a", + "name": "Culpa eu adipisicing proident anim nulla nulla ex occaecat officia.", + "type": "CODE", + "description": "Irure laboris do esse occaecat ad enim aute culpa ut sit amet et.", + "challenge": { + "code": "Quis commodo commodo esse in enim aliquip quis fugiat officia pariatur aliqua laboris.", + "maxAirDefenses": 2, + "maxLandDefenses": 9, + "destruction": "18%" + } + } +] diff --git a/server/src/main/resources/META-INF/application.docker.yml b/server/src/main/resources/META-INF/application.docker.yml new file mode 100644 index 00000000..0fcd3845 --- /dev/null +++ b/server/src/main/resources/META-INF/application.docker.yml @@ -0,0 +1,45 @@ +spring: + data: + mongodb: + host: db + auto-index-creation: true + mvc: + pathmatch: + matching-strategy: ant_path_matcher + jackson: + serialization: + write-dates-as-timestamps: false + rabbitmq: + host: codecharacter_rabbitmq + sendgrid: + api-key: your-api-key + template-id: your-template-id + sender-email: sender-email-id + security: + oauth2: + client: + registration: + google: + client-id: your-google-client-id + client-secret: your-google-client-secret + github: + client-id: your-github-client-id + client-secret: your-github-client-secret + scope: user:email +de: + flapdoodle: + mongodb: + embedded: + version: 5.0.5 + +debug: false + +cors: + enabled: true + allowed-origin: http://localhost:3000 + +jwt: + secret: 'example' + +base-url: your-base-url +frontend-domain: localhost From c6e8a74cd22c37fefcda6aa672dfa44591c00f70 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Sat, 31 Dec 2022 02:30:19 +0530 Subject: [PATCH 02/15] feat: made /dc/get route working --- .gitignore | 1 + docker-compose.dev.yml | 3 +- .../server/daily_challenge/DailyChallenge.kt | 11 -- .../DailyChallengeController.kt | 14 ++ .../daily_challenge/DailyChallengeEntity.kt | 18 +-- .../DailyChallengeRepository.kt | 4 - .../daily_challenge/DailyChallengeService.kt | 19 +++ .../daily_challenge/DailyChallengeType.kt | 6 - .../server/daily_challenge/dcConstants.json | 140 +++++------------- .../server/daily_challenge/seed.js | 64 ++++++++ 10 files changed, 147 insertions(+), 133 deletions(-) delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js diff --git a/.gitignore b/.gitignore index bccdad4f..52a358ce 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ out/ ### Data ### data /server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json +/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js ### OpenAPI ### openapitools.json diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 3a84268d..17532412 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -8,10 +8,11 @@ services: - "27017:27017" volumes: - ./data/mongo_dev:/data/db + - ./server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js:/docker-entrypoint-initdb.d/mongo-init.js networks: - common environment: - MONGO_INITDB_DATABASE: codecharacter_2022 + MONGO_INITDB_DATABASE: test # change it to codecharacter_2022 later restart: always diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt deleted file mode 100644 index b35d351c..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallenge.kt +++ /dev/null @@ -1,11 +0,0 @@ -package delta.codecharacter.server.daily_challenge - -data class DailyChallenge( - val map: String?, - val maxCoinsToUse: Int?, - val defensesToBeDestroyed: Int?, - val destructionPercentage: String?, - val code: String?, - val maxAirDefenses: Int?, - val maxLandDefenses: Int? -) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt new file mode 100644 index 00000000..59967abc --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt @@ -0,0 +1,14 @@ +package delta.codecharacter.server.daily_challenge + +import delta.codecharacter.core.DailyChallengesApi +import delta.codecharacter.dtos.DailyChallengeGetRequestDto +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.RestController + +@RestController +class DailyChallengeController(@Autowired private val dailyChallengeService: DailyChallengeService) : DailyChallengesApi { + override fun getDailyChallenge(): ResponseEntity { + return ResponseEntity.ok(dailyChallengeService.getDailyChallengeByDate()) + } +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index 3b00508b..e30cc801 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -1,18 +1,14 @@ -package delta.codecharacter.server.game +package delta.codecharacter.server.daily_challenge -import delta.codecharacter.server.daily_challenge.DailyChallenge -import delta.codecharacter.server.daily_challenge.DailyChallengeType +import delta.codecharacter.dtos.ChallengeTypeDto +import delta.codecharacter.dtos.DailyChallengeGetRequestDto import org.springframework.data.annotation.Id import org.springframework.data.mongodb.core.mapping.Document -import java.util.Date import java.util.UUID -@Document(collection = "daily_challenges") // change it later +@Document(collection = "daily_challenges") data class DailyChallengeEntity( - @Id val id: UUID, - val name: String, - val type: DailyChallengeType, - val description: String, - val date: Date, - val challenge: DailyChallenge + val challName: String, + val challType: ChallengeTypeDto, + val chall: String, ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt index e95e054a..a47a91e3 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -1,12 +1,8 @@ package delta.codecharacter.server.daily_challenge -import delta.codecharacter.server.game.DailyChallengeEntity -import delta.codecharacter.server.game.GameEntity -import delta.codecharacter.server.user.UserEntity import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.stereotype.Repository import java.util.* @Repository interface DailyChallengeRepository : MongoRepository { - fun findFirstByDate(date: Date): Optional } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt new file mode 100644 index 00000000..6dab25d5 --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -0,0 +1,19 @@ +package delta.codecharacter.server.daily_challenge + +import delta.codecharacter.dtos.* +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service + +@Service +class DailyChallengeService(@Autowired private val dailyChallengeRepository: DailyChallengeRepository) { + + fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { + val dc = dailyChallengeRepository.findAll()[0] // Change this to {Current date - Date on which it was hosted} + return DailyChallengeGetRequestDto( + challName = dc.challName, + chall = dc.chall, + challType = dc.challType + ) + } + +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt deleted file mode 100644 index 967a17a4..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeType.kt +++ /dev/null @@ -1,6 +0,0 @@ -package delta.codecharacter.server.daily_challenge - -enum class DailyChallengeType { - MAP, - CODE -} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json index e22902ba..7f2af752 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json @@ -1,122 +1,62 @@ [ { - "UUID": "45fbb467-25f3-4fc4-9e1c-0473245af7ef", - "name": "Esse labore occaecat labore anim adipisicing aliqua non enim commodo cillum ipsum reprehenderit ipsum.", - "type": "CODE", - "description": "Laboris ea enim dolor et sint officia pariatur deserunt culpa cillum.", - "challenge": { - "code": "Dolor nisi nisi amet ex nostrud id.", - "maxAirDefenses": 2, - "maxLandDefenses": 9, - "destruction": "30%" - } + "UUID": "97bc49a1-857e-403f-9290-12e70b90e56d", + "challName": "Ex eiusmod voluptate eu laborum do.", + "challType": "MAP", + "chall": "Do cupidatat ea officia non ullamco cupidatat velit laboris." }, { - "UUID": "3a735c9b-ea16-4341-9fdd-5b3e7feed9aa", - "name": "Nulla pariatur proident et officia do consequat tempor.", - "type": "CODE", - "description": "Fugiat velit in sint sint Lorem.", - "challenge": { - "code": "Magna quis est excepteur consectetur anim laboris in proident ullamco consequat.", - "maxAirDefenses": 3, - "maxLandDefenses": 9, - "destruction": "26%" - } + "UUID": "29963c40-7557-4033-9ed5-25e5a4337f3b", + "challName": "Eu commodo nisi id mollit ea in laboris.", + "challType": "MAP", + "chall": "Amet aliqua cillum id incididunt reprehenderit laboris sit sunt quis eu id duis commodo." }, { - "UUID": "27227eff-6bda-48ea-a447-69b565faecd0", - "name": "Sint qui nulla reprehenderit adipisicing.", - "type": "CODE", - "description": "Est cupidatat dolor est minim et.", - "challenge": { - "code": "Eiusmod esse labore ut ut duis culpa dolor cupidatat ut magna duis incididunt consequat ipsum.", - "maxAirDefenses": 3, - "maxLandDefenses": 9, - "destruction": "11%" - } + "UUID": "121242cf-f7f8-4bb3-83e3-f7253aa8352c", + "challName": "Eiusmod tempor Lorem ullamco cupidatat incididunt.", + "challType": "CODE", + "chall": "Ad sunt labore amet ad veniam anim." }, { - "UUID": "daf80f9e-0cdb-45a3-9ce1-e1ffa7d9e712", - "name": "Consequat incididunt anim sit sit.", - "type": "MAP", - "description": "Aute non in ad occaecat nulla pariatur aliquip consectetur.", - "challenge": { - "map": "Cillum commodo tempor culpa nostrud magna reprehenderit do esse eu excepteur velit laboris et dolore.", - "maxCoinsToUse": 273, - "defensesToBeDestroyed": 5, - "destruction": "61%" - } + "UUID": "85fd5a72-bc39-47c6-aa45-64d1b13c1352", + "challName": "Enim laborum id proident ipsum reprehenderit dolore sint enim commodo nulla cupidatat.", + "challType": "MAP", + "chall": "Sunt eu nisi occaecat enim quis in irure ex pariatur." }, { - "UUID": "55644105-bc3c-492e-9780-b80342257631", - "name": "Aute magna culpa cupidatat sit pariatur culpa tempor sunt laborum aute laboris.", - "type": "CODE", - "description": "Cupidatat duis tempor ullamco qui minim.", - "challenge": { - "code": "Culpa commodo in cillum aute irure anim elit incididunt proident minim ipsum irure veniam irure.", - "maxAirDefenses": 2, - "maxLandDefenses": 10, - "destruction": "16%" - } + "UUID": "922b16b9-80ac-437f-864d-28ca1a277a94", + "challName": "Qui sit Lorem cupidatat id qui velit culpa.", + "challType": "MAP", + "chall": "Pariatur amet velit culpa elit sint consequat nostrud." }, { - "UUID": "659baee8-4669-449b-a087-3611ddefbc95", - "name": "Ut reprehenderit do esse mollit mollit ipsum magna eu eu mollit esse.", - "type": "MAP", - "description": "Mollit quis elit quis duis exercitation incididunt aliqua et dolor occaecat.", - "challenge": { - "map": "Non deserunt tempor velit veniam ullamco consectetur officia velit in velit do voluptate aliquip.", - "maxCoinsToUse": 289, - "defensesToBeDestroyed": 5, - "destruction": "63%" - } + "UUID": "4a04c5f6-8ef9-4327-9a3f-3575bc41333c", + "challName": "Laboris cillum consectetur esse in cupidatat laboris ut.", + "challType": "CODE", + "chall": "Irure adipisicing excepteur do irure dolore exercitation." }, { - "UUID": "1d442707-84ab-4fc8-8d5e-b0c5598fefec", - "name": "In dolore quis veniam commodo dolor laborum.", - "type": "MAP", - "description": "Aliqua ea eiusmod aliquip enim anim exercitation excepteur.", - "challenge": { - "map": "Id sint reprehenderit commodo eu reprehenderit aute culpa.", - "maxCoinsToUse": 239, - "defensesToBeDestroyed": 4, - "destruction": "65%" - } + "UUID": "01f6ac94-8312-43f6-8b49-095cf660bc9c", + "challName": "Aliqua duis aute ullamco aute adipisicing elit dolor anim ex incididunt et sunt ex id.", + "challType": "CODE", + "chall": "Sint cupidatat do cupidatat deserunt cupidatat elit esse eu." }, { - "UUID": "a37c6d10-2595-464b-88cd-aad5c953ecc5", - "name": "Amet ea aliquip officia sit elit anim id esse do ad sit in.", - "type": "MAP", - "description": "Ut deserunt esse sunt dolore dolor ea veniam Lorem.", - "challenge": { - "map": "Cupidatat amet deserunt in ipsum reprehenderit officia adipisicing consequat sint dolore duis.", - "maxCoinsToUse": 260, - "defensesToBeDestroyed": 3, - "destruction": "33%" - } + "UUID": "6bb56099-22ae-44e3-b060-5e9513db469b", + "challName": "Officia aliqua culpa reprehenderit eiusmod elit commodo ipsum est magna nisi magna voluptate.", + "challType": "CODE", + "chall": "Qui labore enim ipsum tempor sunt." }, { - "UUID": "5b17aa90-927b-4cdf-bc4e-f240af920eec", - "name": "Deserunt ad voluptate labore Lorem excepteur excepteur ullamco cupidatat minim adipisicing consequat qui eu commodo.", - "type": "CODE", - "description": "Nostrud excepteur amet minim amet est duis ad reprehenderit velit ullamco.", - "challenge": { - "code": "Elit quis Lorem ut sit consectetur enim consectetur laborum ex elit reprehenderit ipsum.", - "maxAirDefenses": 2, - "maxLandDefenses": 9, - "destruction": "15%" - } + "UUID": "a06fc971-ee92-4091-af75-c96d0a88721c", + "challName": "Nulla magna officia non esse adipisicing consequat dolor minim nulla laboris qui non minim.", + "challType": "CODE", + "chall": "Nulla officia non nulla adipisicing laboris ut ut elit minim officia pariatur anim laborum." }, { - "UUID": "c3c49a34-ae22-49a5-b71d-bcec3f6a1e3a", - "name": "Culpa eu adipisicing proident anim nulla nulla ex occaecat officia.", - "type": "CODE", - "description": "Irure laboris do esse occaecat ad enim aute culpa ut sit amet et.", - "challenge": { - "code": "Quis commodo commodo esse in enim aliquip quis fugiat officia pariatur aliqua laboris.", - "maxAirDefenses": 2, - "maxLandDefenses": 9, - "destruction": "18%" - } + "UUID": "1dd47ff9-e766-4678-a403-48967ac76c5b", + "challName": "Dolor cupidatat sit Lorem exercitation sit cillum dolor eiusmod in.", + "challType": "MAP", + "chall": "Aute sunt et est reprehenderit incididunt aute id Lorem." } ] diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js new file mode 100644 index 00000000..1e1bffec --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js @@ -0,0 +1,64 @@ +db.daily_challenges.insertMany([ + { + "UUID": "97bc49a1-857e-403f-9290-12e70b90e56d", + "challName": "Ex eiusmod voluptate eu laborum do.", + "challType": "MAP", + "chall": "Do cupidatat ea officia non ullamco cupidatat velit laboris." + }, + { + "UUID": "29963c40-7557-4033-9ed5-25e5a4337f3b", + "challName": "Eu commodo nisi id mollit ea in laboris.", + "challType": "MAP", + "chall": "Amet aliqua cillum id incididunt reprehenderit laboris sit sunt quis eu id duis commodo." + }, + { + "UUID": "121242cf-f7f8-4bb3-83e3-f7253aa8352c", + "challName": "Eiusmod tempor Lorem ullamco cupidatat incididunt.", + "challType": "CODE", + "chall": "Ad sunt labore amet ad veniam anim." + }, + { + "UUID": "85fd5a72-bc39-47c6-aa45-64d1b13c1352", + "challName": "Enim laborum id proident ipsum reprehenderit dolore sint enim commodo nulla cupidatat.", + "challType": "MAP", + "chall": "Sunt eu nisi occaecat enim quis in irure ex pariatur." + }, + { + "UUID": "922b16b9-80ac-437f-864d-28ca1a277a94", + "challName": "Qui sit Lorem cupidatat id qui velit culpa.", + "challType": "MAP", + "chall": "Pariatur amet velit culpa elit sint consequat nostrud." + }, + { + "UUID": "4a04c5f6-8ef9-4327-9a3f-3575bc41333c", + "challName": "Laboris cillum consectetur esse in cupidatat laboris ut.", + "challType": "CODE", + "chall": "Irure adipisicing excepteur do irure dolore exercitation." + }, + { + "UUID": "01f6ac94-8312-43f6-8b49-095cf660bc9c", + "challName": "Aliqua duis aute ullamco aute adipisicing elit dolor anim ex incididunt et sunt ex id.", + "challType": "CODE", + "chall": "Sint cupidatat do cupidatat deserunt cupidatat elit esse eu." + }, + { + "UUID": "6bb56099-22ae-44e3-b060-5e9513db469b", + "challName": "Officia aliqua culpa reprehenderit eiusmod elit commodo ipsum est magna nisi magna voluptate.", + "challType": "CODE", + "chall": "Qui labore enim ipsum tempor sunt." + }, + { + "UUID": "a06fc971-ee92-4091-af75-c96d0a88721c", + "challName": "Nulla magna officia non esse adipisicing consequat dolor minim nulla laboris qui non minim.", + "challType": "CODE", + "chall": "Nulla officia non nulla adipisicing laboris ut ut elit minim officia pariatur anim laborum." + }, + { + "UUID": "1dd47ff9-e766-4678-a403-48967ac76c5b", + "challName": "Dolor cupidatat sit Lorem exercitation sit cillum dolor eiusmod in.", + "challType": "MAP", + "chall": "Aute sunt et est reprehenderit incididunt aute id Lorem." + } +] +); + From 470dec4844da608c95593bbbc7d414fef2f48708 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Sat, 31 Dec 2022 12:20:08 +0530 Subject: [PATCH 03/15] fix: Fixed import issues --- .../server/daily_challenge/DailyChallengeRepository.kt | 2 +- .../server/daily_challenge/DailyChallengeService.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt index a47a91e3..e383c7b4 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -2,7 +2,7 @@ package delta.codecharacter.server.daily_challenge import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.stereotype.Repository -import java.util.* +import java.util.UUID @Repository interface DailyChallengeRepository : MongoRepository { } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index 6dab25d5..32448832 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -1,6 +1,6 @@ package delta.codecharacter.server.daily_challenge -import delta.codecharacter.dtos.* +import delta.codecharacter.dtos.DailyChallengeGetRequestDto import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service From 7ba14268906ad840f308fa3dfb6a5a0920044da1 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Sat, 31 Dec 2022 13:54:27 +0530 Subject: [PATCH 04/15] fix: formatted --- .../daily_challenge/DailyChallengeController.kt | 4 +++- .../server/daily_challenge/DailyChallengeEntity.kt | 9 +++------ .../daily_challenge/DailyChallengeRepository.kt | 3 +-- .../daily_challenge/DailyChallengeService.kt | 14 ++++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt index 59967abc..da145600 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt @@ -7,7 +7,9 @@ import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.RestController @RestController -class DailyChallengeController(@Autowired private val dailyChallengeService: DailyChallengeService) : DailyChallengesApi { +class DailyChallengeController( + @Autowired private val dailyChallengeService: DailyChallengeService +) : DailyChallengesApi { override fun getDailyChallenge(): ResponseEntity { return ResponseEntity.ok(dailyChallengeService.getDailyChallengeByDate()) } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index e30cc801..2af66c0b 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -1,14 +1,11 @@ package delta.codecharacter.server.daily_challenge import delta.codecharacter.dtos.ChallengeTypeDto -import delta.codecharacter.dtos.DailyChallengeGetRequestDto -import org.springframework.data.annotation.Id import org.springframework.data.mongodb.core.mapping.Document -import java.util.UUID @Document(collection = "daily_challenges") data class DailyChallengeEntity( - val challName: String, - val challType: ChallengeTypeDto, - val chall: String, + val challName: String, + val challType: ChallengeTypeDto, + val chall: String, ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt index e383c7b4..27117a15 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -4,5 +4,4 @@ import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.stereotype.Repository import java.util.UUID -@Repository interface DailyChallengeRepository : MongoRepository { -} +@Repository interface DailyChallengeRepository : MongoRepository diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index 32448832..2247f5ff 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -5,15 +5,17 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service @Service -class DailyChallengeService(@Autowired private val dailyChallengeRepository: DailyChallengeRepository) { +class DailyChallengeService( + @Autowired private val dailyChallengeRepository: DailyChallengeRepository +) { fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { - val dc = dailyChallengeRepository.findAll()[0] // Change this to {Current date - Date on which it was hosted} + val dc = + dailyChallengeRepository.findAll()[ + 0 + ] // Change this to {Current date - Date on which it was hosted} return DailyChallengeGetRequestDto( - challName = dc.challName, - chall = dc.chall, - challType = dc.challType + challName = dc.challName, chall = dc.chall, challType = dc.challType ) } - } From 9c1e9ef82f83b0e3afc5d106325b504f37e5f8f4 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Wed, 4 Jan 2023 20:09:11 +0530 Subject: [PATCH 05/15] fix: completed todos --- .gitignore | 4 +- docker-compose.dev.yml | 5 +- .../codecharacter/server/ServerApplication.kt | 1 + .../daily_challenge/DailyChallengeEntity.kt | 1 + .../DailyChallengeRepository.kt | 5 +- .../daily_challenge/DailyChallengeSeeder.kt | 35 ++++++++++ .../daily_challenge/DailyChallengeService.kt | 19 ++++-- .../server/daily_challenge/dcConstants.json | 62 ------------------ .../server/daily_challenge/seed.js | 64 ------------------- .../resources/META-INF/application.docker.yml | 45 ------------- 10 files changed, 60 insertions(+), 181 deletions(-) create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js delete mode 100644 server/src/main/resources/META-INF/application.docker.yml diff --git a/.gitignore b/.gitignore index 52a358ce..2417ba28 100644 --- a/.gitignore +++ b/.gitignore @@ -39,8 +39,8 @@ out/ ### Data ### data -/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json -/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js +dcConstants.json +seed.js ### OpenAPI ### openapitools.json diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 17532412..a9d6b3c2 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -8,11 +8,10 @@ services: - "27017:27017" volumes: - ./data/mongo_dev:/data/db - - ./server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js:/docker-entrypoint-initdb.d/mongo-init.js networks: - common environment: - MONGO_INITDB_DATABASE: test # change it to codecharacter_2022 later + MONGO_INITDB_DATABASE: codecharacter_2022 restart: always @@ -44,6 +43,8 @@ services: - ./:/server networks: - common + environment: + EVENT_START_DATE: 2023 0 1 networks: common: diff --git a/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt b/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt index 404fbe8f..1ee41a21 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt @@ -1,5 +1,6 @@ package delta.codecharacter.server +// import delta.codecharacter.server.daily_challenge.DailyChallengeSeeder import org.springframework.beans.factory.annotation.Value import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index 2af66c0b..1b3ad143 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -5,6 +5,7 @@ import org.springframework.data.mongodb.core.mapping.Document @Document(collection = "daily_challenges") data class DailyChallengeEntity( + val day: Int, val challName: String, val challType: ChallengeTypeDto, val chall: String, diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt index 27117a15..d9de7f04 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -4,4 +4,7 @@ import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.stereotype.Repository import java.util.UUID -@Repository interface DailyChallengeRepository : MongoRepository +@Repository +interface DailyChallengeRepository : MongoRepository { + fun findByDay(day: Int): DailyChallengeEntity +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt new file mode 100644 index 00000000..cd4a8288 --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt @@ -0,0 +1,35 @@ +package delta.codecharacter.server.daily_challenge + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Value +import org.springframework.boot.context.event.ApplicationReadyEvent +import org.springframework.context.event.EventListener +import org.springframework.stereotype.Component +import java.io.File + +@Component +class DailyChallengeSeeder { + + @Autowired private lateinit var dailyChallengeRepository: DailyChallengeRepository + + @Value( + "/server/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json" + ) + lateinit var filePath: String + @EventListener(ApplicationReadyEvent::class) + fun doSomethingAfterStartup() { + println("Initialising daily challenges") + + // Delete everything initially + dailyChallengeRepository.deleteAll() + + // Seed the database + val jsonString = File(filePath).readText() + val objectMapper = jacksonObjectMapper() + val dcs: List = objectMapper.readValue(jsonString) + + dailyChallengeRepository.saveAll(dcs) + } +} diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index 2247f5ff..80f5cecc 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -2,18 +2,27 @@ package delta.codecharacter.server.daily_challenge import delta.codecharacter.dtos.DailyChallengeGetRequestDto import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service +import java.util.Calendar +import java.util.concurrent.TimeUnit @Service class DailyChallengeService( @Autowired private val dailyChallengeRepository: DailyChallengeRepository ) { - + @Value("\${EVENT_START_DATE}") lateinit var tempDate: String fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { - val dc = - dailyChallengeRepository.findAll()[ - 0 - ] // Change this to {Current date - Date on which it was hosted} + + val date: List = tempDate.split(" ") + + val startDate = Calendar.getInstance() + startDate.set(date[0].toInt(), date[1].toInt(), date[2].toInt()) + + val millionSeconds = Calendar.getInstance().timeInMillis - startDate.timeInMillis + val numberOfDays = TimeUnit.MILLISECONDS.toDays(millionSeconds).toInt() + + val dc = dailyChallengeRepository.findByDay(numberOfDays) return DailyChallengeGetRequestDto( challName = dc.challName, chall = dc.chall, challType = dc.challType ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json deleted file mode 100644 index 7f2af752..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json +++ /dev/null @@ -1,62 +0,0 @@ -[ - { - "UUID": "97bc49a1-857e-403f-9290-12e70b90e56d", - "challName": "Ex eiusmod voluptate eu laborum do.", - "challType": "MAP", - "chall": "Do cupidatat ea officia non ullamco cupidatat velit laboris." - }, - { - "UUID": "29963c40-7557-4033-9ed5-25e5a4337f3b", - "challName": "Eu commodo nisi id mollit ea in laboris.", - "challType": "MAP", - "chall": "Amet aliqua cillum id incididunt reprehenderit laboris sit sunt quis eu id duis commodo." - }, - { - "UUID": "121242cf-f7f8-4bb3-83e3-f7253aa8352c", - "challName": "Eiusmod tempor Lorem ullamco cupidatat incididunt.", - "challType": "CODE", - "chall": "Ad sunt labore amet ad veniam anim." - }, - { - "UUID": "85fd5a72-bc39-47c6-aa45-64d1b13c1352", - "challName": "Enim laborum id proident ipsum reprehenderit dolore sint enim commodo nulla cupidatat.", - "challType": "MAP", - "chall": "Sunt eu nisi occaecat enim quis in irure ex pariatur." - }, - { - "UUID": "922b16b9-80ac-437f-864d-28ca1a277a94", - "challName": "Qui sit Lorem cupidatat id qui velit culpa.", - "challType": "MAP", - "chall": "Pariatur amet velit culpa elit sint consequat nostrud." - }, - { - "UUID": "4a04c5f6-8ef9-4327-9a3f-3575bc41333c", - "challName": "Laboris cillum consectetur esse in cupidatat laboris ut.", - "challType": "CODE", - "chall": "Irure adipisicing excepteur do irure dolore exercitation." - }, - { - "UUID": "01f6ac94-8312-43f6-8b49-095cf660bc9c", - "challName": "Aliqua duis aute ullamco aute adipisicing elit dolor anim ex incididunt et sunt ex id.", - "challType": "CODE", - "chall": "Sint cupidatat do cupidatat deserunt cupidatat elit esse eu." - }, - { - "UUID": "6bb56099-22ae-44e3-b060-5e9513db469b", - "challName": "Officia aliqua culpa reprehenderit eiusmod elit commodo ipsum est magna nisi magna voluptate.", - "challType": "CODE", - "chall": "Qui labore enim ipsum tempor sunt." - }, - { - "UUID": "a06fc971-ee92-4091-af75-c96d0a88721c", - "challName": "Nulla magna officia non esse adipisicing consequat dolor minim nulla laboris qui non minim.", - "challType": "CODE", - "chall": "Nulla officia non nulla adipisicing laboris ut ut elit minim officia pariatur anim laborum." - }, - { - "UUID": "1dd47ff9-e766-4678-a403-48967ac76c5b", - "challName": "Dolor cupidatat sit Lorem exercitation sit cillum dolor eiusmod in.", - "challType": "MAP", - "chall": "Aute sunt et est reprehenderit incididunt aute id Lorem." - } -] diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js deleted file mode 100644 index 1e1bffec..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/seed.js +++ /dev/null @@ -1,64 +0,0 @@ -db.daily_challenges.insertMany([ - { - "UUID": "97bc49a1-857e-403f-9290-12e70b90e56d", - "challName": "Ex eiusmod voluptate eu laborum do.", - "challType": "MAP", - "chall": "Do cupidatat ea officia non ullamco cupidatat velit laboris." - }, - { - "UUID": "29963c40-7557-4033-9ed5-25e5a4337f3b", - "challName": "Eu commodo nisi id mollit ea in laboris.", - "challType": "MAP", - "chall": "Amet aliqua cillum id incididunt reprehenderit laboris sit sunt quis eu id duis commodo." - }, - { - "UUID": "121242cf-f7f8-4bb3-83e3-f7253aa8352c", - "challName": "Eiusmod tempor Lorem ullamco cupidatat incididunt.", - "challType": "CODE", - "chall": "Ad sunt labore amet ad veniam anim." - }, - { - "UUID": "85fd5a72-bc39-47c6-aa45-64d1b13c1352", - "challName": "Enim laborum id proident ipsum reprehenderit dolore sint enim commodo nulla cupidatat.", - "challType": "MAP", - "chall": "Sunt eu nisi occaecat enim quis in irure ex pariatur." - }, - { - "UUID": "922b16b9-80ac-437f-864d-28ca1a277a94", - "challName": "Qui sit Lorem cupidatat id qui velit culpa.", - "challType": "MAP", - "chall": "Pariatur amet velit culpa elit sint consequat nostrud." - }, - { - "UUID": "4a04c5f6-8ef9-4327-9a3f-3575bc41333c", - "challName": "Laboris cillum consectetur esse in cupidatat laboris ut.", - "challType": "CODE", - "chall": "Irure adipisicing excepteur do irure dolore exercitation." - }, - { - "UUID": "01f6ac94-8312-43f6-8b49-095cf660bc9c", - "challName": "Aliqua duis aute ullamco aute adipisicing elit dolor anim ex incididunt et sunt ex id.", - "challType": "CODE", - "chall": "Sint cupidatat do cupidatat deserunt cupidatat elit esse eu." - }, - { - "UUID": "6bb56099-22ae-44e3-b060-5e9513db469b", - "challName": "Officia aliqua culpa reprehenderit eiusmod elit commodo ipsum est magna nisi magna voluptate.", - "challType": "CODE", - "chall": "Qui labore enim ipsum tempor sunt." - }, - { - "UUID": "a06fc971-ee92-4091-af75-c96d0a88721c", - "challName": "Nulla magna officia non esse adipisicing consequat dolor minim nulla laboris qui non minim.", - "challType": "CODE", - "chall": "Nulla officia non nulla adipisicing laboris ut ut elit minim officia pariatur anim laborum." - }, - { - "UUID": "1dd47ff9-e766-4678-a403-48967ac76c5b", - "challName": "Dolor cupidatat sit Lorem exercitation sit cillum dolor eiusmod in.", - "challType": "MAP", - "chall": "Aute sunt et est reprehenderit incididunt aute id Lorem." - } -] -); - diff --git a/server/src/main/resources/META-INF/application.docker.yml b/server/src/main/resources/META-INF/application.docker.yml deleted file mode 100644 index 0fcd3845..00000000 --- a/server/src/main/resources/META-INF/application.docker.yml +++ /dev/null @@ -1,45 +0,0 @@ -spring: - data: - mongodb: - host: db - auto-index-creation: true - mvc: - pathmatch: - matching-strategy: ant_path_matcher - jackson: - serialization: - write-dates-as-timestamps: false - rabbitmq: - host: codecharacter_rabbitmq - sendgrid: - api-key: your-api-key - template-id: your-template-id - sender-email: sender-email-id - security: - oauth2: - client: - registration: - google: - client-id: your-google-client-id - client-secret: your-google-client-secret - github: - client-id: your-github-client-id - client-secret: your-github-client-secret - scope: user:email -de: - flapdoodle: - mongodb: - embedded: - version: 5.0.5 - -debug: false - -cors: - enabled: true - allowed-origin: http://localhost:3000 - -jwt: - secret: 'example' - -base-url: your-base-url -frontend-domain: localhost From 430c33f31fe323b1325bcb9691d96b40951d538d Mon Sep 17 00:00:00 2001 From: zabarudo Date: Sun, 8 Jan 2023 02:23:15 +0530 Subject: [PATCH 06/15] fix: PR Requests (3/4 done) --- .gitignore | 1 - docker-compose.dev.yml | 3 +- .../codecharacter/server/ServerApplication.kt | 1 - .../daily_challenge/DailyChallengeSeeder.kt | 36 ++++++----- .../daily_challenge/DailyChallengeService.kt | 28 ++++++--- .../resources/application.docker.example.yml | 3 + .../main/resources/application.example.yml | 3 + .../main/resources/dcConstants.example.json | 62 +++++++++++++++++++ 8 files changed, 109 insertions(+), 28 deletions(-) create mode 100644 server/src/main/resources/dcConstants.example.json diff --git a/.gitignore b/.gitignore index 2417ba28..4bcd381b 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,6 @@ out/ ### Data ### data dcConstants.json -seed.js ### OpenAPI ### openapitools.json diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index a9d6b3c2..cc021261 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -43,8 +43,7 @@ services: - ./:/server networks: - common - environment: - EVENT_START_DATE: 2023 0 1 + networks: common: diff --git a/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt b/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt index 1ee41a21..404fbe8f 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/ServerApplication.kt @@ -1,6 +1,5 @@ package delta.codecharacter.server -// import delta.codecharacter.server.daily_challenge.DailyChallengeSeeder import org.springframework.beans.factory.annotation.Value import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt index cd4a8288..63f64bbe 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt @@ -2,34 +2,42 @@ package delta.codecharacter.server.daily_challenge import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue +import org.slf4j.Logger +import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired -import org.springframework.beans.factory.annotation.Value import org.springframework.boot.context.event.ApplicationReadyEvent import org.springframework.context.event.EventListener import org.springframework.stereotype.Component -import java.io.File + + @Component class DailyChallengeSeeder { @Autowired private lateinit var dailyChallengeRepository: DailyChallengeRepository - @Value( - "/server/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/dcConstants.json" - ) - lateinit var filePath: String + private val logger : Logger = LoggerFactory.getLogger(DailyChallengeSeeder::class.java) @EventListener(ApplicationReadyEvent::class) fun doSomethingAfterStartup() { - println("Initialising daily challenges") - // Delete everything initially - dailyChallengeRepository.deleteAll() + if(dailyChallengeRepository.findAll().isEmpty()){ + logger.info("Seeding daily_challenges") + + // Delete everything initially + dailyChallengeRepository.deleteAll() + + // Seed the database + val jsonString = this::class.java.classLoader.getResource("dcConstants.json").readText() + if(jsonString != null){ + val objectMapper = jacksonObjectMapper() + val dcs: List = objectMapper.readValue(jsonString) + dailyChallengeRepository.saveAll(dcs) + } + else{ + logger.error("dcConstants.json not found or doesn't exist") + } - // Seed the database - val jsonString = File(filePath).readText() - val objectMapper = jacksonObjectMapper() - val dcs: List = objectMapper.readValue(jsonString) + } - dailyChallengeRepository.saveAll(dcs) } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index 80f5cecc..938c05e2 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -4,25 +4,33 @@ import delta.codecharacter.dtos.DailyChallengeGetRequestDto import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service -import java.util.Calendar -import java.util.concurrent.TimeUnit +import java.time.* +import java.time.format.DateTimeFormatter +import java.util.* + @Service class DailyChallengeService( @Autowired private val dailyChallengeRepository: DailyChallengeRepository ) { - @Value("\${EVENT_START_DATE}") lateinit var tempDate: String - fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { - val date: List = tempDate.split(" ") + @Value("\${environment.event-start-date}") + val tempDate: String = "" + - val startDate = Calendar.getInstance() - startDate.set(date[0].toInt(), date[1].toInt(), date[2].toInt()) + fun findNumberOfDays(): Int { + val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.ENGLISH) - val millionSeconds = Calendar.getInstance().timeInMillis - startDate.timeInMillis - val numberOfDays = TimeUnit.MILLISECONDS.toDays(millionSeconds).toInt() + val givenDateTime = LocalDateTime.of(LocalDate.parse(tempDate, formatter), LocalTime.of(0, 0)) + .atZone(ZoneId.of("Asia/Kolkata")) + val zdtNow = ZonedDateTime.now(ZoneId.of("Asia/Kolkata")) + val period: Period = Period.between(givenDateTime.toLocalDate(), zdtNow.toLocalDate()) + return period.days + } + + fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { - val dc = dailyChallengeRepository.findByDay(numberOfDays) + val dc = dailyChallengeRepository.findByDay(findNumberOfDays()) return DailyChallengeGetRequestDto( challName = dc.challName, chall = dc.chall, challType = dc.challType ) diff --git a/server/src/main/resources/application.docker.example.yml b/server/src/main/resources/application.docker.example.yml index 0fcd3845..af5c6e99 100644 --- a/server/src/main/resources/application.docker.example.yml +++ b/server/src/main/resources/application.docker.example.yml @@ -26,6 +26,9 @@ spring: client-id: your-github-client-id client-secret: your-github-client-secret scope: user:email +environment: + event-start-date: YYYY/MM(0-indexed)/dd + de: flapdoodle: mongodb: diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index f8dbb072..f4aae04c 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -24,6 +24,9 @@ spring: client-id: your-github-client-id client-secret: your-github-client-secret scope: user:email +environment: + event-start-date: YYYY/MM(0-indexed)/dd + de: flapdoodle: mongodb: diff --git a/server/src/main/resources/dcConstants.example.json b/server/src/main/resources/dcConstants.example.json new file mode 100644 index 00000000..b57cf41b --- /dev/null +++ b/server/src/main/resources/dcConstants.example.json @@ -0,0 +1,62 @@ +[ + { + "day": 0, + "challName": "Aliqua cillum proident nulla elit dolore id quis eu.", + "challType": "CODE", + "chall": "Eu id velit incididunt commodo sint aute reprehenderit do aliquip commodo enim qui excepteur." + }, + { + "day": 1, + "challName": "Consectetur elit sint excepteur quis enim.", + "challType": "CODE", + "chall": "Consectetur irure aute laborum esse excepteur commodo proident." + }, + { + "day": 2, + "challName": "Tempor do commodo occaecat nulla.", + "challType": "CODE", + "chall": "Deserunt proident aliquip cillum ipsum voluptate duis elit commodo qui elit aliquip dolor." + }, + { + "day": 3, + "challName": "In quis minim id voluptate sunt aliquip elit elit laborum dolor excepteur ea.", + "challType": "MAP", + "chall": "Sunt officia deserunt sunt voluptate." + }, + { + "day": 4, + "challName": "Reprehenderit amet ad voluptate esse aliquip.", + "challType": "MAP", + "chall": "Sit est nostrud occaecat sit qui aliqua nisi dolor eu non consectetur." + }, + { + "day": 5, + "challName": "Nisi in laborum et pariatur.", + "challType": "CODE", + "chall": "Commodo ea esse minim dolor ipsum nostrud anim." + }, + { + "day": 6, + "challName": "Lorem cupidatat labore ut dolor esse exercitation consequat quis qui do.", + "challType": "MAP", + "chall": "Culpa irure nulla cillum anim laboris ipsum est ullamco aute eiusmod veniam magna qui Lorem." + }, + { + "day": 7, + "challName": "Consequat anim nisi sit incididunt minim exercitation.", + "challType": "CODE", + "chall": "Qui Lorem dolor dolor do mollit labore proident cillum." + }, + { + "day": 8, + "challName": "Excepteur tempor voluptate fugiat et irure occaecat nisi culpa laboris.", + "challType": "CODE", + "chall": "Incididunt labore pariatur sit esse mollit." + }, + { + "day": 9, + "challName": "Ea fugiat elit laboris culpa et.", + "challType": "CODE", + "chall": "Lorem sunt duis pariatur et exercitation ea tempor amet minim culpa mollit in id." + } +] From 6136bb62699234876b790207ebad6a9ecbc9a3a7 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Sun, 8 Jan 2023 11:53:01 +0530 Subject: [PATCH 07/15] fix: Finished PR Requests --- .../DailyChallengeController.kt | 13 +++- .../daily_challenge/DailyChallengeEntity.kt | 2 + .../daily_challenge/DailyChallengeSeeder.kt | 15 ++--- .../daily_challenge/DailyChallengeService.kt | 25 ++++--- .../DailyChallengeLeaderboardController.kt | 20 ------ .../resources/application.docker.example.yml | 2 +- .../main/resources/application.example.yml | 2 +- .../main/resources/dcConstants.example.json | 66 ++++++++++++------- 8 files changed, 79 insertions(+), 66 deletions(-) delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/leaderboard/DailyChallengeLeaderboardController.kt diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt index da145600..bbfa34ab 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt @@ -2,15 +2,26 @@ package delta.codecharacter.server.daily_challenge import delta.codecharacter.core.DailyChallengesApi import delta.codecharacter.dtos.DailyChallengeGetRequestDto +import delta.codecharacter.dtos.DailyChallengeLeaderBoardResponseDto +import delta.codecharacter.server.user.public_user.PublicUserService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity +import org.springframework.security.access.annotation.Secured import org.springframework.web.bind.annotation.RestController @RestController class DailyChallengeController( - @Autowired private val dailyChallengeService: DailyChallengeService + @Autowired private val dailyChallengeService: DailyChallengeService, + @Autowired private val publicUserService: PublicUserService ) : DailyChallengesApi { + @Secured(value = ["ROLE_USER"]) override fun getDailyChallenge(): ResponseEntity { return ResponseEntity.ok(dailyChallengeService.getDailyChallengeByDate()) } + override fun getDailyChallengeLeaderBoard( + page: Int?, + size: Int? + ): ResponseEntity> { + return ResponseEntity.ok(publicUserService.getDailyChallengeLeaderboard(page, size)) + } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index 1b3ad143..a6b2a940 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -9,4 +9,6 @@ data class DailyChallengeEntity( val challName: String, val challType: ChallengeTypeDto, val chall: String, + val description: String?, + val completionStatus: Boolean? ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt index 63f64bbe..6ea32650 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt @@ -9,35 +9,28 @@ import org.springframework.boot.context.event.ApplicationReadyEvent import org.springframework.context.event.EventListener import org.springframework.stereotype.Component - - @Component class DailyChallengeSeeder { @Autowired private lateinit var dailyChallengeRepository: DailyChallengeRepository - private val logger : Logger = LoggerFactory.getLogger(DailyChallengeSeeder::class.java) + private val logger: Logger = LoggerFactory.getLogger(DailyChallengeSeeder::class.java) @EventListener(ApplicationReadyEvent::class) fun doSomethingAfterStartup() { - if(dailyChallengeRepository.findAll().isEmpty()){ + if (dailyChallengeRepository.findAll().isEmpty()) { logger.info("Seeding daily_challenges") - // Delete everything initially dailyChallengeRepository.deleteAll() - // Seed the database val jsonString = this::class.java.classLoader.getResource("dcConstants.json").readText() - if(jsonString != null){ + if (jsonString.isNotEmpty()) { val objectMapper = jacksonObjectMapper() val dcs: List = objectMapper.readValue(jsonString) dailyChallengeRepository.saveAll(dcs) - } - else{ + } else { logger.error("dcConstants.json not found or doesn't exist") } - } - } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index 938c05e2..db5c8770 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -4,24 +4,27 @@ import delta.codecharacter.dtos.DailyChallengeGetRequestDto import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service -import java.time.* +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.LocalTime +import java.time.Period +import java.time.ZoneId +import java.time.ZonedDateTime import java.time.format.DateTimeFormatter -import java.util.* - +import java.util.Locale @Service class DailyChallengeService( @Autowired private val dailyChallengeRepository: DailyChallengeRepository ) { - @Value("\${environment.event-start-date}") - val tempDate: String = "" - + @Value("\${environment.event-start-date}") val tempDate: String = "" fun findNumberOfDays(): Int { - val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.ENGLISH) + val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd/HH/mm/ss", Locale.ENGLISH) - val givenDateTime = LocalDateTime.of(LocalDate.parse(tempDate, formatter), LocalTime.of(0, 0)) + val givenDateTime = + LocalDateTime.of(LocalDate.parse(tempDate, formatter), LocalTime.of(0, 0)) .atZone(ZoneId.of("Asia/Kolkata")) val zdtNow = ZonedDateTime.now(ZoneId.of("Asia/Kolkata")) val period: Period = Period.between(givenDateTime.toLocalDate(), zdtNow.toLocalDate()) @@ -32,7 +35,11 @@ class DailyChallengeService( val dc = dailyChallengeRepository.findByDay(findNumberOfDays()) return DailyChallengeGetRequestDto( - challName = dc.challName, chall = dc.chall, challType = dc.challType + challName = dc.challName, + chall = dc.chall, + challType = dc.challType, + description = dc.description, + completionStatus = dc.completionStatus ) } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/leaderboard/DailyChallengeLeaderboardController.kt b/server/src/main/kotlin/delta/codecharacter/server/leaderboard/DailyChallengeLeaderboardController.kt deleted file mode 100644 index 8e6084b3..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/leaderboard/DailyChallengeLeaderboardController.kt +++ /dev/null @@ -1,20 +0,0 @@ -package delta.codecharacter.server.leaderboard - -import delta.codecharacter.core.DailyChallengesApi -import delta.codecharacter.dtos.DailyChallengeLeaderBoardResponseDto -import delta.codecharacter.server.user.public_user.PublicUserService -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.RestController - -@RestController -class DailyChallengeLeaderboardController( - @Autowired private val publicUserService: PublicUserService -) : DailyChallengesApi { - override fun getDailyChallengeLeaderBoard( - page: Int?, - size: Int? - ): ResponseEntity> { - return ResponseEntity.ok(publicUserService.getDailyChallengeLeaderboard(page, size)) - } -} diff --git a/server/src/main/resources/application.docker.example.yml b/server/src/main/resources/application.docker.example.yml index af5c6e99..aa2ec244 100644 --- a/server/src/main/resources/application.docker.example.yml +++ b/server/src/main/resources/application.docker.example.yml @@ -27,7 +27,7 @@ spring: client-secret: your-github-client-secret scope: user:email environment: - event-start-date: YYYY/MM(0-indexed)/dd + event-start-date: YYYY/MM/dd/HH/mm/ss de: flapdoodle: diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index f4aae04c..b407cddc 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -25,7 +25,7 @@ spring: client-secret: your-github-client-secret scope: user:email environment: - event-start-date: YYYY/MM(0-indexed)/dd + event-start-date: YYYY/MM/dd/HH/mm/ss de: flapdoodle: diff --git a/server/src/main/resources/dcConstants.example.json b/server/src/main/resources/dcConstants.example.json index b57cf41b..bc0eea0b 100644 --- a/server/src/main/resources/dcConstants.example.json +++ b/server/src/main/resources/dcConstants.example.json @@ -1,62 +1,82 @@ [ { "day": 0, - "challName": "Aliqua cillum proident nulla elit dolore id quis eu.", + "challName": "Nulla aliquip do ut deserunt culpa duis laboris velit in ea et elit dolore incididunt.", "challType": "CODE", - "chall": "Eu id velit incididunt commodo sint aute reprehenderit do aliquip commodo enim qui excepteur." + "chall": "Anim excepteur duis exercitation sint magna.", + "description": "Amet ad cupidatat anim mollit ex quis cupidatat non nisi consequat anim nostrud consectetur.", + "completionStatus": false }, { "day": 1, - "challName": "Consectetur elit sint excepteur quis enim.", + "challName": "Culpa duis ullamco eu consectetur ipsum in occaecat labore consequat ad commodo deserunt fugiat eu.", "challType": "CODE", - "chall": "Consectetur irure aute laborum esse excepteur commodo proident." + "chall": "Veniam fugiat est veniam minim minim sunt cillum voluptate.", + "description": "Et aliqua dolor est reprehenderit magna consectetur laboris incididunt deserunt voluptate.", + "completionStatus": false }, { "day": 2, - "challName": "Tempor do commodo occaecat nulla.", - "challType": "CODE", - "chall": "Deserunt proident aliquip cillum ipsum voluptate duis elit commodo qui elit aliquip dolor." + "challName": "Mollit aliquip et Lorem eiusmod ea in ad consequat culpa eu.", + "challType": "MAP", + "chall": "Minim laborum cillum qui dolor incididunt sit fugiat.", + "description": "Non enim cillum officia adipisicing quis voluptate.", + "completionStatus": true }, { "day": 3, - "challName": "In quis minim id voluptate sunt aliquip elit elit laborum dolor excepteur ea.", + "challName": "Officia labore laboris nostrud tempor Lorem proident officia deserunt tempor exercitation adipisicing nostrud.", "challType": "MAP", - "chall": "Sunt officia deserunt sunt voluptate." + "chall": "Amet nostrud ullamco cupidatat ex et officia eu.", + "description": "Et occaecat labore laboris aliquip laboris ut non.", + "completionStatus": true }, { "day": 4, - "challName": "Reprehenderit amet ad voluptate esse aliquip.", + "challName": "Ullamco labore anim consequat ad aute mollit incididunt incididunt.", "challType": "MAP", - "chall": "Sit est nostrud occaecat sit qui aliqua nisi dolor eu non consectetur." + "chall": "Proident adipisicing voluptate non aute aliquip reprehenderit sit Lorem.", + "description": "Commodo reprehenderit laborum culpa incididunt irure consectetur veniam laborum irure adipisicing magna voluptate aute.", + "completionStatus": false }, { "day": 5, - "challName": "Nisi in laborum et pariatur.", + "challName": "Mollit ullamco ipsum veniam adipisicing cupidatat veniam commodo minim nostrud consequat aliquip veniam.", "challType": "CODE", - "chall": "Commodo ea esse minim dolor ipsum nostrud anim." + "chall": "Esse magna commodo id magna qui.", + "description": "Laboris duis nulla mollit proident laboris aute minim ullamco aute ullamco Lorem magna consectetur quis.", + "completionStatus": false }, { "day": 6, - "challName": "Lorem cupidatat labore ut dolor esse exercitation consequat quis qui do.", - "challType": "MAP", - "chall": "Culpa irure nulla cillum anim laboris ipsum est ullamco aute eiusmod veniam magna qui Lorem." + "challName": "Nostrud deserunt et tempor dolor consequat dolor sunt.", + "challType": "CODE", + "chall": "Id labore deserunt fugiat nisi aute minim ipsum esse nostrud sint.", + "description": "Qui consectetur esse enim sint elit sunt magna est.", + "completionStatus": true }, { "day": 7, - "challName": "Consequat anim nisi sit incididunt minim exercitation.", + "challName": "Qui amet irure nisi officia.", "challType": "CODE", - "chall": "Qui Lorem dolor dolor do mollit labore proident cillum." + "chall": "Esse consequat Lorem esse nostrud ullamco ut consequat tempor nulla deserunt esse magna ipsum veniam.", + "description": "Elit laborum elit est ut do.", + "completionStatus": false }, { "day": 8, - "challName": "Excepteur tempor voluptate fugiat et irure occaecat nisi culpa laboris.", - "challType": "CODE", - "chall": "Incididunt labore pariatur sit esse mollit." + "challName": "Pariatur laboris ullamco pariatur incididunt ullamco.", + "challType": "MAP", + "chall": "Irure ullamco exercitation nulla ut ea amet adipisicing proident tempor veniam.", + "description": "Ut elit anim reprehenderit quis sunt laborum.", + "completionStatus": false }, { "day": 9, - "challName": "Ea fugiat elit laboris culpa et.", + "challName": "Sunt culpa ad eiusmod proident anim adipisicing mollit tempor labore esse fugiat voluptate elit.", "challType": "CODE", - "chall": "Lorem sunt duis pariatur et exercitation ea tempor amet minim culpa mollit in id." + "chall": "Ipsum consectetur labore irure ea amet ullamco cupidatat nisi irure sit duis aliquip aliquip.", + "description": "Reprehenderit cillum cillum velit sit elit amet esse cillum anim ut.", + "completionStatus": false } ] From faea3ffc62edc5203f08ac593390785dc55d82ca Mon Sep 17 00:00:00 2001 From: zabarudo Date: Mon, 9 Jan 2023 01:01:17 +0530 Subject: [PATCH 08/15] fix: changed start_date format, added exception handling for getDC, removed completionStatus --- .../DailyChallengeController.kt | 3 +- .../daily_challenge/DailyChallengeEntity.kt | 1 - .../DailyChallengeRepository.kt | 3 +- .../daily_challenge/DailyChallengeSeeder.kt | 6 ++-- .../daily_challenge/DailyChallengeService.kt | 31 ++++++++----------- .../resources/application.docker.example.yml | 2 +- .../main/resources/application.example.yml | 2 +- .../main/resources/dcConstants.example.json | 10 ------ 8 files changed, 20 insertions(+), 38 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt index bbfa34ab..45735523 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt @@ -6,7 +6,6 @@ import delta.codecharacter.dtos.DailyChallengeLeaderBoardResponseDto import delta.codecharacter.server.user.public_user.PublicUserService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity -import org.springframework.security.access.annotation.Secured import org.springframework.web.bind.annotation.RestController @RestController @@ -14,7 +13,7 @@ class DailyChallengeController( @Autowired private val dailyChallengeService: DailyChallengeService, @Autowired private val publicUserService: PublicUserService ) : DailyChallengesApi { - @Secured(value = ["ROLE_USER"]) + // @Secured(value = ["ROLE_USER"]) override fun getDailyChallenge(): ResponseEntity { return ResponseEntity.ok(dailyChallengeService.getDailyChallengeByDate()) } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index a6b2a940..a8b5596d 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -10,5 +10,4 @@ data class DailyChallengeEntity( val challType: ChallengeTypeDto, val chall: String, val description: String?, - val completionStatus: Boolean? ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt index d9de7f04..8e0417a5 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeRepository.kt @@ -2,9 +2,10 @@ package delta.codecharacter.server.daily_challenge import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.stereotype.Repository +import java.util.Optional import java.util.UUID @Repository interface DailyChallengeRepository : MongoRepository { - fun findByDay(day: Int): DailyChallengeEntity + fun findByDay(day: Int): Optional } diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt index 6ea32650..a74df291 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt @@ -21,10 +21,8 @@ class DailyChallengeSeeder { if (dailyChallengeRepository.findAll().isEmpty()) { logger.info("Seeding daily_challenges") - dailyChallengeRepository.deleteAll() - - val jsonString = this::class.java.classLoader.getResource("dcConstants.json").readText() - if (jsonString.isNotEmpty()) { + val jsonString = this::class.java.classLoader.getResource("dcConstants.json")?.readText() + if (!jsonString.isNullOrEmpty()) { val objectMapper = jacksonObjectMapper() val dcs: List = objectMapper.readValue(jsonString) dailyChallengeRepository.saveAll(dcs) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt index db5c8770..d452aed5 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeService.kt @@ -1,17 +1,13 @@ package delta.codecharacter.server.daily_challenge import delta.codecharacter.dtos.DailyChallengeGetRequestDto +import delta.codecharacter.server.exception.CustomException +import org.apache.http.HttpStatus import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service -import java.time.LocalDate -import java.time.LocalDateTime -import java.time.LocalTime -import java.time.Period -import java.time.ZoneId -import java.time.ZonedDateTime -import java.time.format.DateTimeFormatter -import java.util.Locale +import java.time.Duration +import java.time.Instant @Service class DailyChallengeService( @@ -21,25 +17,24 @@ class DailyChallengeService( @Value("\${environment.event-start-date}") val tempDate: String = "" fun findNumberOfDays(): Int { - val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd/HH/mm/ss", Locale.ENGLISH) - - val givenDateTime = - LocalDateTime.of(LocalDate.parse(tempDate, formatter), LocalTime.of(0, 0)) - .atZone(ZoneId.of("Asia/Kolkata")) - val zdtNow = ZonedDateTime.now(ZoneId.of("Asia/Kolkata")) - val period: Period = Period.between(givenDateTime.toLocalDate(), zdtNow.toLocalDate()) - return period.days + val givenDateTime = Instant.parse(tempDate) + val nowDateTime = Instant.now() + val period: Duration = Duration.between(givenDateTime, nowDateTime) + return period.toDays().toInt() } fun getDailyChallengeByDate(): DailyChallengeGetRequestDto { - val dc = dailyChallengeRepository.findByDay(findNumberOfDays()) + val dc = + dailyChallengeRepository.findByDay(findNumberOfDays()).orElseThrow { + throw CustomException(org.springframework.http.HttpStatus.BAD_REQUEST, "Invalid Request") + } return DailyChallengeGetRequestDto( challName = dc.challName, chall = dc.chall, challType = dc.challType, description = dc.description, - completionStatus = dc.completionStatus + completionStatus = true ) } } diff --git a/server/src/main/resources/application.docker.example.yml b/server/src/main/resources/application.docker.example.yml index aa2ec244..9885ac85 100644 --- a/server/src/main/resources/application.docker.example.yml +++ b/server/src/main/resources/application.docker.example.yml @@ -27,7 +27,7 @@ spring: client-secret: your-github-client-secret scope: user:email environment: - event-start-date: YYYY/MM/dd/HH/mm/ss + event-start-date: YYYY-MM-DDTHH:MM:SSZ de: flapdoodle: diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index b407cddc..2272e3d1 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -25,7 +25,7 @@ spring: client-secret: your-github-client-secret scope: user:email environment: - event-start-date: YYYY/MM/dd/HH/mm/ss + event-start-date: YYYY-MM-DDTHH:MM:SSZ de: flapdoodle: diff --git a/server/src/main/resources/dcConstants.example.json b/server/src/main/resources/dcConstants.example.json index bc0eea0b..6ee46798 100644 --- a/server/src/main/resources/dcConstants.example.json +++ b/server/src/main/resources/dcConstants.example.json @@ -5,7 +5,6 @@ "challType": "CODE", "chall": "Anim excepteur duis exercitation sint magna.", "description": "Amet ad cupidatat anim mollit ex quis cupidatat non nisi consequat anim nostrud consectetur.", - "completionStatus": false }, { "day": 1, @@ -13,7 +12,6 @@ "challType": "CODE", "chall": "Veniam fugiat est veniam minim minim sunt cillum voluptate.", "description": "Et aliqua dolor est reprehenderit magna consectetur laboris incididunt deserunt voluptate.", - "completionStatus": false }, { "day": 2, @@ -21,7 +19,6 @@ "challType": "MAP", "chall": "Minim laborum cillum qui dolor incididunt sit fugiat.", "description": "Non enim cillum officia adipisicing quis voluptate.", - "completionStatus": true }, { "day": 3, @@ -29,7 +26,6 @@ "challType": "MAP", "chall": "Amet nostrud ullamco cupidatat ex et officia eu.", "description": "Et occaecat labore laboris aliquip laboris ut non.", - "completionStatus": true }, { "day": 4, @@ -37,7 +33,6 @@ "challType": "MAP", "chall": "Proident adipisicing voluptate non aute aliquip reprehenderit sit Lorem.", "description": "Commodo reprehenderit laborum culpa incididunt irure consectetur veniam laborum irure adipisicing magna voluptate aute.", - "completionStatus": false }, { "day": 5, @@ -45,7 +40,6 @@ "challType": "CODE", "chall": "Esse magna commodo id magna qui.", "description": "Laboris duis nulla mollit proident laboris aute minim ullamco aute ullamco Lorem magna consectetur quis.", - "completionStatus": false }, { "day": 6, @@ -53,7 +47,6 @@ "challType": "CODE", "chall": "Id labore deserunt fugiat nisi aute minim ipsum esse nostrud sint.", "description": "Qui consectetur esse enim sint elit sunt magna est.", - "completionStatus": true }, { "day": 7, @@ -61,7 +54,6 @@ "challType": "CODE", "chall": "Esse consequat Lorem esse nostrud ullamco ut consequat tempor nulla deserunt esse magna ipsum veniam.", "description": "Elit laborum elit est ut do.", - "completionStatus": false }, { "day": 8, @@ -69,7 +61,6 @@ "challType": "MAP", "chall": "Irure ullamco exercitation nulla ut ea amet adipisicing proident tempor veniam.", "description": "Ut elit anim reprehenderit quis sunt laborum.", - "completionStatus": false }, { "day": 9, @@ -77,6 +68,5 @@ "challType": "CODE", "chall": "Ipsum consectetur labore irure ea amet ullamco cupidatat nisi irure sit duis aliquip aliquip.", "description": "Reprehenderit cillum cillum velit sit elit amet esse cillum anim ut.", - "completionStatus": false } ] From df4637d7cee6440c71256c8d2a5168e5ce20cdf2 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Mon, 9 Jan 2023 01:08:21 +0530 Subject: [PATCH 09/15] fix: secured /dc/get route --- .../server/daily_challenge/DailyChallengeController.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt index 45735523..bbfa34ab 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeController.kt @@ -6,6 +6,7 @@ import delta.codecharacter.dtos.DailyChallengeLeaderBoardResponseDto import delta.codecharacter.server.user.public_user.PublicUserService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity +import org.springframework.security.access.annotation.Secured import org.springframework.web.bind.annotation.RestController @RestController @@ -13,7 +14,7 @@ class DailyChallengeController( @Autowired private val dailyChallengeService: DailyChallengeService, @Autowired private val publicUserService: PublicUserService ) : DailyChallengesApi { - // @Secured(value = ["ROLE_USER"]) + @Secured(value = ["ROLE_USER"]) override fun getDailyChallenge(): ResponseEntity { return ResponseEntity.ok(dailyChallengeService.getDailyChallengeByDate()) } From c55209e68c8e5d9e66000c7aab82b12534f0a14e Mon Sep 17 00:00:00 2001 From: zabarudo Date: Thu, 12 Jan 2023 16:10:08 +0530 Subject: [PATCH 10/15] fix: added id to dcEntity, made dcObject --- .../daily_challenge/DailyChallengeEntity.kt | 14 ++-- .../daily_challenge/DailyChallengeObject.kt | 11 ++++ .../DailyChallengeSeeder.kt | 25 ++++++- .../main/resources/dcConstants.example.json | 66 +++++++++---------- 4 files changed, 75 insertions(+), 41 deletions(-) create mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt rename server/src/main/kotlin/delta/codecharacter/server/{daily_challenge => seeders}/DailyChallengeSeeder.kt (52%) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index a8b5596d..6c8e71ed 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -1,13 +1,17 @@ package delta.codecharacter.server.daily_challenge +import com.fasterxml.jackson.annotation.JsonProperty import delta.codecharacter.dtos.ChallengeTypeDto +import org.springframework.data.annotation.Id import org.springframework.data.mongodb.core.mapping.Document +import java.util.UUID @Document(collection = "daily_challenges") data class DailyChallengeEntity( - val day: Int, - val challName: String, - val challType: ChallengeTypeDto, - val chall: String, - val description: String?, + @Id val id: UUID, + @field:JsonProperty("day") val day: Int, + @field:JsonProperty("challName") val challName: String, + @field:JsonProperty("challType") val challType: ChallengeTypeDto, + @field:JsonProperty("chall") val chall: String, + @field:JsonProperty("description") val description: String?, ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt new file mode 100644 index 00000000..d97729fa --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt @@ -0,0 +1,11 @@ +package delta.codecharacter.server.daily_challenge + +import com.fasterxml.jackson.annotation.JsonProperty +import delta.codecharacter.dtos.ChallengeTypeDto + +data class DailyChallengeObject(val day: Int, + val challName: String, + val challType: ChallengeTypeDto, + val chall: String, + val description: String?, +) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt similarity index 52% rename from server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt rename to server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt index a74df291..b55e97b7 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt @@ -1,13 +1,17 @@ -package delta.codecharacter.server.daily_challenge +package delta.codecharacter.server.seeders import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue +import delta.codecharacter.server.daily_challenge.DailyChallengeEntity +import delta.codecharacter.server.daily_challenge.DailyChallengeObject +import delta.codecharacter.server.daily_challenge.DailyChallengeRepository import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.context.event.ApplicationReadyEvent import org.springframework.context.event.EventListener import org.springframework.stereotype.Component +import java.util.UUID @Component class DailyChallengeSeeder { @@ -24,8 +28,23 @@ class DailyChallengeSeeder { val jsonString = this::class.java.classLoader.getResource("dcConstants.json")?.readText() if (!jsonString.isNullOrEmpty()) { val objectMapper = jacksonObjectMapper() - val dcs: List = objectMapper.readValue(jsonString) - dailyChallengeRepository.saveAll(dcs) + val dcs: List = objectMapper.readValue(jsonString) + var dcEntities: List = listOf() + dcs.forEach { + val id = UUID.randomUUID() + dcEntities = + dcEntities.plus( + DailyChallengeEntity( + id = id, + day = it.day, + chall = it.chall, + challName = it.challName, + challType = it.challType, + description = it.description + ) + ) + } + dailyChallengeRepository.saveAll(dcEntities) } else { logger.error("dcConstants.json not found or doesn't exist") } diff --git a/server/src/main/resources/dcConstants.example.json b/server/src/main/resources/dcConstants.example.json index 6ee46798..90b110a1 100644 --- a/server/src/main/resources/dcConstants.example.json +++ b/server/src/main/resources/dcConstants.example.json @@ -1,72 +1,72 @@ [ { "day": 0, - "challName": "Nulla aliquip do ut deserunt culpa duis laboris velit in ea et elit dolore incididunt.", + "challName": "Nisi sunt ea culpa est cillum cupidatat officia est.", "challType": "CODE", - "chall": "Anim excepteur duis exercitation sint magna.", - "description": "Amet ad cupidatat anim mollit ex quis cupidatat non nisi consequat anim nostrud consectetur.", + "chall": "Commodo duis sunt est ad duis ea anim nisi pariatur ut.", + "description": "Sunt ut est ea et dolor minim veniam quis id occaecat adipisicing quis." }, { "day": 1, - "challName": "Culpa duis ullamco eu consectetur ipsum in occaecat labore consequat ad commodo deserunt fugiat eu.", + "challName": "Exercitation esse ullamco irure quis dolor ut.", "challType": "CODE", - "chall": "Veniam fugiat est veniam minim minim sunt cillum voluptate.", - "description": "Et aliqua dolor est reprehenderit magna consectetur laboris incididunt deserunt voluptate.", + "chall": "Aute nulla dolor consequat tempor commodo et aute occaecat est nulla esse reprehenderit anim tempor.", + "description": "Labore adipisicing culpa eiusmod labore mollit nisi ex fugiat nulla et voluptate laborum." }, { "day": 2, - "challName": "Mollit aliquip et Lorem eiusmod ea in ad consequat culpa eu.", - "challType": "MAP", - "chall": "Minim laborum cillum qui dolor incididunt sit fugiat.", - "description": "Non enim cillum officia adipisicing quis voluptate.", + "challName": "Ex incididunt laboris ex pariatur irure aute qui occaecat ullamco consequat eu mollit fugiat culpa.", + "challType": "CODE", + "chall": "Id aliqua sit fugiat exercitation Lorem elit sint nisi commodo magna do.", + "description": "Laborum labore in excepteur do." }, { "day": 3, - "challName": "Officia labore laboris nostrud tempor Lorem proident officia deserunt tempor exercitation adipisicing nostrud.", + "challName": "Sint ut proident ipsum est nostrud nostrud pariatur anim id laboris velit officia est.", "challType": "MAP", - "chall": "Amet nostrud ullamco cupidatat ex et officia eu.", - "description": "Et occaecat labore laboris aliquip laboris ut non.", + "chall": "Incididunt id aute ad velit commodo aute cupidatat voluptate qui mollit.", + "description": "Esse do sint non enim dolore." }, { "day": 4, - "challName": "Ullamco labore anim consequat ad aute mollit incididunt incididunt.", + "challName": "Mollit qui in culpa nostrud veniam commodo fugiat tempor sit dolor duis id non.", "challType": "MAP", - "chall": "Proident adipisicing voluptate non aute aliquip reprehenderit sit Lorem.", - "description": "Commodo reprehenderit laborum culpa incididunt irure consectetur veniam laborum irure adipisicing magna voluptate aute.", + "chall": "Aliqua mollit sint sunt id elit mollit ipsum incididunt sint qui officia quis elit cillum.", + "description": "Et et labore ad ad ex elit et laboris deserunt eiusmod eiusmod reprehenderit eu." }, { "day": 5, - "challName": "Mollit ullamco ipsum veniam adipisicing cupidatat veniam commodo minim nostrud consequat aliquip veniam.", - "challType": "CODE", - "chall": "Esse magna commodo id magna qui.", - "description": "Laboris duis nulla mollit proident laboris aute minim ullamco aute ullamco Lorem magna consectetur quis.", + "challName": "Est qui aliquip esse mollit.", + "challType": "MAP", + "chall": "Voluptate quis commodo mollit id deserunt.", + "description": "Aute voluptate amet aliquip irure." }, { "day": 6, - "challName": "Nostrud deserunt et tempor dolor consequat dolor sunt.", - "challType": "CODE", - "chall": "Id labore deserunt fugiat nisi aute minim ipsum esse nostrud sint.", - "description": "Qui consectetur esse enim sint elit sunt magna est.", + "challName": "Duis anim tempor velit do fugiat tempor aute aliqua velit ut reprehenderit.", + "challType": "MAP", + "chall": "Laborum sunt anim duis nulla reprehenderit aliqua sunt veniam elit.", + "description": "Duis do est Lorem ex veniam." }, { "day": 7, - "challName": "Qui amet irure nisi officia.", + "challName": "Labore velit consequat quis irure officia ad qui sint deserunt ea dolore nostrud consequat aute.", "challType": "CODE", - "chall": "Esse consequat Lorem esse nostrud ullamco ut consequat tempor nulla deserunt esse magna ipsum veniam.", - "description": "Elit laborum elit est ut do.", + "chall": "Occaecat id magna ut incididunt consectetur sunt magna labore.", + "description": "Irure qui minim aliqua sunt esse consequat commodo nostrud consectetur." }, { "day": 8, - "challName": "Pariatur laboris ullamco pariatur incididunt ullamco.", + "challName": "Ullamco magna Lorem Lorem sit sunt.", "challType": "MAP", - "chall": "Irure ullamco exercitation nulla ut ea amet adipisicing proident tempor veniam.", - "description": "Ut elit anim reprehenderit quis sunt laborum.", + "chall": "Eiusmod voluptate aliqua duis duis sunt pariatur quis sint eiusmod adipisicing duis quis anim aute.", + "description": "Aliquip ad sunt do eu duis nulla deserunt." }, { "day": 9, - "challName": "Sunt culpa ad eiusmod proident anim adipisicing mollit tempor labore esse fugiat voluptate elit.", + "challName": "Est aliquip in ut ex velit.", "challType": "CODE", - "chall": "Ipsum consectetur labore irure ea amet ullamco cupidatat nisi irure sit duis aliquip aliquip.", - "description": "Reprehenderit cillum cillum velit sit elit amet esse cillum anim ut.", + "chall": "Labore magna occaecat consectetur reprehenderit nostrud aliqua nostrud occaecat occaecat aliquip cillum anim ullamco.", + "description": "Commodo ex adipisicing dolore aliqua adipisicing laboris duis ad irure mollit." } ] From 7c47afe93617a76e84fccf9a28941c91b5b1f07f Mon Sep 17 00:00:00 2001 From: zabarudo Date: Thu, 12 Jan 2023 16:20:14 +0530 Subject: [PATCH 11/15] fix: fixed formatting for dcEntity, dcObject --- .../server/daily_challenge/DailyChallengeEntity.kt | 12 ++++++------ .../server/daily_challenge/DailyChallengeObject.kt | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index 6c8e71ed..226dab66 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -8,10 +8,10 @@ import java.util.UUID @Document(collection = "daily_challenges") data class DailyChallengeEntity( - @Id val id: UUID, - @field:JsonProperty("day") val day: Int, - @field:JsonProperty("challName") val challName: String, - @field:JsonProperty("challType") val challType: ChallengeTypeDto, - @field:JsonProperty("chall") val chall: String, - @field:JsonProperty("description") val description: String?, + @Id val id: UUID, + @field:JsonProperty("day") val day: Int, + @field:JsonProperty("challName") val challName: String, + @field:JsonProperty("challType") val challType: ChallengeTypeDto, + @field:JsonProperty("chall") val chall: String, + @field:JsonProperty("description") val description: String?, ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt index d97729fa..a04d9a05 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt @@ -1,9 +1,9 @@ package delta.codecharacter.server.daily_challenge -import com.fasterxml.jackson.annotation.JsonProperty import delta.codecharacter.dtos.ChallengeTypeDto -data class DailyChallengeObject(val day: Int, +data class DailyChallengeObject( + val day: Int, val challName: String, val challType: ChallengeTypeDto, val chall: String, From e1d284f3f7d394738b6b08e33136584cc809d3e6 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Thu, 12 Jan 2023 23:52:49 +0530 Subject: [PATCH 12/15] fix: added jsonproperty to dcObject, fixed typo --- .../server/daily_challenge/DailyChallengeEntity.kt | 11 +++++------ .../server/daily_challenge/DailyChallengeObject.kt | 11 ----------- .../server/seeders/DailyChallengeObject.kt | 12 ++++++++++++ .../server/seeders/DailyChallengeSeeder.kt | 3 +-- 4 files changed, 18 insertions(+), 19 deletions(-) delete mode 100644 server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt create mode 100644 server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeObject.kt diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt index 226dab66..47a6c9f4 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeEntity.kt @@ -1,6 +1,5 @@ package delta.codecharacter.server.daily_challenge -import com.fasterxml.jackson.annotation.JsonProperty import delta.codecharacter.dtos.ChallengeTypeDto import org.springframework.data.annotation.Id import org.springframework.data.mongodb.core.mapping.Document @@ -9,9 +8,9 @@ import java.util.UUID @Document(collection = "daily_challenges") data class DailyChallengeEntity( @Id val id: UUID, - @field:JsonProperty("day") val day: Int, - @field:JsonProperty("challName") val challName: String, - @field:JsonProperty("challType") val challType: ChallengeTypeDto, - @field:JsonProperty("chall") val chall: String, - @field:JsonProperty("description") val description: String?, + val day: Int, + val challName: String, + val challType: ChallengeTypeDto, + val chall: String, + val description: String?, ) diff --git a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt b/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt deleted file mode 100644 index a04d9a05..00000000 --- a/server/src/main/kotlin/delta/codecharacter/server/daily_challenge/DailyChallengeObject.kt +++ /dev/null @@ -1,11 +0,0 @@ -package delta.codecharacter.server.daily_challenge - -import delta.codecharacter.dtos.ChallengeTypeDto - -data class DailyChallengeObject( - val day: Int, - val challName: String, - val challType: ChallengeTypeDto, - val chall: String, - val description: String?, -) diff --git a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeObject.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeObject.kt new file mode 100644 index 00000000..1fd8a523 --- /dev/null +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeObject.kt @@ -0,0 +1,12 @@ +package delta.codecharacter.server.seeders + +import com.fasterxml.jackson.annotation.JsonProperty +import delta.codecharacter.dtos.ChallengeTypeDto + +data class DailyChallengeObject( + @field:JsonProperty("day") val day: Int, + @field:JsonProperty("challName") val challName: String, + @field:JsonProperty("challType") val challType: ChallengeTypeDto, + @field:JsonProperty("chall") val chall: String, + @field:JsonProperty("description") val description: String?, +) diff --git a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt index b55e97b7..e7d3bf2d 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt @@ -3,7 +3,6 @@ package delta.codecharacter.server.seeders import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import delta.codecharacter.server.daily_challenge.DailyChallengeEntity -import delta.codecharacter.server.daily_challenge.DailyChallengeObject import delta.codecharacter.server.daily_challenge.DailyChallengeRepository import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -46,7 +45,7 @@ class DailyChallengeSeeder { } dailyChallengeRepository.saveAll(dcEntities) } else { - logger.error("dcConstants.json not found or doesn't exist") + logger.error("dcConstants.json is empty or doesn't exist") } } } From 03a86dcd737fc938de561e2c17eb04679ffcd417 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Fri, 13 Jan 2023 00:31:44 +0530 Subject: [PATCH 13/15] fix: Added a check if already seeded DCs --- .../delta/codecharacter/server/seeders/DailyChallengeSeeder.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt index e7d3bf2d..7d7a7ddd 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt @@ -48,5 +48,8 @@ class DailyChallengeSeeder { logger.error("dcConstants.json is empty or doesn't exist") } } + else { + logger.info("Seeded already") + } } } From c009cb865be01add68b1da26df9c0defb9912a49 Mon Sep 17 00:00:00 2001 From: zabarudo Date: Fri, 13 Jan 2023 00:35:24 +0530 Subject: [PATCH 14/15] fix: Fixed log message in DC_Seeder --- .../delta/codecharacter/server/seeders/DailyChallengeSeeder.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt index 7d7a7ddd..55a36859 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt @@ -49,7 +49,7 @@ class DailyChallengeSeeder { } } else { - logger.info("Seeded already") + logger.info("Daily Challenges seeded already") } } } From 20ac9d9ba9b05591b09a001bc676dd7d5b07dade Mon Sep 17 00:00:00 2001 From: zabarudo Date: Fri, 13 Jan 2023 00:43:45 +0530 Subject: [PATCH 15/15] fix: Formatted --- .../delta/codecharacter/server/seeders/DailyChallengeSeeder.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt index 55a36859..54a7affc 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/seeders/DailyChallengeSeeder.kt @@ -47,8 +47,7 @@ class DailyChallengeSeeder { } else { logger.error("dcConstants.json is empty or doesn't exist") } - } - else { + } else { logger.info("Daily Challenges seeded already") } }