diff --git a/backend/src/main/java/com/example/backend/categories/api/CategorieUserController.java b/backend/src/main/java/com/example/backend/categories/api/CategorieUserController.java new file mode 100644 index 0000000..891be83 --- /dev/null +++ b/backend/src/main/java/com/example/backend/categories/api/CategorieUserController.java @@ -0,0 +1,41 @@ +package com.example.backend.categories.api; + +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.example.backend.categories.model.CategorieEntity; +import com.example.backend.categories.service.CategorieService; + +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +@RequestMapping(CategorieUserController.URL) +public class CategorieUserController { + + public static final String URL = "/categories"; + private static final String CATEGORIE_VIEW = "categories"; + + private final CategorieService categorieService; + private final ModelMapper modelMapper; + + public CategorieUserController(CategorieService categorieService, ModelMapper modelMapper) { + this.categorieService = categorieService; + this.modelMapper = modelMapper; + } + + private CategorieDTO toDto(CategorieEntity entity) { + return modelMapper.map(entity, CategorieDTO.class); + } + + @GetMapping() + public String getAll(Model model) { + model.addAttribute( + "categories", + categorieService.getAll().stream() + .map(this::toDto) + .toList()); + return CATEGORIE_VIEW; + } +} diff --git a/backend/src/main/java/com/example/backend/movies/api/MovieController.java b/backend/src/main/java/com/example/backend/movies/api/MovieController.java index b281b40..4848e53 100644 --- a/backend/src/main/java/com/example/backend/movies/api/MovieController.java +++ b/backend/src/main/java/com/example/backend/movies/api/MovieController.java @@ -1,20 +1,13 @@ package com.example.backend.movies.api; -import java.util.List; - -import java.util.Map; - import org.modelmapper.ModelMapper; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.example.backend.categories.service.CategorieService; -import com.example.backend.core.api.PageAttributesMapper; import com.example.backend.core.configurations.Constants; import com.example.backend.movies.model.MovieEntity; import com.example.backend.movies.service.MovieService; -import com.example.backend.users.api.UserDTO; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -22,14 +15,11 @@ import org.springframework.validation.BindingResult; import jakarta.validation.Valid; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PutMapping; @Controller @RequestMapping(MovieController.URL) diff --git a/backend/src/main/java/com/example/backend/movies/api/MovieUserController.java b/backend/src/main/java/com/example/backend/movies/api/MovieUserController.java new file mode 100644 index 0000000..7b2cf16 --- /dev/null +++ b/backend/src/main/java/com/example/backend/movies/api/MovieUserController.java @@ -0,0 +1,90 @@ +package com.example.backend.movies.api; + +import org.modelmapper.ModelMapper; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.example.backend.categories.service.CategorieService; +import com.example.backend.core.configurations.Constants; +import com.example.backend.movies.model.MovieEntity; +import com.example.backend.movies.service.MovieService; + +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; + +import jakarta.validation.Valid; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +@RequestMapping(MovieUserController.URL) +public class MovieUserController { + + public static final String URL = "/movies"; + private static final String MOVIE_VIEW = "movies"; + private static final String MOVIE_EDIT_VIEW = "movie-edit"; + private static final String PAGE_ATTRIBUTE = "page"; + private static final String MOVIE_ATTRIBUTE = "movie"; + private static final String CATEGORIEID_ATTRIBUTE = "categorieId"; + + private final MovieService movieService; + private final CategorieService categorieService; + private final ModelMapper modelMapper; + + public MovieUserController(MovieService movieService, CategorieService categorieService, ModelMapper modelMapper) { + this.modelMapper = modelMapper; + this.categorieService = categorieService; + this.movieService = movieService; + } + + private MovieDTO toDto(MovieEntity entity) { + return modelMapper.map(entity, MovieDTO.class); + } + + private MovieEntity toEntity(MovieDTO dto) { + final MovieEntity entity = modelMapper.map(dto, MovieEntity.class); + entity.setCategorie(categorieService.get(dto.getCategorieId())); + return entity; + } + + @GetMapping() + public String getAll(@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + model.addAttribute("movies", + movieService.getAll(0, page, Constants.DEFUALT_PAGE_SIZE) + .stream() + .map(this::toDto) + .toList()); + model.addAttribute("categories", categorieService.getAll()); + + model.addAttribute(PAGE_ATTRIBUTE, page); + model.addAttribute(CATEGORIEID_ATTRIBUTE, 0); + return MOVIE_VIEW; + } + + @GetMapping("/categorieId/{id}") + public String getAll(@PathVariable(name = "id") Integer categorieId, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + model.addAttribute("movies", + movieService.getAll(categorieId, page, Constants.DEFUALT_PAGE_SIZE) + .stream() + .map(this::toDto) + .toList()); + model.addAttribute("categories", categorieService.getAll()); + + model.addAttribute(PAGE_ATTRIBUTE, page); + model.addAttribute(CATEGORIEID_ATTRIBUTE, categorieId); + return MOVIE_VIEW; + } + + @GetMapping("/countView") + public Integer countView(@RequestParam(name = "movieId", defaultValue = "0") Integer movieId) { + return movieService.countView(movieId); + } +} diff --git a/backend/src/main/java/com/example/backend/movies/service/MovieService.java b/backend/src/main/java/com/example/backend/movies/service/MovieService.java index 8a35f41..163cfd1 100644 --- a/backend/src/main/java/com/example/backend/movies/service/MovieService.java +++ b/backend/src/main/java/com/example/backend/movies/service/MovieService.java @@ -1,8 +1,5 @@ package com.example.backend.movies.service; -import java.util.List; -import java.util.stream.StreamSupport; - import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; diff --git a/backend/src/main/resources/public/favicon.ico b/backend/src/main/resources/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/backend/src/main/resources/templates/categories.html b/backend/src/main/resources/templates/categories.html index 2bd70d2..7299858 100644 --- a/backend/src/main/resources/templates/categories.html +++ b/backend/src/main/resources/templates/categories.html @@ -24,58 +24,88 @@ -
- -

Данные отсутствуют

- -
-
-
- - - -
-
+ +
+ + +

Данные отсутствуют

+ +
+
+
+ + + +
+
+
+
+
+
+ +
+
+ +
+
-
-
- -
-
- -
+ -
-
- + + - -
+ + + +

Данные отсутствуют

+ +
+
+
+ + + +
+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/backend/src/main/resources/templates/movies.html b/backend/src/main/resources/templates/movies.html index 0b96f5b..40b0056 100644 --- a/backend/src/main/resources/templates/movies.html +++ b/backend/src/main/resources/templates/movies.html @@ -25,61 +25,116 @@
- -

Данные отсутствуют

- - -
-
-
- -
-
+ + + +

Данные отсутствуют

+ + +
+
+
+ +
+
+
+
+
+
+ + +
+
+ + +
-
-
- - -
-
- - -
-
-
+ - - + + + + + +

Данные отсутствуют

+ +
+
+
+ +
+
+
+
+
+ + + + + + + + +
+
+
+ +
+
+ + + +
diff --git a/data.mv.db b/data.mv.db index 4d832b7..235d3e1 100644 Binary files a/data.mv.db and b/data.mv.db differ diff --git a/data.trace.db b/data.trace.db index 5341c40..add516f 100644 --- a/data.trace.db +++ b/data.trace.db @@ -815,3 +815,35 @@ Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/code/PIbd-21_ at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81) at org.h2.mvstore.MVStore.(MVStore.java:286) ... 60 more +2024-06-17 23:16:01.589022+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 10 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 10 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-17 23:17:44.595115+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-17 23:20:54.688760+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-17 23:22:52.663341+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 13 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 13 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-18 20:37:32.784955+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 9 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-18 20:44:02.945094+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 14 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 14 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-18 20:52:02.831015+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 20 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 20 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224] +2024-06-18 20:52:23.440573+04:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 21 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))" +Data conversion error converting "CAST(REPEAT(CHAR(0), 9861) AS BINARY VARYING /* table: -3 id: 21 */) (CATEGORIES_COPY_3_0: ""IMAGE"" CHARACTER VARYING(255))"; SQL statement: +INSERT INTO "PUBLIC"."CATEGORIES_COPY_3_0"("ID", "NAME", "IMAGE") OVERRIDING SYSTEM VALUE SELECT "ID", "NAME", "IMAGE" FROM "PUBLIC"."CATEGORIES" [22018-224]