From e9e4bef063a72680e68ac0fa583a00e29558dfec Mon Sep 17 00:00:00 2001 From: Dmytro Varukha Date: Mon, 2 Oct 2023 20:18:01 +0300 Subject: [PATCH 1/3] created car controller --- pom.xml | 6 +- .../controller/CarController.java | 65 +++++++++++++++++++ .../project/carsharingapp/dto/car/CarDto.java | 10 +++ .../dto/car/CreateCarRequestDto.java | 8 +++ .../dto/car/UpdateCarRequestDto.java | 9 +++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/project/carsharingapp/controller/CarController.java create mode 100644 src/main/java/com/project/carsharingapp/dto/car/CarDto.java create mode 100644 src/main/java/com/project/carsharingapp/dto/car/CreateCarRequestDto.java create mode 100644 src/main/java/com/project/carsharingapp/dto/car/UpdateCarRequestDto.java diff --git a/pom.xml b/pom.xml index f827b92..08b3eee 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,11 @@ - + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.1.0 + mysql mysql-connector-java diff --git a/src/main/java/com/project/carsharingapp/controller/CarController.java b/src/main/java/com/project/carsharingapp/controller/CarController.java new file mode 100644 index 0000000..302cb01 --- /dev/null +++ b/src/main/java/com/project/carsharingapp/controller/CarController.java @@ -0,0 +1,65 @@ +package com.project.carsharingapp.controller; + +import com.project.carsharingapp.dto.car.CarDto; +import com.project.carsharingapp.dto.car.CreateCarRequestDto; +import com.project.carsharingapp.dto.car.UpdateCarRequestDto; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.Valid; +import java.util.List; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +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 org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "/cars") +public class CarController { + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + @Operation(summary = "Get all cars", + description = "Get list of all cars") + public CarDto add(@RequestBody @Valid CreateCarRequestDto requestDto) { + return null; + } + + @GetMapping + @ResponseStatus(HttpStatus.OK) + @Operation(summary = "Get all cars", + description = "Get list of all cars") + public List getAll(Pageable pageable) { + return null; + } + + @GetMapping("/{id}") + @ResponseStatus(HttpStatus.OK) + @Operation(summary = "Get the car by id", + description = "Get car's detailed information by identification number") + public CarDto getById(@PathVariable Long id) { + return null; + } + + @PutMapping("/{id}") + @ResponseStatus(HttpStatus.OK) + @Operation(summary = "Update the car by id", + description = "Update the car information by identification number") + public CarDto update(@PathVariable Long id, + @Valid @RequestBody UpdateCarRequestDto requestDto) { + return null; + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + @Operation(summary = "Delete the car by id", + description = "Delete the car by identification number") + public void deleteById(@PathVariable Long id) { + + } +} diff --git a/src/main/java/com/project/carsharingapp/dto/car/CarDto.java b/src/main/java/com/project/carsharingapp/dto/car/CarDto.java new file mode 100644 index 0000000..92fd691 --- /dev/null +++ b/src/main/java/com/project/carsharingapp/dto/car/CarDto.java @@ -0,0 +1,10 @@ +package com.project.carsharingapp.dto.car; + + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CarDto { +} diff --git a/src/main/java/com/project/carsharingapp/dto/car/CreateCarRequestDto.java b/src/main/java/com/project/carsharingapp/dto/car/CreateCarRequestDto.java new file mode 100644 index 0000000..02abe60 --- /dev/null +++ b/src/main/java/com/project/carsharingapp/dto/car/CreateCarRequestDto.java @@ -0,0 +1,8 @@ +package com.project.carsharingapp.dto.car; + +import lombok.Data; + +@Data +public class CreateCarRequestDto { + +} diff --git a/src/main/java/com/project/carsharingapp/dto/car/UpdateCarRequestDto.java b/src/main/java/com/project/carsharingapp/dto/car/UpdateCarRequestDto.java new file mode 100644 index 0000000..6471630 --- /dev/null +++ b/src/main/java/com/project/carsharingapp/dto/car/UpdateCarRequestDto.java @@ -0,0 +1,9 @@ +package com.project.carsharingapp.dto.car; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UpdateCarRequestDto { +} From 078b351474cd9c2857832a408136d615b167948c Mon Sep 17 00:00:00 2001 From: Dmytro Varukha Date: Mon, 2 Oct 2023 21:42:56 +0300 Subject: [PATCH 2/3] fixed checkstyle --- src/main/resources/application.properties | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b8773b8..ce36863 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,14 +1,7 @@ -<<<<<<< HEAD spring.datasource.url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root123 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -======= -#spring.datasource.url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC -#spring.datasource.username=root -#spring.datasource.password=anton7570857 -#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ->>>>>>> main server.servlet.context-path=/api spring.jpa.hibernate.ddl-auto=validate From d526be756d4a49563caa45b7fbdcf60e20fe3d40 Mon Sep 17 00:00:00 2001 From: Dmytro Varukha Date: Tue, 3 Oct 2023 11:45:49 +0300 Subject: [PATCH 3/3] =?UTF-8?q?added=20test=20=D0=B2=D1=84=D0=B2data=20for?= =?UTF-8?q?=20users,=20cars,=20rentals?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../add-default-cars-to-cars-table.yaml | 115 ++++++++++++++++++ .../add-default-rentals-to-rentals-table.yaml | 60 +++++++++ .../add-default-users-to-users-table.yaml | 69 +++++++++++ .../db/changelog/db.changelog-master.yaml | 6 + 4 files changed, 250 insertions(+) create mode 100644 src/main/resources/db/changelog/changes/add-default-cars-to-cars-table.yaml create mode 100644 src/main/resources/db/changelog/changes/add-default-rentals-to-rentals-table.yaml create mode 100644 src/main/resources/db/changelog/changes/add-default-users-to-users-table.yaml diff --git a/src/main/resources/db/changelog/changes/add-default-cars-to-cars-table.yaml b/src/main/resources/db/changelog/changes/add-default-cars-to-cars-table.yaml new file mode 100644 index 0000000..d1927d2 --- /dev/null +++ b/src/main/resources/db/changelog/changes/add-default-cars-to-cars-table.yaml @@ -0,0 +1,115 @@ +databaseChangeLog: + - changeSet: + id: insert-car-1 + author: Dmytro Varukha + changes: + - insert: + tableName: cars + columns: + - column: + name: model + value: "Toyota Corolla" + - column: + name: brand + value: "Toyota" + - column: + name: inventory + value: 10 + - column: + name: car_type + value: "SEDAN" + - column: + name: daily_fee + value: 50.00 + + - changeSet: + id: insert-car-2 + author: Dmytro Varukha + changes: + - insert: + tableName: cars + columns: + - column: + name: model + value: "Honda Civic" + - column: + name: brand + value: "Honda" + - column: + name: inventory + value: 8 + - column: + name: car_type + value: "SEDAN" + - column: + name: daily_fee + value: 45.00 + + - changeSet: + id: insert-car-3 + author: Dmytro Varukha + changes: + - insert: + tableName: cars + columns: + - column: + name: model + value: "Ford Mustang" + - column: + name: brand + value: "Ford" + - column: + name: inventory + value: 5 + - column: + name: car_type + value: "UNIVERSAL" + - column: + name: daily_fee + value: 80.00 + + - changeSet: + id: insert-car-4 + author: Dmytro Varukha + changes: + - insert: + tableName: cars + columns: + - column: + name: model + value: "Volkswagen Golf" + - column: + name: brand + value: "Volkswagen" + - column: + name: inventory + value: 7 + - column: + name: car_type + value: "HATCHBACK" + - column: + name: daily_fee + value: 55.00 + + - changeSet: + id: insert-car-5 + author: Dmytro Varukha + changes: + - insert: + tableName: cars + columns: + - column: + name: model + value: "Chevrolet Tahoe" + - column: + name: brand + value: "Chevrolet" + - column: + name: inventory + value: 4 + - column: + name: car_type + value: "SUV" + - column: + name: daily_fee + value: 70.00 diff --git a/src/main/resources/db/changelog/changes/add-default-rentals-to-rentals-table.yaml b/src/main/resources/db/changelog/changes/add-default-rentals-to-rentals-table.yaml new file mode 100644 index 0000000..492eec0 --- /dev/null +++ b/src/main/resources/db/changelog/changes/add-default-rentals-to-rentals-table.yaml @@ -0,0 +1,60 @@ +databaseChangeLog: + - changeSet: + id: insert-rental-1 + author: Dmytro Varukha + changes: + - insert: + tableName: rentals + columns: + - column: + name: rental_date + value: "2023-10-15 09:00:00" + - column: + name: return_date + value: "2023-10-18 15:00:00" + - column: + name: car_id + value: 1 + - column: + name: user_id + value: 1 + + - changeSet: + id: insert-rental-2 + author: Dmytro Varukha + changes: + - insert: + tableName: rentals + columns: + - column: + name: rental_date + value: "2023-10-20 11:30:00" + - column: + name: return_date + value: "2023-10-25 10:15:00" + - column: + name: car_id + value: 2 + - column: + name: user_id + value: 2 + + - changeSet: + id: insert-rental-3 + author: Dmytro Varukha + changes: + - insert: + tableName: rentals + columns: + - column: + name: rental_date + value: "2023-10-12 14:45:00" + - column: + name: return_date + value: "2023-10-16 16:30:00" + - column: + name: car_id + value: 3 + - column: + name: user_id + value: 3 diff --git a/src/main/resources/db/changelog/changes/add-default-users-to-users-table.yaml b/src/main/resources/db/changelog/changes/add-default-users-to-users-table.yaml new file mode 100644 index 0000000..75ceb75 --- /dev/null +++ b/src/main/resources/db/changelog/changes/add-default-users-to-users-table.yaml @@ -0,0 +1,69 @@ +databaseChangeLog: + - changeSet: + id: insert-user-1 + author: Dmytro Varukha + changes: + - insert: + tableName: users + columns: + - column: + name: email + value: user1@example.com + - column: + name: first_name + value: John + - column: + name: last_name + value: Doe + - column: + name: password + value: password1 + - column: + name: telegram_chat_id + value: 1234567 + + - changeSet: + id: insert-user-2 + author: Dmytro Varukha + changes: + - insert: + tableName: users + columns: + - column: + name: email + value: user2@example.com + - column: + name: first_name + value: Jane + - column: + name: last_name + value: Smith + - column: + name: password + value: password2 + - column: + name: telegram_chat_id + value: 9876543 + + - changeSet: + id: insert-user-3 + author: Dmytro Varukha + changes: + - insert: + tableName: users + columns: + - column: + name: email + value: user3@example.com + - column: + name: first_name + value: Alice + - column: + name: last_name + value: Johnson + - column: + name: password + value: password3 + - column: + name: telegram_chat_id + value: 5555555 diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 49fe811..e538309 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -11,3 +11,9 @@ databaseChangeLog: file: db/changelog/changes/create-rentals-table.yaml - include: file: db/changelog/changes/create-payments-table.yaml + - include: + file: db/changelog/changes/add-default-cars-to-cars-table.yaml + - include: + file: db/changelog/changes/add-default-users-to-users-table.yaml + - include: + file: db/changelog/changes/add-default-rentals-to-rentals-table.yaml