diff --git a/build.gradle.kts b/build.gradle.kts index 4949d93..5ed3aa6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,7 @@ plugins { } group = "com.aitrainer" -version = "1.0.53" +version = "1.0.54" java.sourceCompatibility = JavaVersion.VERSION_1_8 repositories { diff --git a/data/db/update_1_0_54.sql b/data/db/update_1_0_54.sql new file mode 100644 index 0000000..5e1e53e --- /dev/null +++ b/data/db/update_1_0_54.sql @@ -0,0 +1,20 @@ +START TRANSACTION; + +CREATE TABLE `training_program` ( + `training_program_id` INT(11) NOT NULL AUTO_INCREMENT, + `name` CHAR(50) NOT NULL COLLATE 'utf8mb4_general_ci', + PRIMARY KEY (`training_program_id`) USING BTREE +) +COLLATE='utf8mb4_general_ci' +ENGINE=InnoDB +; + +ALTER TABLE `training_plan` + ADD COLUMN `training_program_id` INT NULL DEFAULT NULL AFTER `tree_id`; + +ALTER TABLE `training_plan` + ADD COLUMN `weeks` INT NULL DEFAULT NULL AFTER `active`; + +UPDATE configuration set config_value = "1.0.54", date_change=CURRENT_DATE WHERE config_key = "db_version"; + +COMMIT; diff --git a/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt b/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt index 39485c7..6e5fcb8 100644 --- a/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt +++ b/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt @@ -28,7 +28,8 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe private val trainingPlanRepository: TrainingPlanRepository, private val splitTestsRepository: SplitTestsRepository, private val trainingPlanDayRepository: TrainingPlanDayRepository, - private val appTextRepository: AppTextRepository + private val appTextRepository: AppTextRepository, + private val trainingProgramRepository: TrainingProgramRepository ) { private val logger = LoggerFactory.getLogger(javaClass) @@ -91,6 +92,9 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe val listAppText = appTextRepository.findAll() val listAppTextJson = gson.toJson(listAppText) + val listTrainingProgram = trainingProgramRepository.findAll() + val listTrainingProgramJson = gson.toJson(listTrainingProgram) + val packageJson: String = getClassRecord(ExerciseDevice::class.simpleName, listDevicesJson) + "|||" + getClassRecord(Product::class.simpleName, listProductsJson) + @@ -108,7 +112,8 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe "|||" + getClassRecord(TrainingPlan::class.simpleName, listTrainingPlanJson) + "|||" + getClassRecord(SplitTests::class.simpleName, listSplitTestsJson) + "|||" + getClassRecord(TrainingPlanDay::class.simpleName, listTrainingPlanDayJson) + - "|||" + getClassRecord(AppText::class.simpleName, listAppTextJson) + "|||" + getClassRecord(AppText::class.simpleName, listAppTextJson) + + "|||" + getClassRecord(TrainingProgram::class.simpleName, listTrainingProgramJson) return if (packageJson.isEmpty()) ResponseEntity.notFound().build() else ResponseEntity.ok().body(packageJson) diff --git a/src/main/kotlin/com/aitrainer/api/model/TrainingProgram.kt b/src/main/kotlin/com/aitrainer/api/model/TrainingProgram.kt new file mode 100644 index 0000000..40e9c4c --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/model/TrainingProgram.kt @@ -0,0 +1,14 @@ +package com.aitrainer.api.model + +import com.google.gson.annotations.Expose +import org.hibernate.annotations.Fetch +import org.hibernate.annotations.FetchMode +import org.springframework.lang.NonNull +import javax.persistence.* + +@Entity +data class TrainingProgram ( + @Expose @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @get: NonNull var trainingProgramId: Long = 0, + @Expose @get: NonNull var name: String, + +) \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/repository/TrainingProgramRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/TrainingProgramRepository.kt new file mode 100644 index 0000000..cf5f704 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/repository/TrainingProgramRepository.kt @@ -0,0 +1,9 @@ +package com.aitrainer.api.repository + +import com.aitrainer.api.model.TrainingProgram +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +@Repository +interface TrainingProgramRepository: JpaRepository { +} \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 50aa032..d8cd67f 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -17,6 +17,6 @@ logging.config=classpath:logback-spring.xml logging.file=logs # if the database structure has been changed, increment this version number -application.version=1.0.53 +application.version=1.0.54 jwt.secret=aitrainer \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f15356d..769658f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -17,7 +17,7 @@ logging.config=classpath:logback-spring.xml logging.file=logs # if the database structure has been changed, increment this version number -application.version=1.0.53 +application.version=1.0.54 jwt.secret=aitrainer jasypt.encryptor.password=Tibor diff --git a/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt b/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt index e49f964..73ab10d 100644 --- a/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt +++ b/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt @@ -51,6 +51,8 @@ class AppPackageTest { private lateinit var trainingPlanDayRepository: TrainingPlanDayRepository @Autowired private lateinit var appTextRepository: AppTextRepository + @Autowired + private lateinit var trainingProgramRepository: TrainingProgramRepository @Test fun testAppPackage() { @@ -73,7 +75,8 @@ class AppPackageTest { trainingPlanRepository, splitTestsRepository, trainingPlanDayRepository, - appTextRepository + appTextRepository, + trainingProgramRepository ) val response: ResponseEntity<*> = controller.getPackageData() @@ -211,6 +214,13 @@ class AppPackageTest { assertEquals(texts.size, 2) assertEquals(texts[0].translations[0].translation, "Done!") assertEquals(texts[0].translations[1].translation, "Kész!") + } else if (record[0] == TrainingProgram::class.simpleName) { + val trainingProgramJson: String = record[1] + val type = object : TypeToken?>() {}.type + val programs: List = gson.fromJson(trainingProgramJson, type) + assertEquals(programs.size, 2) + assertEquals(programs[0].name, "TopForm") + assertEquals(programs[1].name, "WeightLoss") } } }