From 7c23ec7fa404a66de0a4bdc2ee71eaec251e3f46 Mon Sep 17 00:00:00 2001 From: Bossanyi Tibor <1-bossanyit@users.noreply.andio.club> Date: Mon, 11 May 2020 16:42:52 +0200 Subject: [PATCH] Exercise Data class, repo, controller --- .gitlab-ci.yml | 14 ++++---- .gitlab/.gitlab-webide.yml | 6 ---- config.toml => ci-cd/config.toml | 0 .../docker.development.yml | 11 +++++++ ci-cd/production-docker-compose.yml | 31 +++++++++++++++++ {deploy => ci-cd}/readme.md | 0 gradlew.bat | 1 - .../api/controller/ExerciesController.kt | 33 +++++++++++++++++++ .../com/aitrainer/api/model/Exercises.kt | 20 +++++++++++ .../api/repository/ExercisesRepository.kt | 8 +++++ .../resources/application-prod.properties | 13 ++++++++ ...properties => application-test.properties} | 2 +- src/main/resources/application.properties | 2 +- 13 files changed, 125 insertions(+), 16 deletions(-) delete mode 100644 .gitlab/.gitlab-webide.yml rename config.toml => ci-cd/config.toml (100%) rename docker.development.yml => ci-cd/docker.development.yml (89%) create mode 100644 ci-cd/production-docker-compose.yml rename {deploy => ci-cd}/readme.md (100%) create mode 100644 src/main/kotlin/com/aitrainer/api/controller/ExerciesController.kt create mode 100644 src/main/kotlin/com/aitrainer/api/model/Exercises.kt create mode 100644 src/main/kotlin/com/aitrainer/api/repository/ExercisesRepository.kt create mode 100644 src/main/resources/application-prod.properties rename src/main/resources/{application-deploy.properties => application-test.properties} (95%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2266189..8a874bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ stages: - build - prepare - test - - deploy +# - deploy variables: # Configure mysql environment variables (https://hub.docker.com/_/mysql/) @@ -43,18 +43,18 @@ connect: script: - apt-get update && apt-get --assume-yes install mysql-client - mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql -e "use $MYSQL_DATABASE; show tables;" - #- mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql < "data/db/install.sql" + #- mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql < "data/db/install.sql" #first time test: stage: test image: openjdk:latest script: - - ./gradlew check -Pargs='spring.profiles.active=deploy' + - ./gradlew check -Pargs='spring.profiles.active=test' -deploy: - stage: deploy - script: - - ./deploy +#deploy: +# stage: deploy +# script: +# - ./deploy after_script: - echo "End CI" diff --git a/.gitlab/.gitlab-webide.yml b/.gitlab/.gitlab-webide.yml deleted file mode 100644 index cf25012..0000000 --- a/.gitlab/.gitlab-webide.yml +++ /dev/null @@ -1,6 +0,0 @@ -terminal: - script: sleep 60 - variables: - RAILS_ENV: "test" - NODE_ENV: "test" - \ No newline at end of file diff --git a/config.toml b/ci-cd/config.toml similarity index 100% rename from config.toml rename to ci-cd/config.toml diff --git a/docker.development.yml b/ci-cd/docker.development.yml similarity index 89% rename from docker.development.yml rename to ci-cd/docker.development.yml index 77d6753..55c2c83 100644 --- a/docker.development.yml +++ b/ci-cd/docker.development.yml @@ -4,6 +4,12 @@ services: image: 'atlassian/jira-software:latest' container_name: 'jira' restart: 'always' + environment: + ATL_TOMCAT_PORT: 8082 + ATL_TOMCAT_SCHEME: "https" + ATL_TOMCAT_SECURE: "true" + ATL_DB_DRIVER: "com.mysql.jdbc.Driver" + ATL_DB_TYPE: "mysql" volumes: - jiraVolume:/var/atlassian/application-data/jira - db_data:/var/lib/mysql @@ -79,6 +85,11 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock - /srv/gitlab-runner/config:/etc/gitlab-runner +secrets: + mysql_root_pwd: + file: /.sec/mysql_root_pwd + mysql_user_pwd: + file: /.sec/mysql_user_pwd networks: bosi_default: volumes: diff --git a/ci-cd/production-docker-compose.yml b/ci-cd/production-docker-compose.yml new file mode 100644 index 0000000..2cc74b7 --- /dev/null +++ b/ci-cd/production-docker-compose.yml @@ -0,0 +1,31 @@ +version: '3.8' + +services: + mysql: + image: mysql:latest + container_name: mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: andio2009 + MYSQL_DATABASE: aitrainer + MYSQL_USER: aitrainer + MYSQL_PASSWORD: andio2009 + volumes: + - ./docker/db:/docker-entrypoint-initdb.d + ports: + - "33061:33061" + command: mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=localhost < "/home/bosi/aitrainer/data/install.sql" + + java: + image: openjdk:latest + + + tomcat: + image: tomcat:latest + container_name: tomcat + volumes: + - ./docker/aitrainer_server.jar:/home/bosi/aitrainer/deploy/aitrainer_server.jar + ports: + - "8080:8080" + depends_on: + - java \ No newline at end of file diff --git a/deploy/readme.md b/ci-cd/readme.md similarity index 100% rename from deploy/readme.md rename to ci-cd/readme.md diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9..8294cac 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -83,7 +83,6 @@ set CMD_LINE_ARGS=%* @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% diff --git a/src/main/kotlin/com/aitrainer/api/controller/ExerciesController.kt b/src/main/kotlin/com/aitrainer/api/controller/ExerciesController.kt new file mode 100644 index 0000000..39a5744 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/controller/ExerciesController.kt @@ -0,0 +1,33 @@ +package com.aitrainer.api.controller + +import com.aitrainer.api.model.Customer +import com.aitrainer.api.model.Exercises +import com.aitrainer.api.repository.ExercisesRepository +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody +import javax.validation.Valid + +class ExerciesController(private val exercisesRepository: ExercisesRepository) { + + @PostMapping("/exercises") + fun createNewCustomer(@Valid @RequestBody exercises: Exercises): Exercises = + exercisesRepository.save(exercises) + + @PutMapping("/exercises/{id}") + fun updateExerciseById(@PathVariable(value = "id") exerciseId: Long, + @Valid @RequestBody newExercises: Exercises): ResponseEntity { + return exercisesRepository.findById(exerciseId).map { existingExercises -> + val updatedExercises: Exercises = existingExercises.copy( + exercise_type_id = newExercises.exercise_type_id, + customer_id = newExercises.customer_id, + dateTimeExercise = newExercises.dateTimeExercise, + quantity = newExercises.quantity, + restTime = newExercises.restTime + ) + ResponseEntity.ok().body(exercisesRepository.save(updatedExercises)) + }.orElse(ResponseEntity.notFound().build()) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/model/Exercises.kt b/src/main/kotlin/com/aitrainer/api/model/Exercises.kt new file mode 100644 index 0000000..58b1333 --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/model/Exercises.kt @@ -0,0 +1,20 @@ +package com.aitrainer.api.model + +import org.springframework.lang.NonNull +import java.sql.Date +import javax.persistence.Entity +import javax.persistence.GeneratedValue +import javax.persistence.GenerationType +import javax.persistence.Id + +@Entity +data class Exercises ( + @get: NonNull var exercise_type_id: Long = 0, + @get: NonNull var customer_id: Long = 0, + @get: NonNull var dateTimeExercise: Date? = null, + @get: NonNull var quantity: Int = 0, + var restTime: Int = 0, // in seconds + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + val exercise_id: Long = 0 +) \ No newline at end of file diff --git a/src/main/kotlin/com/aitrainer/api/repository/ExercisesRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/ExercisesRepository.kt new file mode 100644 index 0000000..1f13b8d --- /dev/null +++ b/src/main/kotlin/com/aitrainer/api/repository/ExercisesRepository.kt @@ -0,0 +1,8 @@ +package com.aitrainer.api.repository + +import com.aitrainer.api.model.Exercises +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +@Repository +interface ExercisesRepository : JpaRepository \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 0000000..a7b7f9e --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1,13 @@ +spring.profiles.active=prod +## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) +#spring.datasource.url = jdbc:mysql://localhost:3306/aitrainer?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false +spring.datasource.url = jdbc:mysql://localhost:3306/aitrainer?serverTimezone=CET&useSSL=false&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&allowMultiQueries=true +spring.datasource.username = aitrainer +spring.datasource.password = andio2009 + + +## Hibernate Properties + + +# The SQL dialect makes Hibernate generate better SQL for the chosen database +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect \ No newline at end of file diff --git a/src/main/resources/application-deploy.properties b/src/main/resources/application-test.properties similarity index 95% rename from src/main/resources/application-deploy.properties rename to src/main/resources/application-test.properties index 31f76ef..def8592 100644 --- a/src/main/resources/application-deploy.properties +++ b/src/main/resources/application-test.properties @@ -1,4 +1,4 @@ -spring.profiles.active=deploy +spring.profiles.active=test ## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) #spring.datasource.url = jdbc:mysql://localhost:3306/aitrainer?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false spring.datasource.url = jdbc:mysql://mysql:3306/aitrainer?serverTimezone=CET&useSSL=false&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&allowMultiQueries=true diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7de7b16..1f3f585 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.profiles.active=dev,deploy +spring.profiles.active=dev,test,prod ## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) #spring.datasource.url = jdbc:mysql://localhost:3306/aitrainer?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false spring.datasource.url = jdbc:mysql://localhost:3306/aitrainer?serverTimezone=CET&useSSL=false&characterEncoding=UTF-8&allowMultiQueries=true