From 9b768a1fcab1d68dcf0907bfa806371f95e53557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D0=B5=D0=B5=D0=B2?= Date: Thu, 9 May 2024 10:52:41 +0400 Subject: [PATCH] lab2 --- .gradle/8.5/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.5/checksums/sha1-checksums.bin | Bin 0 -> 22223 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../8.5/dependencies-accessors/gc.properties | 0 .../8.5/executionHistory/executionHistory.bin | Bin 0 -> 161306 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/8.5/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 0 -> 28297 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 0 -> 21523 bytes .gradle/8.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19451 bytes .gradle/file-system.probe | Bin 0 -> 8 bytes .gradle/vcs-1/gc.properties | 0 .vscode/launch.json | 24 ++ .vscode/settings.json | 3 + bin/main/application.properties | 1 + .../com/example/demo/DemoApplication.class | Bin 0 -> 5130 bytes .../demo/comments/api/CommentController.class | Bin 0 -> 5175 bytes .../demo/comments/api/CommentDto.class | Bin 0 -> 2456 bytes .../demo/comments/model/CommentEntity.class | Bin 0 -> 2910 bytes .../repository/CommentRepository.class | Bin 0 -> 586 bytes .../comments/service/CommentService.class | Bin 0 -> 4978 bytes .../demo/core/configuration/Constants.class | Bin 0 -> 405 bytes .../configuration/MapperConfiguration.class | Bin 0 -> 661 bytes .../core/configuration/WebConfiguration.class | Bin 0 -> 1322 bytes .../demo/core/error/NotFoundException.class | Bin 0 -> 608 bytes .../example/demo/core/model/BaseEntity.class | Bin 0 -> 637 bytes .../core/repository/CommonRepository.class | Bin 0 -> 487 bytes .../demo/core/repository/MapRepository.class | Bin 0 -> 2795 bytes .../demo/houses/api/HouseController.class | Bin 0 -> 5127 bytes .../example/demo/houses/api/HouseDto.class | Bin 0 -> 2384 bytes .../demo/houses/api/PropertyStatus.class | Bin 0 -> 1104 bytes .../demo/houses/model/HouseEntity.class | Bin 0 -> 2945 bytes .../houses/repository/HouseRepository.class | Bin 0 -> 572 bytes .../demo/houses/service/HouseService.class | Bin 0 -> 5937 bytes .../materials/api/MaterialContoller.class | Bin 0 -> 4192 bytes .../demo/materials/api/MaterialDto.class | Bin 0 -> 1234 bytes .../demo/materials/model/MaterialEntity.class | Bin 0 -> 1402 bytes .../repository/MaterialRepository.class | Bin 0 -> 593 bytes .../materials/service/MaterialService.class | Bin 0 -> 2987 bytes .../demo/speaker/api/SpeakerController.class | Bin 0 -> 1092 bytes .../configuration/SpeakerConfiguration.class | Bin 0 -> 1293 bytes .../example/demo/speaker/domain/Speaker.class | Bin 0 -> 164 bytes .../demo/speaker/domain/SpeakerDeu.class | Bin 0 -> 1089 bytes .../demo/speaker/domain/SpeakerEng.class | Bin 0 -> 1033 bytes .../demo/speaker/domain/SpeakerRus.class | Bin 0 -> 898 bytes .../demo/speaker/service/SpeakerService.class | Bin 0 -> 1169 bytes .../demo/types/api/TypeController.class | Bin 0 -> 3984 bytes .../com/example/demo/types/api/TypeDto.class | Bin 0 -> 1214 bytes .../example/demo/types/model/TypeEntity.class | Bin 0 -> 1382 bytes .../types/repository/TypeRepository.class | Bin 0 -> 565 bytes .../demo/types/service/TypeService.class | Bin 0 -> 2879 bytes .../demo/users/api/UserController.class | Bin 0 -> 3984 bytes .../com/example/demo/users/api/UserDto.class | Bin 0 -> 1645 bytes .../example/demo/users/model/UserEntity.class | Bin 0 -> 1886 bytes .../users/repository/UserRepository.class | Bin 0 -> 565 bytes .../demo/users/service/UserService.class | Bin 0 -> 2879 bytes .../example/demo/CommentServiceTests.class | Bin 0 -> 5045 bytes .../com/example/demo/HouseServiceTests.class | Bin 0 -> 4177 bytes .../example/demo/MaterialServiceTests.class | Bin 0 -> 3591 bytes .../com/example/demo/SpeakerSrviceTests.class | Bin 0 -> 2327 bytes .../com/example/demo/TypeServiceTests.class | Bin 0 -> 3518 bytes .../com/example/demo/UserServiceTests.class | Bin 0 -> 3573 bytes build.gradle | 28 ++ .../com/example/demo/DemoApplication.class | Bin 0 -> 5198 bytes .../demo/comments/api/CommentController.class | Bin 0 -> 5302 bytes .../demo/comments/api/CommentDto.class | Bin 0 -> 2541 bytes .../demo/comments/model/CommentEntity.class | Bin 0 -> 3030 bytes .../repository/CommentRepository.class | Bin 0 -> 586 bytes .../comments/service/CommentService.class | Bin 0 -> 5113 bytes .../demo/core/configuration/Constants.class | Bin 0 -> 405 bytes .../configuration/MapperConfiguration.class | Bin 0 -> 661 bytes .../core/configuration/WebConfiguration.class | Bin 0 -> 1352 bytes .../demo/core/error/NotFoundException.class | Bin 0 -> 638 bytes .../example/demo/core/model/BaseEntity.class | Bin 0 -> 678 bytes .../core/repository/CommonRepository.class | Bin 0 -> 564 bytes .../demo/core/repository/MapRepository.class | Bin 0 -> 3021 bytes .../demo/houses/api/HouseController.class | Bin 0 -> 5254 bytes .../example/demo/houses/api/HouseDto.class | Bin 0 -> 2469 bytes .../demo/houses/api/PropertyStatus.class | Bin 0 -> 1209 bytes .../demo/houses/model/HouseEntity.class | Bin 0 -> 3065 bytes .../houses/repository/HouseRepository.class | Bin 0 -> 572 bytes .../demo/houses/service/HouseService.class | Bin 0 -> 6058 bytes .../materials/api/MaterialContoller.class | Bin 0 -> 4296 bytes .../demo/materials/api/MaterialDto.class | Bin 0 -> 1275 bytes .../demo/materials/model/MaterialEntity.class | Bin 0 -> 1462 bytes .../repository/MaterialRepository.class | Bin 0 -> 593 bytes .../materials/service/MaterialService.class | Bin 0 -> 3079 bytes .../demo/speaker/api/SpeakerController.class | Bin 0 -> 1137 bytes .../configuration/SpeakerConfiguration.class | Bin 0 -> 1289 bytes .../example/demo/speaker/domain/Speaker.class | Bin 0 -> 164 bytes .../demo/speaker/domain/SpeakerDeu.class | Bin 0 -> 1085 bytes .../demo/speaker/domain/SpeakerEng.class | Bin 0 -> 1029 bytes .../demo/speaker/domain/SpeakerRus.class | Bin 0 -> 894 bytes .../demo/speaker/service/SpeakerService.class | Bin 0 -> 1214 bytes .../demo/types/api/TypeController.class | Bin 0 -> 4088 bytes .../com/example/demo/types/api/TypeDto.class | Bin 0 -> 1255 bytes .../example/demo/types/model/TypeEntity.class | Bin 0 -> 1442 bytes .../types/repository/TypeRepository.class | Bin 0 -> 565 bytes .../demo/types/service/TypeService.class | Bin 0 -> 2971 bytes .../demo/users/api/UserController.class | Bin 0 -> 4088 bytes .../com/example/demo/users/api/UserDto.class | Bin 0 -> 1708 bytes .../example/demo/users/model/UserEntity.class | Bin 0 -> 1976 bytes .../users/repository/UserRepository.class | Bin 0 -> 565 bytes .../demo/users/service/UserService.class | Bin 0 -> 2971 bytes .../example/demo/CommentServiceTests.class | Bin 0 -> 5119 bytes .../com/example/demo/HouseServiceTests.class | Bin 0 -> 4259 bytes .../example/demo/MaterialServiceTests.class | Bin 0 -> 3721 bytes .../com/example/demo/SpeakerSrviceTests.class | Bin 0 -> 2347 bytes .../com/example/demo/TypeServiceTests.class | Bin 0 -> 3648 bytes .../com/example/demo/UserServiceTests.class | Bin 0 -> 3703 bytes build/resources/main/application.properties | 1 + .../compileJava/previous-compilation-data.bin | Bin 0 -> 39836 bytes .../previous-compilation-data.bin | Bin 0 -> 27108 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 249 ++++++++++++++++++ gradlew.bat | 92 +++++++ settings.gradle | 1 + .../com/example/demo/DemoApplication.java | 76 ++++++ .../demo/comments/api/CommentController.java | 78 ++++++ .../example/demo/comments/api/CommentDto.java | 79 ++++++ .../demo/comments/model/CommentEntity.java | 90 +++++++ .../repository/CommentRepository.java | 10 + .../demo/comments/service/CommentService.java | 63 +++++ .../demo/core/configuration/Constants.java | 8 + .../configuration/MapperConfiguration.java | 13 + .../core/configuration/WebConfiguration.java | 15 ++ .../demo/core/error/NotFoundException.java | 7 + .../example/demo/core/model/BaseEntity.java | 20 ++ .../core/repository/CommonRepository.java | 17 ++ .../demo/core/repository/MapRepository.java | 57 ++++ .../demo/houses/api/HouseController.java | 76 ++++++ .../com/example/demo/houses/api/HouseDto.java | 76 ++++++ .../demo/houses/api/PropertyStatus.java | 6 + .../demo/houses/model/HouseEntity.java | 88 +++++++ .../houses/repository/HouseRepository.java | 10 + .../demo/houses/service/HouseService.java | 77 ++++++ .../demo/materials/api/MaterialContoller.java | 64 +++++ .../demo/materials/api/MaterialDto.java | 28 ++ .../demo/materials/model/MaterialEntity.java | 42 +++ .../repository/MaterialRepository.java | 10 + .../materials/service/MaterialService.java | 43 +++ .../demo/speaker/api/SpeakerController.java | 23 ++ .../configuration/SpeakerConfiguration.java | 27 ++ .../example/demo/speaker/domain/Speaker.java | 5 + .../demo/speaker/domain/SpeakerDeu.java | 28 ++ .../demo/speaker/domain/SpeakerEng.java | 26 ++ .../demo/speaker/domain/SpeakerRus.java | 21 ++ .../demo/speaker/service/SpeakerService.java | 20 ++ .../demo/types/api/TypeController.java | 64 +++++ .../com/example/demo/types/api/TypeDto.java | 28 ++ .../example/demo/types/model/TypeEntity.java | 43 +++ .../demo/types/repository/TypeRepository.java | 10 + .../demo/types/service/TypeService.java | 43 +++ .../demo/users/api/UserController.java | 64 +++++ .../com/example/demo/users/api/UserDto.java | 49 ++++ .../example/demo/users/model/UserEntity.java | 64 +++++ .../demo/users/repository/UserRepository.java | 11 + .../demo/users/service/UserService.java | 43 +++ src/main/resources/application.properties | 1 + .../com/example/demo/CommentServiceTests.java | 81 ++++++ .../com/example/demo/HouseServiceTests.java | 73 +++++ .../example/demo/MaterialServiceTests.java | 61 +++++ .../com/example/demo/SpeakerSrviceTests.java | 38 +++ .../com/example/demo/TypeServiceTests.java | 61 +++++ .../com/example/demo/UserServiceTests.java | 61 +++++ 170 files changed, 2406 insertions(+) create mode 100644 .gradle/8.5/checksums/checksums.lock create mode 100644 .gradle/8.5/checksums/sha1-checksums.bin create mode 100644 .gradle/8.5/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/8.5/dependencies-accessors/gc.properties create mode 100644 .gradle/8.5/executionHistory/executionHistory.bin create mode 100644 .gradle/8.5/executionHistory/executionHistory.lock create mode 100644 .gradle/8.5/fileChanges/last-build.bin create mode 100644 .gradle/8.5/fileHashes/fileHashes.bin create mode 100644 .gradle/8.5/fileHashes/fileHashes.lock create mode 100644 .gradle/8.5/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/8.5/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/file-system.probe create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 bin/main/application.properties create mode 100644 bin/main/com/example/demo/DemoApplication.class create mode 100644 bin/main/com/example/demo/comments/api/CommentController.class create mode 100644 bin/main/com/example/demo/comments/api/CommentDto.class create mode 100644 bin/main/com/example/demo/comments/model/CommentEntity.class create mode 100644 bin/main/com/example/demo/comments/repository/CommentRepository.class create mode 100644 bin/main/com/example/demo/comments/service/CommentService.class create mode 100644 bin/main/com/example/demo/core/configuration/Constants.class create mode 100644 bin/main/com/example/demo/core/configuration/MapperConfiguration.class create mode 100644 bin/main/com/example/demo/core/configuration/WebConfiguration.class create mode 100644 bin/main/com/example/demo/core/error/NotFoundException.class create mode 100644 bin/main/com/example/demo/core/model/BaseEntity.class create mode 100644 bin/main/com/example/demo/core/repository/CommonRepository.class create mode 100644 bin/main/com/example/demo/core/repository/MapRepository.class create mode 100644 bin/main/com/example/demo/houses/api/HouseController.class create mode 100644 bin/main/com/example/demo/houses/api/HouseDto.class create mode 100644 bin/main/com/example/demo/houses/api/PropertyStatus.class create mode 100644 bin/main/com/example/demo/houses/model/HouseEntity.class create mode 100644 bin/main/com/example/demo/houses/repository/HouseRepository.class create mode 100644 bin/main/com/example/demo/houses/service/HouseService.class create mode 100644 bin/main/com/example/demo/materials/api/MaterialContoller.class create mode 100644 bin/main/com/example/demo/materials/api/MaterialDto.class create mode 100644 bin/main/com/example/demo/materials/model/MaterialEntity.class create mode 100644 bin/main/com/example/demo/materials/repository/MaterialRepository.class create mode 100644 bin/main/com/example/demo/materials/service/MaterialService.class create mode 100644 bin/main/com/example/demo/speaker/api/SpeakerController.class create mode 100644 bin/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class create mode 100644 bin/main/com/example/demo/speaker/domain/Speaker.class create mode 100644 bin/main/com/example/demo/speaker/domain/SpeakerDeu.class create mode 100644 bin/main/com/example/demo/speaker/domain/SpeakerEng.class create mode 100644 bin/main/com/example/demo/speaker/domain/SpeakerRus.class create mode 100644 bin/main/com/example/demo/speaker/service/SpeakerService.class create mode 100644 bin/main/com/example/demo/types/api/TypeController.class create mode 100644 bin/main/com/example/demo/types/api/TypeDto.class create mode 100644 bin/main/com/example/demo/types/model/TypeEntity.class create mode 100644 bin/main/com/example/demo/types/repository/TypeRepository.class create mode 100644 bin/main/com/example/demo/types/service/TypeService.class create mode 100644 bin/main/com/example/demo/users/api/UserController.class create mode 100644 bin/main/com/example/demo/users/api/UserDto.class create mode 100644 bin/main/com/example/demo/users/model/UserEntity.class create mode 100644 bin/main/com/example/demo/users/repository/UserRepository.class create mode 100644 bin/main/com/example/demo/users/service/UserService.class create mode 100644 bin/test/com/example/demo/CommentServiceTests.class create mode 100644 bin/test/com/example/demo/HouseServiceTests.class create mode 100644 bin/test/com/example/demo/MaterialServiceTests.class create mode 100644 bin/test/com/example/demo/SpeakerSrviceTests.class create mode 100644 bin/test/com/example/demo/TypeServiceTests.class create mode 100644 bin/test/com/example/demo/UserServiceTests.class create mode 100644 build.gradle create mode 100644 build/classes/java/main/com/example/demo/DemoApplication.class create mode 100644 build/classes/java/main/com/example/demo/comments/api/CommentController.class create mode 100644 build/classes/java/main/com/example/demo/comments/api/CommentDto.class create mode 100644 build/classes/java/main/com/example/demo/comments/model/CommentEntity.class create mode 100644 build/classes/java/main/com/example/demo/comments/repository/CommentRepository.class create mode 100644 build/classes/java/main/com/example/demo/comments/service/CommentService.class create mode 100644 build/classes/java/main/com/example/demo/core/configuration/Constants.class create mode 100644 build/classes/java/main/com/example/demo/core/configuration/MapperConfiguration.class create mode 100644 build/classes/java/main/com/example/demo/core/configuration/WebConfiguration.class create mode 100644 build/classes/java/main/com/example/demo/core/error/NotFoundException.class create mode 100644 build/classes/java/main/com/example/demo/core/model/BaseEntity.class create mode 100644 build/classes/java/main/com/example/demo/core/repository/CommonRepository.class create mode 100644 build/classes/java/main/com/example/demo/core/repository/MapRepository.class create mode 100644 build/classes/java/main/com/example/demo/houses/api/HouseController.class create mode 100644 build/classes/java/main/com/example/demo/houses/api/HouseDto.class create mode 100644 build/classes/java/main/com/example/demo/houses/api/PropertyStatus.class create mode 100644 build/classes/java/main/com/example/demo/houses/model/HouseEntity.class create mode 100644 build/classes/java/main/com/example/demo/houses/repository/HouseRepository.class create mode 100644 build/classes/java/main/com/example/demo/houses/service/HouseService.class create mode 100644 build/classes/java/main/com/example/demo/materials/api/MaterialContoller.class create mode 100644 build/classes/java/main/com/example/demo/materials/api/MaterialDto.class create mode 100644 build/classes/java/main/com/example/demo/materials/model/MaterialEntity.class create mode 100644 build/classes/java/main/com/example/demo/materials/repository/MaterialRepository.class create mode 100644 build/classes/java/main/com/example/demo/materials/service/MaterialService.class create mode 100644 build/classes/java/main/com/example/demo/speaker/api/SpeakerController.class create mode 100644 build/classes/java/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class create mode 100644 build/classes/java/main/com/example/demo/speaker/domain/Speaker.class create mode 100644 build/classes/java/main/com/example/demo/speaker/domain/SpeakerDeu.class create mode 100644 build/classes/java/main/com/example/demo/speaker/domain/SpeakerEng.class create mode 100644 build/classes/java/main/com/example/demo/speaker/domain/SpeakerRus.class create mode 100644 build/classes/java/main/com/example/demo/speaker/service/SpeakerService.class create mode 100644 build/classes/java/main/com/example/demo/types/api/TypeController.class create mode 100644 build/classes/java/main/com/example/demo/types/api/TypeDto.class create mode 100644 build/classes/java/main/com/example/demo/types/model/TypeEntity.class create mode 100644 build/classes/java/main/com/example/demo/types/repository/TypeRepository.class create mode 100644 build/classes/java/main/com/example/demo/types/service/TypeService.class create mode 100644 build/classes/java/main/com/example/demo/users/api/UserController.class create mode 100644 build/classes/java/main/com/example/demo/users/api/UserDto.class create mode 100644 build/classes/java/main/com/example/demo/users/model/UserEntity.class create mode 100644 build/classes/java/main/com/example/demo/users/repository/UserRepository.class create mode 100644 build/classes/java/main/com/example/demo/users/service/UserService.class create mode 100644 build/classes/java/test/com/example/demo/CommentServiceTests.class create mode 100644 build/classes/java/test/com/example/demo/HouseServiceTests.class create mode 100644 build/classes/java/test/com/example/demo/MaterialServiceTests.class create mode 100644 build/classes/java/test/com/example/demo/SpeakerSrviceTests.class create mode 100644 build/classes/java/test/com/example/demo/TypeServiceTests.class create mode 100644 build/classes/java/test/com/example/demo/UserServiceTests.class create mode 100644 build/resources/main/application.properties create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 build/tmp/compileTestJava/previous-compilation-data.bin create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/com/example/demo/DemoApplication.java create mode 100644 src/main/java/com/example/demo/comments/api/CommentController.java create mode 100644 src/main/java/com/example/demo/comments/api/CommentDto.java create mode 100644 src/main/java/com/example/demo/comments/model/CommentEntity.java create mode 100644 src/main/java/com/example/demo/comments/repository/CommentRepository.java create mode 100644 src/main/java/com/example/demo/comments/service/CommentService.java create mode 100644 src/main/java/com/example/demo/core/configuration/Constants.java create mode 100644 src/main/java/com/example/demo/core/configuration/MapperConfiguration.java create mode 100644 src/main/java/com/example/demo/core/configuration/WebConfiguration.java create mode 100644 src/main/java/com/example/demo/core/error/NotFoundException.java create mode 100644 src/main/java/com/example/demo/core/model/BaseEntity.java create mode 100644 src/main/java/com/example/demo/core/repository/CommonRepository.java create mode 100644 src/main/java/com/example/demo/core/repository/MapRepository.java create mode 100644 src/main/java/com/example/demo/houses/api/HouseController.java create mode 100644 src/main/java/com/example/demo/houses/api/HouseDto.java create mode 100644 src/main/java/com/example/demo/houses/api/PropertyStatus.java create mode 100644 src/main/java/com/example/demo/houses/model/HouseEntity.java create mode 100644 src/main/java/com/example/demo/houses/repository/HouseRepository.java create mode 100644 src/main/java/com/example/demo/houses/service/HouseService.java create mode 100644 src/main/java/com/example/demo/materials/api/MaterialContoller.java create mode 100644 src/main/java/com/example/demo/materials/api/MaterialDto.java create mode 100644 src/main/java/com/example/demo/materials/model/MaterialEntity.java create mode 100644 src/main/java/com/example/demo/materials/repository/MaterialRepository.java create mode 100644 src/main/java/com/example/demo/materials/service/MaterialService.java create mode 100644 src/main/java/com/example/demo/speaker/api/SpeakerController.java create mode 100644 src/main/java/com/example/demo/speaker/configuration/SpeakerConfiguration.java create mode 100644 src/main/java/com/example/demo/speaker/domain/Speaker.java create mode 100644 src/main/java/com/example/demo/speaker/domain/SpeakerDeu.java create mode 100644 src/main/java/com/example/demo/speaker/domain/SpeakerEng.java create mode 100644 src/main/java/com/example/demo/speaker/domain/SpeakerRus.java create mode 100644 src/main/java/com/example/demo/speaker/service/SpeakerService.java create mode 100644 src/main/java/com/example/demo/types/api/TypeController.java create mode 100644 src/main/java/com/example/demo/types/api/TypeDto.java create mode 100644 src/main/java/com/example/demo/types/model/TypeEntity.java create mode 100644 src/main/java/com/example/demo/types/repository/TypeRepository.java create mode 100644 src/main/java/com/example/demo/types/service/TypeService.java create mode 100644 src/main/java/com/example/demo/users/api/UserController.java create mode 100644 src/main/java/com/example/demo/users/api/UserDto.java create mode 100644 src/main/java/com/example/demo/users/model/UserEntity.java create mode 100644 src/main/java/com/example/demo/users/repository/UserRepository.java create mode 100644 src/main/java/com/example/demo/users/service/UserService.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/com/example/demo/CommentServiceTests.java create mode 100644 src/test/java/com/example/demo/HouseServiceTests.java create mode 100644 src/test/java/com/example/demo/MaterialServiceTests.java create mode 100644 src/test/java/com/example/demo/SpeakerSrviceTests.java create mode 100644 src/test/java/com/example/demo/TypeServiceTests.java create mode 100644 src/test/java/com/example/demo/UserServiceTests.java diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..027f15690ef000b0899c145d0eb075b3bf29e1b2 GIT binary patch literal 17 TcmZR+-}s-ErN7#n0Rr3sG6Mt% literal 0 HcmV?d00001 diff --git a/.gradle/8.5/checksums/sha1-checksums.bin b/.gradle/8.5/checksums/sha1-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..a703c8c420f6526755b8e5055f1e4036b85fee53 GIT binary patch literal 22223 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 UN3OmaAqU192X{TrO&y5!ADetKhX4Qo literal 0 HcmV?d00001 diff --git a/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock b/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..3a889e778c5967bfe67bb6de224507349d84e2fe GIT binary patch literal 17 ScmZSXa<2CN=9nGL00jUo4g-_` literal 0 HcmV?d00001 diff --git a/.gradle/8.5/dependencies-accessors/gc.properties b/.gradle/8.5/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.5/executionHistory/executionHistory.bin b/.gradle/8.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..473fd4fe1404755b25bc60aa807b036d87899bfa GIT binary patch literal 161306 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.5/executionHistory/executionHistory.lock b/.gradle/8.5/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..98991117e998f864b03bf333afe84a4625935e54 GIT binary patch literal 17 UcmZR6@X%!4FYS|T3=qH%06ftIssI20 literal 0 HcmV?d00001 diff --git a/.gradle/8.5/fileChanges/last-build.bin b/.gradle/8.5/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/8.5/fileHashes/fileHashes.bin b/.gradle/8.5/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..a42e5c6732059f86430a2866900f89a886719b3a GIT binary patch literal 28297 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 Okzs#KUuv=e@}Mm9$!Ez5 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 literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..724155b --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Apr 26 13:56:55 GMT+04:00 2024 +gradle.version=8.5 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..0c108623ae3e1cde3eb10c4c74de4504da1156f7 GIT binary patch literal 19451 zcmeI&e@x7A9LMoHBxD`sCegb2QJWwA7}qLdP0ro-Ycu6Xp>PRCzM6^)R20 zBR`n2r)uG=edXK-lONL8>|8naou0WyN3QFzPPJyA*75x&@}r@L1BcXAsQCQsZa*$v zy+Ir0$vuVq#PcW3uqPJX2`Da>lEV2OClFMGP$4n$mhqA-z;4c643Iwg}Hc% z{9dI&*1k0`kGVkHWr?0X?~_aj=kpeNpx)nOQ|6KCFus2o`Rg`aO4{-;?t(x0#|F2Y z))to^e7>IiYo|5td$vW(_m3j~wy5v3N2_<+e>ZH0dN+CRy2ZxY`1AXji-vB0nP0KA zDm{g{W*B)N&!x4dh_}O;3m?c`k0dnTZd~lm=Ud6$yc;}Bg=jsn)XLH1&)5n+#S>$U*&W&qM z)%Y?OZ;@}T?02r@b31o+Bl*^==7PzU;j}-7oPJ6qF8$dq+@k;rpa2S>01BW03ZMWA zpa2S>01BW03ZMWApa2S>01BW03ZMWApa2S>01BW03ZMWApa2S>01BW03ZTHhRbZm+ za_#>NE4AP3ckX|P4gPX*-Zl4Zv-6(ixVdNI_?bHHah!3UIPcYaw%K{la@^cA`Sn@+ E1S-_U`~Uy| literal 0 HcmV?d00001 diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..fafdde42af659e02b52a35b3ced0958143b05d6d GIT binary patch literal 8 PcmZQzVC;{PGh_w;1qcB@ literal 0 HcmV?d00001 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8b7fb54 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "configurations": [ + { + "type": "java", + "name": "Spring Boot-DemoApplication", + "request": "launch", + "cwd": "${workspaceFolder}", + "mainClass": "com.example.demo.DemoApplication", + "projectName": "demo", + "args": "", + "envFile": "${workspaceFolder}/.env" + }, + { + "type": "java", + "name": "Spring Boot-DemoApplication", + "request": "launch", + "cwd": "${workspaceFolder}", + "mainClass": "com.example.demo.DemoApplication", + "projectName": "Pibd-21_Alekseev_I.S._Internet_Programming_Backend", + "args": "", + "envFile": "${workspaceFolder}/.env" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7b016a8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/bin/main/application.properties b/bin/main/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bin/main/application.properties @@ -0,0 +1 @@ + diff --git a/bin/main/com/example/demo/DemoApplication.class b/bin/main/com/example/demo/DemoApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..7fbc5de64390beb5daa35b29037a44c8c8197883 GIT binary patch literal 5130 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/comments/model/CommentEntity.class b/bin/main/com/example/demo/comments/model/CommentEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..1724062b5fc62196a6218319bad7366535a325d4 GIT binary patch literal 2910 zcmaKtU2{`a6o%iOPnsSIw15=a8e*Yo(h@|9XrWeGpw-Xd}~x#IPbV>{nO5mGqoV^Xm^^=oF;a&;BL zo8?;7Qb=bzEc8h|#Db`~M$-x*3KfO%P9r&}+pKWkFzH>ls)dUE+_B3gh5qc8`NGT; z&C*6D=Tz*{hIm~!9ikj|&uWfc%*^u(Pa+l5p^k!@r*OqC+0KkYFgdb@wu9_8FWbb3h*|e()na&*kueyZ!HrWK9Efc-d zMc3MOs&=VZQw*;_?PZxCUzM~^O4_Fs20F0DS9_o^Y#@w??A|sI#R1u!Hqe8Z?A|fZ z3qy8i3>-wCLcm^c+=0Fyoua~l4a?D8z=llv+ z;QpzY_mJnV*Z%By4nPkr>R&=hwgD@=X;wF75cE_mM)48va36YkZObY+a?2kZIE%3u z=5Rd<`f5^|FV{F725#Uc%lE=8)~w~H3db0sDSuaMI)+7j8pS6HM|2p??1rft$l?|U zQfY2J38S!L zU={cIps`$w?BGVN_j_2F^9GjiP+_e3vb>l+n50nn%s>+3vU_Y`0+X_PV&FX9mED?w zi$ST}6_T(!LC=cK+k zP5(juO$Z|(HBYdG}={l93nqx_B04KRQZ zj^Y@1hO30*c#D!aIKf|W@IAvzxI`-b27{@IT@0lrcQKM04DBMG8Vv99=tN`}qx;@R zhzNQL(@PA4^mdX_PVwIm6B^bL7qm{oi%9>{pPC|}6BWLMPF2!R$h$>a*-5%#y_19^ zwBapzv>C2$y00+wGnE2N5LyX{`=**g+B2S^wuFtO(#&!{9k*Dc40=X;IPPjS&?6dH z0<%dxU(FyR?I1~CkaG|tsd)>?NIS>`!%cPpk=76p_NWg?ydC7cFUSSmH60-Fc94q% znd$-}*Cikv5g(95JIG~UkV|;qGj6F!q8;Q4L9TWIk!}$XPG|!pz@3c5D~$fcO>>XT z`ht9jY0r3u;~)(gNsYC%yxSx51i9V?M4DAVt`OC|<|ot^kV}UnzhNdHB+qOvAL25U z%M0B|E+63%&*h_B61n^VE~9(6mfOR^%Qo`GCh|*-L0-bL7wvD4d?%Iu5#i9w^q=TU zy~gb{|Nnq+@MZcBs9O`SagRY}_we95+@bV{(vX(sD1A<8L`zeYzMvG>(ikO^QbJ3E zlnTV;2cgy97%?cwK|PQc^pmy30xWaJZxi2&ZpP? zc1kD+G%|V}{p`C?(V|CSsilqfZGrsWeqW%_u_LM=k8%}7ED6*CZRj!y2js5QU_t`* zzz)@8T0?KdsCp&vxythxlU(n|4P@mRrgAu+|y&DeB!uBWexiy zY%8mNzFf$$Cto)`GhX{?v&~!WbQ2aK^>wT{?Wr-=E3d8Lu!n(lV;M(IoAI?%Aw5`k zCu2{Jte-|C7k6%A7kpxVWH5{Lw2UQIa;Aae!84Yh*vO&6nEnRJSYfQrzKhJOtnyf6 Q%%O($8E>G@oYrpwACo7lIRF3v literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/comments/service/CommentService.class b/bin/main/com/example/demo/comments/service/CommentService.class new file mode 100644 index 0000000000000000000000000000000000000000..0951fa4c9548b2f6dc0a3b34d7c1826bb225e198 GIT binary patch literal 4978 zcmbtX33nUS8NE+7maU8vV*^=C6A==yyhKh2Ay`g|V<*I^<51f%#N8N6&-TP4jhGpk zr27ipSGuKiU+6*$w4iJ)(2cf~?(2`~>FIqlBWYxhePZf!WNF@f%l+>AmiJ!%@0I5P z9Kyfjhzay(t$bRZ)AL1BrgJiHrMZxo1=mSC(q1yMGCk}sO!|*;Gzzqx)tB_NsTbzc zr)JN}tSgYPWzljB*RszG92{HSY)!6Wd7`SB5oj7T3Wj@FAk+0~jijap8i%c%OrQZ9 zG{m6^G<2n=TOhDe!*ys9*feGoA9IFrB@Y>Q*7z=2n{c^W#7YZ!pa zE|bhnE5^LiI1$Goft|H19W_lkubV^md`WeKqvx`+sGv9FwF1fGR>_gc(UD}nm&rI>EUQGp$&SwL&pQViXz;ke4J zCf8Ec!OdP!2u5>kMaxTxQha5rcUwbMRZoS$P4(4&zF4XF6RRn$zoZ0OCtW?ecv3G0 z?WBP%L0~9MNsuM0*IZP&s$!kga37`w2CmJTEz`cGBf2Als*i)MvTt3k6Lu?OvQAr(c!Q%x6pIOV2ur2I z>k~MQhcwt=Z*FD*dEJM3%VDu1b-lje1exv$2C1%$lr$`XInnG?jqHiwdsQ2$X=UZS zhPUEv>_LR0dY3>?6cW{hDnOK22**1#yc6%D1>*26^hUr~#efguJsRGN_i+{y#E5jV zw&9hazzvlV>dn5O-zwN2(C~=r#~bN1q@iAYP{W7tVLze~Z@24*xLRY0oyJEsd<-A= zf%}3T;qvn2e0-nO@F{$nbB6dPbeB!vn=>QI%3~Tni_h^LkyPF_c8w^-E%<^4Qx$?H z&#}`xK5NWF9$BQz6Wta(uHk}`Xg2lyY);?RFL31lPR^MGzJ_na@pXaJH7AvZZ{k}5 z*D*#lZmOh(j~%z-JL-J##IiwHX@oO8IvB3x*{2fD-UNQ2kUYtQ$Ovv&&!7`dok_s%pon8 z!#h3cUr%_nX**(BF2}uIJSp7;E9WF|1wW1BYTW_HC@fivGCk(y5C!!)J*zG+8h(c7 zIYjccC4pDMAqASg@#A_SXG&++m}M=Nis55oPJ+C4IxK$eFMXG5>xRc#V0lXU`x8VuZUw@(D%lHZxe(qgTR-_vj{JUUOgHFw~;a7p7-)i`tXXrOvTi%3% zTyMkgmCrwF_#u8opMOxpIiiJUt=01^(}q8@H;fhv(jGQ-$B|APe;3$YJGs^oS-(AT z{8M22+M;YV{$Ao1f^FatpM|ZijQpkUk8w2fe+!?E@w^h_ccS|uKRwT(^%*|Ju!;XS zdYbKMUrD$6;P_vQGcK5SrEo1X#+$=EO z({c$rFQMxK+WLB~U=MH^`(j*w30hAX2U{L{9IaO|c&7dEMcng3Z%DlN3Wh7iZLAd`9{1E93KZzPB^)K=zw>8QO^b%#u5?ofpH~a2F9B4Dmlu#WWB^NCY0b7`6A~ zi^SPLgcqvRPBChg=j|TOlgdA#e5uZV!Xtl>77ls7lDAiMy&i#M%<7vjj{W zsPIZ6NWoXT%lP(_^yu%F&+9hNuF46O8Q)cG(gvGKgbmX7{U{sBNE_@nfsK?GIqUc; zo;t&-eWsQ&K8SA5fXcH*JnI2`j>!dvEpUU4j@KkzSX{U3m_WZeJ& literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/core/configuration/Constants.class b/bin/main/com/example/demo/core/configuration/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..6bed80ee87c4ea096911075e53bd01adc8b75b39 GIT binary patch literal 405 zcmb7A%SyvQ6g@Xhn;84D>cXWv73^4C`T!{iLQt{VtxVIgPDy4;G7*2vmEgh;@T0^V zwYYY3&OLYTCMv&`lT=kpY$DUK%yp%IlfHY@1wq9B zx`^FHBU|Q)I@i_c_R?z6uMWXB*cbm7VGDIMm;+WGLXN!3A9Is4hs?xW-+M*t<-4TA Z7;zD}&F8i*N6nuitf9w>u+HdV;|o#6ULpVh literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/core/configuration/MapperConfiguration.class b/bin/main/com/example/demo/core/configuration/MapperConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..52046010ddb3c6581a5acdb5d1c15f7a372c6006 GIT binary patch literal 661 zcmbVJO-sW-5Ph50rcM2*^&1c3O$A->ph#8Ff~QnLrQmTJ*SebQhHa|;EIkPd{s4cJ zI7v&bAR=C7c4ptanR)a6@$v>>5A!Y@hV8&aTt0{>4kf>ok>P={l8nAm?XDGxGMYC; z97|gt&bi1lRBptb;GxiMe$u*;LBdejRazzc47runCPTh%E~SSYN~0J-fnmZ|S{`?! zmbB-h6-tJxZvqiEg;i=epkYKp9$+x)U^Puf4H#SAnSV%FvRl4njT`hz5y5=3Rt@IaX zTQr#Oq$_i-aS;>Gm)~znNx%NyUa(*(AT|a;r6jE8epe!my&v4uBI_X z(yuIgPb82)l>F;Zx0XG4tYi?tcW2?OgUnR d_$CH0Lp}n;V>}_E80P40j6!}&Hj3~W@CQwzf}j8Z literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/core/error/NotFoundException.class b/bin/main/com/example/demo/core/error/NotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..7b89f8ea045ce7612d4a52544115e22ab7ac961a GIT binary patch literal 608 zcmb7BT~ER=6g{2bbfPFKDrzzxOhlu5HmENK9?XJ?7!pH#7+ZmwttDMi{8>I}O!No% zql_I8!RU)^()QeY?ztcR_0vIDkivz6hYz6yZ4;X<89}v#}$j{x1V78gmI?M2$uKUG0zpeT`JZIQs*L|Gngef zD(g`7Xg@I3u~}d@cH>){#WokpZY4==AqRl=S*&6ca|DZH#mnX$^_7KrWKAsmaMhG# zyq&=!mUKNWAtO%_98cCWq?8&HB@P8k#R=1hWnl`-8Kkj7u=)oE-#`~ zrB78D49%H%5IhjklwXf$(oY#mYC?5y)$rnIddy&+s7R#)hO*lmF&O9MXQ7O`jVd-6 z98X2^Y7vfQax2DxWN3S_FM^Rsl+KHyk>05}gX{f|k_LC&b(r3$2C}zNfyq#r%Jh<$ z+iq`NNX>cPv~J=>;>)4ZV9x3l4)vbK9@&-Y3280uNs&Pxtwog@Wk+-}IxGEmST7Wm zVAJ2C6C~HtO^WPXga#bSbhTL+3`wcAmNw`gyrH#nX=I~oq_=2TJ#*^j>cUA+(pVaz ygRR1oXSs%YMeCW&b0{qXUHl8gu)PEt6hP)0OukZ^#&v#ym`f0I3DV6b?)(7TR%f{Y literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/core/repository/CommonRepository.class b/bin/main/com/example/demo/core/repository/CommonRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..533d503bd55e1d91f06e958fc74aa2589877db13 GIT binary patch literal 487 zcmZvY%}T>S5XWa*O`7`AS}neTBo`O2CKg2EsUX&JkCjHQu~e(fD81%SD$iB%dJt?l zVlZBc55c7ba}EFi literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/core/repository/MapRepository.class b/bin/main/com/example/demo/core/repository/MapRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..c2ac2867177c13a9e403c58ce7faabab6b6dd892 GIT binary patch literal 2795 zcmb7FZBrXn6n<_9goGtPc+~<@rH~g(K<$f!QYlg`(o!L&qE)+uTe@_U%_JK}zUt`j zsWUAVopJo;j6cfpxw|2|Nk~gSY_j*Bd(L^zbDwke-~ayj3&0H&LI?=V<*hDxZgtv|TqHb5qQee8#y5ue$2pd*$Ka*X{EYqdS z)GPL#Jwj|gK--d0H0))8j(8#`5L~tPWCR@;(9nx$2!jFx9)xUJO2UXBhJi2yMl^)b z9l;ph4&g01wx0qS(TfQ1qS2miDnEc&ZLGOXsTSJDDPDZyRw|scTJWU z+pzMwnbXULTGuv%_7j8T%x}Dw+=go+6(fz|j!LH?ue@QbrBiPArM+UB1RAeZ=G@hW zQL&kBv}M!v>p=pk5RwAD9=XJ-;eA}@r8tDK!m$SbRm(J~E5j;gdXUCK2=f9%UI5Ro z;RAfgI2F4r^@6~KhB)qSdfPEF)D>I{;VRL3p&E{8xQ-b{vn^E?rNWv87URt~nP|gd zftoVYxAcl!Q^GzXF~hCSBvjFIL&L|Q9%uX~+=j~dwNu*);S-)cTL;Z~1p)@Upes*O zY-(#OeqO+DP+51Jg(Uc>uDGq?GkngbHQ5b0)dfzYtw(SZ>l(hmhCpXUI?XxgFW70{ zL{1TMPs1ke)2~z|>(~9KY8?3Pp*>No+ZiiI0_QH9Nm&RztED|MrcmcJJiymPO%14# zQkT6qbs}u&Z`3U=Qr_FPo_|VZ*E+Y0N|3fxb$zel2X)b1WzN?_5)*c9>?UR2)sRP& ziSnk@%POYSa0{#Ijf3T(`(|j!VpSlrZB@&8dE0PiMnl)nDOC&ny0o@<-s@g&Wwec} z?~Bkp$5p5M;y5?DoC#he{tiB!2ylvWdh$KYPfq|5KAeJl??F&aUt0ROdgPo3#*#15 zpZpWCotGGTf#GEMcZ|Nk#BV&)fp_>DqaWxQWUM|$8D)$q?r4lee_X`7{C}@uXPPU4 zOPFDH7ssrV^*(o%*HH2~hEEU|IKiCy`AFay_uY(L&Y74m%TP-ewc}=?BuMW*!c&Y;+ew;*M2-f-!)J3f-mv1XEBbr56@&B&twZ8WpnW; zo5J%g^HPqzd}T{D0sDz-1#IF>U?=!4P~*vu>oRf85!XCF{tG@_6Lnk@Ex44;#ieXb zxE|FzA*Y}cPwZ6silYN%a`hjp0r2#qc9^z*g@a|8kyW=P zYBh(GDJt<8drAiZhj&-(!U;)Q==QL!+v8WcW!t(vd6gT#i)Voxqhi{+5&D5sz|&fH GoBsosJwk*4 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/api/HouseController.class b/bin/main/com/example/demo/houses/api/HouseController.class new file mode 100644 index 0000000000000000000000000000000000000000..218cdac52d1337d246c3725edcfdd0e40aee7a25 GIT binary patch literal 5127 zcmbVQ`F9)D75<*$ScyD#90ig(6ta*6TV5uBNuWvsiIb3k9NaiHkO1vi8ru_(X2i_M ziCNP^7q;#T(6X21Ck{QQQ4jpk)1Nu~O&q@WW+aU~k|X+qJa4)0-tT_*zWd(u*WZ5i zUjRq(SsE#U(V|<{&8tSaVw-x&EW7%WTlGy}H!7BXMmDEhC-7X`HoY`@1O_h~D~4_x z&Z7Rv{AIHk2xw}_tm&;-MN?p+&`GBsiiCP2`Mf}1uv#%2%g2(-<-D)gS6^sKbMcn4 z5tyE3*bN1fNdTh!H1Sq5!ets44~71%I5GPfB5H)+_2UfJ5N zA&pJ4^#cu?k&&&P8v3A-?}Fu+=c?s-)4O2I+l+U%;1&&g&R`JOj|O{!CCe8WPr4A1 z(&C!68Mp$oomo{e2~+5l6Ij7&e&ohRs5GC(UV(j`auR_aCo?|c4OpYBU85F`vjVhVJ4Z%3vR`ZZX{h6*c7;-`|FYw_i7!Uk_OV4 z5E$u1Rzg05JvgZ0PTVE1dC?5y9z9!PZVbnLF1XHOK7&adO5+}ZTta=vt)SsB?j_e$ zEs&3Mt#r1@fKXKkRHBJ;C4+JNNJAb+1k!#8RA8)4x^+-6GADgKrs00+Yd-!ot${IVIg_$m$PD zek&EqQRUuNl{1E1%JZp3_o1$JpEsYbntq_vPn+bLZQzNI3@+ixG@f9(C$e*$6HCLxDD>f{Fw*#$z(8xfG|Zz&NPgg% zMwtb(zTs6w!%=-!P3E%%VQN^wA`3k!vsVQQZ4z>w6C$c6O8G+7DavT+r=v!`4;Gfw zxGb=viLwQQtl7-Vd!w}KpeJsnWx2B8XmG)j-y66xV`D`wp2dS}Greh5U7kACt+md} zlZ$k%gdyIjKWmkq7wA5PW{hB|el}B4%3_tegsZaJkp82I{ne(FMvxLkpQT*jSq;0e zn`{)B00Fb`To)0QPIWf4rkdQ-^>&$Y{n%dYeqFT9PPnC2QnZtiTQc6M2xel#<>XCNm#KG{*#<$rC z*9};(jLNhbEV(5=gE#SZ8gKDnQUy^}9?MyAmrcE3l;=wZ1&sxx7`Wc5hQH$<@*UJ1 z68I(_wPPq6xg5OvmGmGd?Ik$`l3wN zkV0N7dDG$<*@LWniLsTH?=bb{D@=X)2IF@VCHpbJzgyV5h7{$2ow@&DFgJP~+j3*q zadU3`I(FoSdah&WUz|e`9DgyQhZR|A#$aa3n+!Y8z43wuh1pYXcZT zj(SqE#76qAQlGRn5$YRP`o^cn*u8nQ2EB&6Yq(E#cd&c3h6idmHP*D3B|h-hKY$6^ z(W&>Kvb{Uh+OR!=vv`O$2k41Jkz$)SAFiHO*w5h+ekJ-Det*p09w~C3g0ns@;3q!j zn*B%d*hM_9!t-S0z%D}EHab?r#V_#`Uq4@=1bm656#ww%)I=OIbSQ>$R|DlPT6&sh zK*k?sOF}pdk0vBKnGrMm`IjJk1PUeJ>;hH(h;l^%I!^-?9}7@_ z!+bwgNb`ax-}9uVPRR>YCn@QZv3rq?Yy8RFJVhaCYpb%AV}yQQ!%J=KJrJ|EwP9~- z6qH|41^)}Nou6y`2_7lGiTV5rN8&zbB`pn~g+e6J%rKi}E@eZ{a|{OIyxIoNsTlj& z2ApiX8YEq?|GPHkABwS&WWNW0pc5(lQSqN;>rd?exncS*_$&Jw Y`|r@*_wYVGz=s@>_qC7kF+Ro6cMqhgAOHXW literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/api/HouseDto.class b/bin/main/com/example/demo/houses/api/HouseDto.class new file mode 100644 index 0000000000000000000000000000000000000000..7fd6d73f4e5a7574d89b80b0a6851fe9115b3eab GIT binary patch literal 2384 zcmbW3Yfscb6oyY1c9&g?AQ#0ODj;$Zs-P&KD|fjpt3gBJCo^)dB*A?H%QmaOt2ja6ZEMe~(ul5e4>1&iyWy}{(7K)C&Kd({7|5BA3Si8DY zvwc;OyUJ60mRz)L#}~eGY)_*Rj(;?bZZ>ZJ7E}!g>8h(tsZm#52`f$wq)=`C{n z038!Mrm%Je81NlUw)!6x4tBVB8c+GW_NC7Sbd8MG9YExv5vY6+9tu6ISjK@cKY5OA zh+_|pO?4<;A-A)-xbps0srW93QykMNO&MT%A!avs z%ux#llzdn@6v4)BlsU)HDa$!I>O?H^qS)U0?V?cL zFbla-&>D?uQFE}`oKBah3!zX8LmR}RNET~{*!FQRaqbJ9y19aO#!<^U z^)N5j8O~~yf8*3#Q?4m)koKdyJIQCJk-lNu(p|QMhs&L%4V27Xa%z7gld`m>(ZrcD z(HNn@bO+!qxS1JBv9owfv0Hey;k^T64r3ls7dAiKR5$T7p2rI*_Uas2@Z=m> zaN`_Va3{*@L(O${_0pBFz`mfserkyq*o%qdn05r?ZvdV*a2y6k4P$!jC*AypmlWN? zGZRea=r-Q>(X($3=sk`_cmUNFsVtU_c^ef`)_4*U_#_2vZ7^Z;e6voWh z_zxOAp~(lc1F(27P`DgMMMO-?=5rwvV2c;_ohIWT!-*gdl0hcpAY<5Wya@<*AA>xk zsRWSeILKro$YYv`k{eEBIu0@gkm)8M+|Ug2gq|jV%*H`x5<%waSrW)>9Apk4^G!hb zjxfmcL~9ChkU}EJLb5f5ILHz}mYaa^wPTRQL~EAfAZv*rE6LU@#X&X!veg8HZ!-SX Vq1E7etkFx1{HJK0HmSI9^&bf|lBNIv literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/api/PropertyStatus.class b/bin/main/com/example/demo/houses/api/PropertyStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..ea04f97235f462d87270d51942551f222d4fd40a GIT binary patch literal 1104 zcmb7C-%ry}6#g#V)~ytnLxv0#f1qw-tl>dlHVF%vkyw7jx+RNGmvV)YZe7}rxc^Gw z0iu!k>>p)3w@j!HCaw>?=iGC??|kQ;^Yho&D*&%hRWZR(w!N+)KJjkf6~>|Hdd9Ig z2t;7;zGLkBUSIg(&(4la0Nro^la|7x$j6n zy40Xxh9rc?PC!*pxjPVK7{$_9U1@lT$0{B%WMgWFK`6R9o?wL`!+oC*ZLdG13C4Tc zJ2(+`Slf=Z`R9uIWKbhbdmkA#`aNj^2&h<~j{jq2*UL7v!)3I%&>8 zwjifWkp!I@CMi!RuT8%Es^7pmxhdrW)91)V&fP@h%q725NI65!>LkuEXPsmI3n3=3 zK>z8eS^`s4tw44mipVIf<*3Fw-Ahesd3EUmi?`quC6Lqzq(`=jB`KDK-p7Lx{3TIK zc>WCYowrK)s#BMWc9g|SELT2LHag-@X*3xpUe2M2j!2XS!Ksn-E JMI}1degiNY0Qvv` literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/model/HouseEntity.class b/bin/main/com/example/demo/houses/model/HouseEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..9378edab989352f57f8a49914ea5634f549abe33 GIT binary patch literal 2945 zcmb7`TT@e46vzKNSBOVM5Gn#GMv5UpQZJ>gD7AnBm74~s!CpLsBLs87UY-dE7&a~5~KJ?S{19Uq5uYFD+*I_!2*=wD>_FBKS_F7y2`uEr00o+6(2#>;O zx{ym)-`iCkgJ$|mMTxt+H&_KP5V3L_2X=|a(Rji=3ut%A>f zv1if!V#5L1sJLIF?0BD4@b48fX`bm?+%=z@iL9C5PRtg{n^}vSzPy>M+e_NTOn#et zZ8_7niWxJjaJeyFWwR1<$u&NV8z`DK9Vw_;g}{wWK4VWQc%!513_HUzgy2QDfm7&I zIJKC`Tg&C#rd3=si6*#(w3%Hu2|(Tb=(Be+C53n+POI`Vk8h(@nJ*TYTjTK-)vG$_ zmaOWFTc}27$CPGvbX`(EC#m-<*`oiaZ-S-Dxv^+tjx7o%m)pjGt4`0IVZP%rD=to3o&or32W)VOf>#l;D_sC1>m)n>^bb5r!eC`Uf7H7Ud~E(D~V zAoty2VE=O*+Ud6P#TR8muxdMIX-CFF&&Wa$pYS%1YPYhvYo%?u?@tYk;9>|fxE%z2 zRT(+;GjIoUtl)DqTeeo7DD*Hw<28h^fV)9_rf^z^DchNB!U-d}x7R$B3 zUhb-~)7>o0DFe&cP`Fs#Id04*n50nn!ax+GB7J3G43|WDY~X!d7HQMKHGCk_mVuA( zvDEg7fo(ANARpR2v&dWVM`vdxX>Vb3xArx4gVUs7?^s2JlS$i5KV35S+-ED4ER>6B z>rO@@R9d05kbFx`U}yccHmeWE^rxYF+~pt_O)RT)YK{w1$ANdz*j^)q{*T z1-YWTrU7KA9^?u^uC@S?>k<$SPZN+xJ;+2;kO_R~9wqZ z8KrV8{uBJZm+?Q*5qpExIRE|#zxQSQ52&TFH&|nkTL*af9qv+lL~TH8H>rI|Ev&T! zwXdlSY3)2UlUhV;-PF?5h-!T=vAhE7)uVVtKURxOeTmb(Owbj+4yzc%J$Chd-ck~C zSi=MUN%PTv#_#e%4LR_KLsv!yyG(5m5Al?5j0ag-oq#Xcq5i=}kXs5le)1syA8^(_ Ac>n+a literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/repository/HouseRepository.class b/bin/main/com/example/demo/houses/repository/HouseRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..d0ae485671efed876676fa25a506766972d54e27 GIT binary patch literal 572 zcmah`Jx>Bb5Pi$1Ac`W5rJWxMn;1Kg#2AgmX#s}LVmU@wFBIpwidlP`Si%%1yS- zpEf(${KZ%S+ns)G@+@@P&Dvd_XSV%^pv}&^YC^3EAR-XY5$Uk=5b&)~bLW zjlGw#BTL53B9hDPwy^_VEPpGQMY>SNGAlXPKym*CE6*Irp~{$E0~M??*5>CT^BSu> S)){lCV`I*nXfUVwTfiroGo*q5 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/houses/service/HouseService.class b/bin/main/com/example/demo/houses/service/HouseService.class new file mode 100644 index 0000000000000000000000000000000000000000..4f02ee62e9bfce42ad309cfe7ff7d42eb0866591 GIT binary patch literal 5937 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/materials/model/MaterialEntity.class b/bin/main/com/example/demo/materials/model/MaterialEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..659c5609599beecb2c41bb636377f300302527b3 GIT binary patch literal 1402 zcmaJ=TTc^F7@X7FLc3gBDySfoTQA6pc*9a+B$|*EjHzjYK5ff}F1B54w?==8KS1LH z51Jql6OB(k_?wJz&hAoLAwG1^`F7{b%s1cZuRmYE1IQt#z$c)Ut(s=M(QErvL)$TG zmR8ekqhadRrdG3djH9RW0zPv` zV6cP5VHHqz4SUOpB9=^bd~S!KG*1B|of2&m0zDPIS&e}U!&Ht9m( zj*3x?F&C?}*L~SMvsAV0iqR10E7*GZ<)*&x-JWp4YBkEnV^iL*X!liLl)+(&0)GBs zI9xen?n2!2hVt3VYMHCx8cZJ}{FxgcR6fI8fd~Su`nXeF5c)B|N)in6DG8nuDFq_w z%rS=23ttdBqv>}(4N!TIltT{Hqzm_`qzLEj&_^7HKJJ-^N3U^p{T(9qi8`)7*#r=~ z(A#BP@eZ#ME&B+iGhMda?nWs$<}k!vRNGR>F(QSpV%+0;z$~O@JopV0+y3++CJWmE zF0sN15(ob{8}D!yZ>N?-%47RTMVVSIo%w)Z;2`r8{plm5GyJ_r(0`Em0kOGogheTI zf}8IUWp!KXITg?NrKsN-SAz2d60|+d(abQ>S!Os#^Yh5?My_y`V|266wHwXhF7DCN cIKQlLv_9M?iep#$#cw1OeiF#?l@F_b0dI~DGXMYp literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/materials/repository/MaterialRepository.class b/bin/main/com/example/demo/materials/repository/MaterialRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..6c25978dc4f492d47f3d3895e70527ce02f50791 GIT binary patch literal 593 zcma)3O-lnY5Pj*Vt<`E3#G^Mqpt*`$3nF@2J+#t$x{WouNtSF@?a%Tgc<=}Kqr}-# zT4X`Iyvci+Vdl+zeSdrcILB@sC5F?;YA#=ePGZR?Qd_QtmrjW|WJI(asZ^2W3uCMoURgtqPeSXaJWZT3(|aehe6j9{ zr*tuC{Vb7uwd?=~pgq&AL6PPAC9D(Ua}HFG-?8>aLJ3X6{2ORsov<~3S1E1~D`S(e Qgf_P3aT^_qdHxRY13!1H!~g&Q literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/materials/service/MaterialService.class b/bin/main/com/example/demo/materials/service/MaterialService.class new file mode 100644 index 0000000000000000000000000000000000000000..983978ddf389a44ae281dc92530c5f309dc815fb GIT binary patch literal 2987 zcmbVO{ZkuN6g@8>TheVCDQE$$6sRUpx^1ntHf=2+wbcMhkXpZ&gqkx`!$)34I?L%wIeE6wFOb`HAGwb22HVc+=B}*70@+a3RpiAgd@69G z)C0I>*u-9I`W6KSZhC`^IBvs&Ezp-QYz#u+q>a}wAaJVW z1#+cP+mzwDyXi}Tp^~b&{)S5l_?#~G$2(pmaJ3hk7pSGTvn}I!-zRpyP%^qTV$XL< zUKI1~VA?#&0ZmE+@0T)a4Cqr_-XNWF^e-8voI=f{isQ>aT>#vi_8TU z^9gH{?UD+%i-lKar8%9oF^+dw8!v-bQK58_4KBEmOgCrYoPg6~SKTDZVhZOiOfvy3 z^;he$rvlfv@h;wD@v5zrhVLgekZ&iLlsC8B>02CPCl&OrX2`1DDOIWEvegJGI-pZ- z)a$+{LuP3T7i`SoqQG$#F8PsM-wD-Yfy*h9sgh2|lu29fv5GQYl}-74o>+U8P_lgm zsy$n&n`}qS@>Ls`@qxfvmw?@q+NGMh8*)3+6gf3|RQOHkQzT$;hq!mbdxH6T9;0Gp0Rs!3rfXN z9J=*o8SkiSl*I!)wD7gSr0HRk6EAqA_M}rX!qL#(ax40@v+)hSWfRw0O9KD4?zf3~*_H7?4De|K0`(-bd#Zv=dLJn7G zIu~>JURU-{Ha^4WwEI!duP)uus}_nmY_ewW2Z0P1eK(3^WMNC-e24bk6tu7-aJIK8 zTOg4e=Sa4XW1EM8{tLig7Jpkf#_J%T?jpkvke&IR-`U@A;uk(;aEjNH#xsY0yiVI8 zkKbvjcfneeZ2iQCjP+W>@(znea!N)1(}c?CFwDKM%&1aH_48}!6kw-XNH^( zawiR9r$OF7gqjdN+lFR0(QJH(YXz*tijnhTsP-IBg>g_y8T@h2rGL)MtkeiX;k>;i7 zcqH>|Q+I{e7DhRL6wKHi6*Am8Uc^7|hE6cGBRx+u+^;pqchs^*1^vckq&^v9nA?g1 zt9;p3p(06-gFsthl@3VJT2q@oHOTR88{x}+ZT9%S?C_2XdR!dl@+ZANltYz)pKwNsxQ1D3Ybf5h)=gY7L!qT3)0G>_HMcS`zN-#G?K#0&Lpz@S2C6ho zY5IMryc;R9Qe@|Fir#thHpoxWUReG@YvmJ4AL5)cy{BVj2^q5TC}W0Vl_VQyh|fKR zn3WORIm}Z2d5UGptI&RdR@IfeNT9h8^SBh^^4MQ+{*_q9Q-V5~h2@VZt=#^MtMAE6 jQPG4BMC{5hCRu-#pT~7#bV3%$a)-GQBX1r`xdr?Nei9(P literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class b/bin/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..f06043f2921b7d6b5b02d7c2e83d19a66bec7261 GIT binary patch literal 1293 zcmbtTZBNrs6n<_uD0CalO@#T1FX%diDk7RpjJU|BsR@`R#!r{-t`yo{(%vHcD@`=` zlK2DsQO47)4j7P-m?rHxr}v!aInO!w_n#lX04(FF4vnF1OWzWE+~4tp)fT?Aq8-7v zMQGVF=(tWCa^=dvTJJ?0M}s=D48<+J%Po%wj`en9OW2Ab<4K31)RduPMP6rd%W6u; z5n-KS_?a8H>N%aMnk|NGL$-y1403ts7%@=5xQ;P~$-&%JZYvq?=TXE3hEYeTUQLFX zYV(jn!{bp@H%~&3f}xzp5QZ7Xn{FW9#Quf|-|-Dkbh+BxYw^%c{4|(Vn{LFg-24xT zsO6#^3a-Rj9HkmE%va5`i?*fD-M-+IMl~vHaiCmZwA{!gf-6BFRd+7LZ?4zuPUr?s zC*;2PD8ub!dP?jmi}#OOF9i>%*3d5ZV(M87V+JD`$7`WBWt*mvI1Gihh*T)||AqC` zAHi)JOoMyg^k7R>Glv=6({Y#j9UNUARhZrC9mz0pbX@ByVO=*{I%XMaX9|5n69YBm z`r5tlO_r;2+TEE?c9vo3 zyu&+o@#?rq>ztu$OskvhG+7z4=?c+%l)M+v$O6V{2QX?S_6_;3D1D}ghKotOn_WPb ztO7j~6wCKAa0!#-F-)OCr!SK|Mcx(4xcUJs!Zlova0Am3u}H91Qmk_A3reM1-*HF7 zPt@KY;QlB2-2*h}3nH6C`3P9K4>pJS6l|;u#!@ir6o>~Y!~#Jq4nj;3MCB9+4UfBI Mmbx7c6UYb%7 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/speaker/domain/Speaker.class b/bin/main/com/example/demo/speaker/domain/Speaker.class new file mode 100644 index 0000000000000000000000000000000000000000..d3c4c60d4e3d027f7b173b747a068720067f3d7e GIT binary patch literal 164 zcmX^0Z`VEs1_oOOPId++Mh5ld{9OIiip1Q4oK*dk)ZBdi;)2w~?9?Ltl>FSp%sl;I z2$!9Kg^@uZE3qt5KPNFSUEe<`D>b=zn~0jL+~4h9BBpuwyRY#f0S{yZQ6=`;9EknASH3TG zl_B#qhy(MSVoK!(L%OEgGK&=EJ7UFznT@*f@=k zI!qunUjqbG!A-5Tp#``<4)KWQzySV3Khjw{+kREnX>X$zy70Z*u8_Kkc zaodtADC%T$st7F)2LYsDkJ_D3Fw88K8L}s;r(5zUurpqqh_MT!cR5&7*AC}Yi%5P@ zy2BGAwN&P!D|t;tT@}mN&|GKEMc5;Z)0WtxWv1xN&?(rR(qm84H$5Tx&5`v24t)U& zm2dDW1@;{aUs3!_9tSJdPx+w8G(61Hy-Joh$iQ{1k;Sl%jUjEHZc9rQZhWF^fXMV+ z`H9rjDD@Tzaj;3THtIIrR@9TBD6jGb#lqGP+;K3LWHW$eid>msdLw4}A7*7L^Zr!k ZIx#nW9Mbh)DTKU+^QL z{f>&bjQ!>)d=>{LiVTZA{*L=0j|2Zzt0&s2iCKoNbF!GQ815<^P!}!ZpsRT#-Yb3N zw*-$9zsuXH(gXiREK|ut`H^a#(20pM!`}aKPi4|q32%iWLopbk3K*Qm5E*vw_56kk z0-@^+vkxRSc|lQW`W}b^MRMe7pQ=wmL)fYOIB58`$!YzjN>F9S)m$=>>Zo@UP zMUUd7M>agv$W$43sliI#m$8D(bF(9oRI7o79nzWWHqN^qL%FGrbz272Q1XSVX@}0?{L0i^)qD(xRm9I0k8;FB9w*8 z6xkyLuHY&~4A-zeX4|1PV>6uVpJ*9T%nnoYIjAv#-k1ovKNe!wzF^h4`2(8;Ol6em e6vHbl<#_A~&z*npY@f+fB`em>`DR-Q!*+ld%p1s|*caWHU{M zEz@22-3@t~cCCMpZh+yk4i$BVmK((4=asM;}c@C}8o;*}+ zP;3f~OEio;J$hDET2r&=+ob9RDzpNY?eEZSgPmac7@aSKRB$E7i4W9>rDBQZHLCO( z16Og4Du(O0QK&tnIagDRo1bZ#Nz|rLvqV+q)Z23-PYNTt{S6&s{RcKGSlH0$FX(wS a(JtxebDiz~=$Pl~tddUWTpfGr`oUkl(7Y!A literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/speaker/service/SpeakerService.class b/bin/main/com/example/demo/speaker/service/SpeakerService.class new file mode 100644 index 0000000000000000000000000000000000000000..9a373b5beb8b7f855eb24b56699c22fed1f91d19 GIT binary patch literal 1169 zcmb7DO>fgc5Pj>oaho`4o0OJPJ{llxz8bgU0tz6NNVReM9EUz#4 znQ$#nxaYDhtVU!vBGZ7*uyo4Lxz*!N*LvAH6>Xm(!~6Z7Y;#{K=Ri5WxFF|lUAbKX zbfwchak(wtEBA~T!)7q}_8mw0;Si8|rYqRs>9m(GeL|{og&P`v zV&f=tXYM;<$FZF&++%1Q>*dB*-2Xs<8UngR2)#^1nUJa!f&8P&qktk&5HL!#(kOBb UWmG6l4Lc!D6&C&D6txTd0ek{9DF6Tf literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/types/api/TypeController.class b/bin/main/com/example/demo/types/api/TypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..6e996656706c6090f973944cb4673e08bdcdbdf4 GIT binary patch literal 3984 zcmbVP{Z|u56ulFX2rMA6)uLjp6@@@uZT)PN7Vx`4DNtIqUz=ormCbJ4-JsNd{7daQ zl^*?}r$6`fZ|dot*(7Wd7Gn=5$?WW#ci+43&YR)ye_#Cx;2M5OBPB3i^vb4uW|b?B zG)uDVnc-$d2BuZ9%_WXzJva0{$B}*-T>|?bTN{??SnjHMzwlTVLxDcEU{U%Tc2NpU z<`WzSk%e|zv(9mG*(*tB&Z<m zfv#D?^kNVC4fJ3@V9(h2au1lUfxYNfql|$x_6ZE;ZCBo_mJ8BfvI-6}&g8wKUE!J?2uvh}*-kIh+Z%es-Vs@GuP2mkUw8PEZ`0D`ZFqg(*ffEUJsYgP? zUL3`-G)4rD>{15<@8UQqVub`QjpbVvk&DgDI#v)c$Tl0+QtAw-z@!w~k`>q&dQsxL zkrc})nV&Z2X`B)`oj_8nHPbJtN}WuKJstydU6tXq<4`MOH7=^5?U;Ex2wC=?MSIn? z!m3X(U2ZeD+6lxI-3%{O$!J+F+ks6XPP?ubTA}T^)Zux(1%iriyQ?d{RhCaZf8Bg4 z3ueJ~OQzMZHE+pK?MB+=dT|yXrg2Unn?TDBd)mM_vVAy@i)maC7|@k(WNY9OE|ZTS z^rcm%&YIGVX3a(YGM8bO`q)4YSGhA7lCvprH*sgw3E%Elb=hg~m8x4*T$nd&gIph` z@M#*K2prmuu_*#2^l4R+NWKYv;stG5t`TMpTt}7}hn}i7bweo#T#RpLMiM>kF;;=#aDvo#*cb4fzXnzHUK2smdUn z@k*Pd?JyHtxBSpDSuMMyH=((#hC2TT2HwX>#pojgi}+e#DN)vK1SY23X368USsdy( zZ_-6~wZh=Y_QSS{cG7ebLur<5=e=jX+8|%CQ!wx?iUOsMqif?JF~l}YYL6EYZXKR! z9n0mqUJ>t?s|HGHkMu5jRlg{2+UkaIp!p(oM)e!^m5yN+D6Lpud$XllnDr0^`t{B3 z+?libp2tl%<9Q+bmQ|UP;hI+pdg0+o8a&%iY@gb;yWy=%GjEj(C5wjEid76ff75^u z9xr|DIrS-lf8zD3t&E)Cw%n2zf4LeoM;;QxCWLGHdbem|+f z&RUMMXooU4*bP_UR6M2V;#)snVt3)(epCn3nBT9un{mf=rLQkQGDzdOz-SwvJF$`m z+xoHHO)1uhLcGU*x`zj43K?}%sr=o?H$71OwvSH_Xrb%|vwy(IPQ2h?@&$%| z<5UU<_?CLC+UjpK!QW|&(GPE!$TF@8 z9mOO*;IE3~41X0hw}_~s8ez?(*|lfV_sDuF=(>RoD|-nA^g9E0h__uD`)nKV2-)m*5Gq z#H!V^`hq|TtWOcS%)yuHfu9>RQl%NvSXqL7wS|W};GK`*4K?tF5V83UUGV=QB?jeL zutk3t%lUiG#BepJ6Ah) literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/types/api/TypeDto.class b/bin/main/com/example/demo/types/api/TypeDto.class new file mode 100644 index 0000000000000000000000000000000000000000..1c0c584e7093030b496e44ae7960f3411b45f925 GIT binary patch literal 1214 zcmb7ETTc@~7(G*H3$+5afC8cxs}>OF#rUEU5j4Rx#Q-7k$qd`E4(z4b9SHm@O)w@t z_yhb=#xvVhpus5F?961a?pM>WL9tf z+a;39ceGunCzXbi^4qS=6`5juP>I#?QQ*rx-8;0v)sN+>%C5cXom=}2LT>fu|GMPmz z3M^e}C#~&Sgc{Wh@N3BNqBrS^(ijbMU0}7u`3mnLh$_-3&n({|jw8%V&VqA(;VVWz zbCJU}j&3XHQiWr=*MKU<83{~aGCRP5T<3j5V+zxKcqf?o#Qw8*BNyV$;ubL+nPqn8 zI2RTczhLH+O)1S*D6yI%xbq#y9wWDM;+>G&xRYU>3OhlqpUC8eMDC(~5s_Lyk!c<` b^A{q{eg0Z-FO_~D4>*^YXZykRLZ5=}@7#*~ntPusGgi)|O%#mG;0bH3^Czu$fUD4?JqATV38>YDLRukY0iZQH0@ zntiZmw6walZPc_4uAeq+(>_oT5}3IFu2@aO!#>el9#$aK(Cdc4Kyg=pt7|pAv7?pj zrrFrZ3q+R8hG{Pg1k;&KLRY91MG!qI6m$v1i)O=E->;XA=7wIbIW$&9uWjm0Q`X+c zkX>~$xCWIE&9Zik?>&H#gciM9!WuBzUu%50pVRu$Z!(s`WE%ezL!mR`nHq;MsQ zNlYu466kk8`?gurTu@8J3}%_MWE4oHU-=xlkbGv9jWOQr>osQDVd)I;GKx{;RLtQf z&GCLKHN8b}qT_H9Xm<#u)qzHTM(DyhF16(r;k6z>K`a44MGj&{l@)AJuQg2sr z%{#nIw7f?oo9nRU-foC;!wy5rMYSzO93xWrIz~LM$IL=%ro!Jbx)sbGVXU+j;*>0% zV&d>WXCppmsdj2eDOC`E%#yC&FAV1l+M*_tUPI?W7cXnqzszQ#q)vW;%`h4w`Ycz}nrG{T)l Ywl;uAM6vBkO#H!w!YzS3KLxP#5BHh|UH||9 literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/types/repository/TypeRepository.class b/bin/main/com/example/demo/types/repository/TypeRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..89e818bca8fe98f893d43063e1ea9877cb580186 GIT binary patch literal 565 zcmah`Jx{|h5Pj|^ErmkM!pO#lR3p}uN(jLe7}}}}lbf1iNbJaQfc`8dBnEx}KMHXP zh=L-)a?kI4cfR-h_Wtq;;22wVlo$>J6LI+{qBxX%CL_b$B9;laGB$~F#xD4n62os= zM}?tR=n9OLKbtN@yzF79^_5m`z);@Zn=n*P%}h2?Mx%u)Y7A{(X?dAOQ)$Oy8cK$a zZvqicgjE^;N><#BN*Ip(!u$Vh?J+b*CbfY)SK0LLZ&AHlaW5DeBQ@8;rIsqLif{a> zv0tqJ+$kcdVQ%7?cFHZh0WGsVOo>Etq7p^&PP8^oIAt`cJMfL2^CY%P&#$eB!@a^8fNdj% zxpC~1XGqQ4t{p5g+|OLzJ-f+}TozTXqX$5DtW_^o$ zWoygf3Jn^KCMzWD)~gsjXa$6&^tB30Th+fBD31Dd5~qv6=xqiRfI z#=tD@FkBJdisSS0jwfC++>MY_7j!yCOky)cU6Qb?G+d|aLcLY-xD`^A3UYBm^ZbseKH;M2U{6lXMpflp?I_8G`}E@RbXpU6*#qzB z7{`KvMSQ}b(WDfuItf2`G_$H;rNFakV5I4ifhSldQ~$_xD9$&s%x=n&SuyZXifr%$ z+6sO+1(YexI1gxZ-M}*gpGk{e$Et5tt*JSNr8wMKbE=f*o+muBD1uedbgL@|6|SZu zuVIa0wqwlB^U+bjy4<2)GFDUY6jvN<;;f*F0z0Nmn-=@{N z`^HyAguHAyPRR~wuCc3m1j$gcj`z~}ga z?0%9vsmny1*9ZADwy0m9xi0sX9n1H*uVI_vR)_Z86x6W8Fm}EvwSOo#ZW7rZTE(>B z-6|6F0rcD-^qu}4SAV6u1p4Xsn(|B|i8sl10BJgVE3~E)x!}o9 zp)x|Fw;(+mqO$~9N$h)c%IMmg`wdrHc>5RiOd_Y$`H(_1LYoMY$!$R=(*HRjNp7Rk zf4YTt|Hk+$OiaH<254cLZrhL{*!^ADlo9 ziH^n4jAJwdAK`&Qdx($eD$#ZcElJmr9PxcroSkW5zJ7_f2lpE z(xX50^yi-bO+Ec)@?ev&nD%gz%+B7q-@V`c=FaffKd=7)a1B4FkrEg$`Xy67w@PJK znzk(YW+jwCXj)~*e8ADH??r*{x-v+kOJM&KYr`^K%UdATW~mgH=;cmGqQ3xBZ&d-B%sYiKYbdWB&zaSFhvC z0$sC&>BS!O8|cA+z@D-3=PKwJD$8(DHUX}WEEUyoXPt|%U!kt zM?KdjyP`EG6qrZ~vz=b1w>R>yN4~)Q#OyRRn!+1iax?|D;2M(xG-gJ-)TdKH`44SHcvE%B`ThUs*lM$`Uqc?$+V=FD(GjId< z1#+DS-@0$8DS^)o9Kt(nuCcbDIUr3%>LMcKn+vV@=#aDvo#*d|4fzXnzHUK2t;jH% z@$F60c9@B+TR~)*td?WzO=vEwq0axIf%kDzG5XlRBEAw>N|bdQfr%-%S@Jk-7RScHVpDD-H4$I|T#ZpeSH>99sT(=^@@1ETs2^;J<_}ASAwFv>8KmRf#!?U8P#vtS2~7SptNFr?Y}M6!mNiV(64WH z=gyqf_dIUG8Q+iCx2*Dd1+8gr|5r@%u>) zcGhy;MJJNE!ESg0r{XD9FTVBTC3Y9i?MG!WjrskmyBT*pkJo2)0g_=FF9b&0_}qz= zG}zXU?QTl3Rw=}L?5BHpP^OSkH&u=@>YmEqeSFgc)o=Uw^pF z=vPjqaDd+#bn*KLzmIa+2nKKrZ*k^$bs65qK|axeh7o$CfKvQpH?P6W&^pC;1KHm& zG?5wJ!jV5Q{0nEQDBZLJgI1moRxKNz2RMI%?^CKf?(A<=`x|ZbH=5w@G{)$MH%w$1 z*MyE@5+Cqa#c_teike$QR8fsE=D{tPukaCXJg;#Dc!g^ze$5E9LS{9jQC(O|LGXCI zNgxF2BZ|o@0|UYFmDf JAMg`~{{?LpI@bUI literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/users/api/UserDto.class b/bin/main/com/example/demo/users/api/UserDto.class new file mode 100644 index 0000000000000000000000000000000000000000..35fd55bb1ee546978ad5eac6f6e2ee1d4ffa91fe GIT binary patch literal 1645 zcmb7_YflqF6o$_%y-^myauXDgi%<$OUJyU1Lmul<}SIBCuIRKeTf@=RME7XPW-}_5BACy`ZOgG8m0pp2Ov_a2mGcb?JD#8Aw0i zqM`U(%vM7$PZ>tt2jWO@Te$mtWA8v(AtOW8v0ptusCw@HGe#L#IFeE6!pU~%tLSWS ztLcWyk-I8Td$wG5T`v@&^4x&Y3=$579}0dXY*ml8xrL+97s?F-Uh~3NAUH&g;mbNZ zCymQmS?LI6Gb%Jh5Pb4{kmjB%SA|QA+R8J#pj`3lvPf-IGU*0&G3u%+SJs-&p7eJF z*z^rNOW3=@S9%?9X2OpOu#?s6jRR+PUxw=_UMlO`ojDjA#UqUmA_%2_?AZK3Scie< za`DF%{s!w!-)l%eJb_$JSe6V>e)0cOCzqod6d0e6v^|bfWHR7&np-GeSR6r<%TA_UxrQ%2}R)E-=ZjMfyG0D_v1*Aorj5=_> z88=Ob+&8IHhjbw1Y@bna+iUuke64h!%=n?sYlpF1cU|eP*btFHo*pw=(7pO+pJTJ~ z^aR!aD-#WB8BJp#Z^O?lLxy%3GeaAM?{>^{I4xrAz^6d0hoY6Cy|^XGLZxsLAlW@Ky(K+$aE@5ISDeJ3Q|c2DJMau05W|Ah<+#?0O+?(zN-2&^DA*NQ6e(1Zk5ivshs2UDLI< zO@B&%KzqeSD}^Mg)T&p#sQQzlsP7y*y9PE=gz!0Y&UogTnb+{|>p%Via0lNQ$SBM= zgO=?+by^3$Ywx(N!0v`_C$w9^j_ccxxL<2WUi6cJoWkW(&ds3XCcbx_(2ac+a&4#O zDvWRJJ3lzK@3eRAdergSyGsgrx8-=g!q9;ehCc?K9fiWO*Y=_ng>0p|#kW_PyofAD zOq@YcVQj-|yPMtCw%d8=Z2LNL&~*GQr{js89Oj}uFI1>*oWdMj6JgdXDa4I{fGImc zewUN#mhesr@07yCsi@VhGf;TXL>>j%oi|~`yZ22Dp`eiQ*od>KT$)C~*ma{#-Ob5L zHFe$VrxCt!m`bNj?xmkY46&9pozBU2n5PeVBN*mI-x}I;!abRS9?80aD%tw8{C0ca zZAMZ@&BO)F6tM`~z!ima+Nm3Pz8yP-CO*Mc&Qu~QlqyeBHN-AU)pbh1{l4q?oZhh_ z-Z(riqJqy%e2yD&IjcU&rP1k@=)1Sia+=@WcMcML7VAN`({%57qTsRqw{=CD zhKmfI<(HX7MpVLGMl_;VDuk<~=l8(pFs)CyDz16!1I+o*QR@Hv7UMlr^n89U)D z&e4(p<9tehr#cZ(vT83dVJ#eSw|IoIbv}25>3+l#alp6pe6xrNMxDeIeKeOF4N zGnU9fXOy=J%phk{hLlzksgq1e3lj>PYh1=NlzyXAhTx!^9F_-`FspkdC9Kd}QWUHj z>HEk@m`Vnmw|2_dKsiUiV7IhQ3Ea_5uJ2jsJ;kSO>7J_@mS zAOboGnie$$zG`Oj09Sq z@zrdktWNb;u;gxZEO6lE`u{U^SD-#LiS_AJr?0nvo9f)EdnHgC>S?H4Vmad~-{Vh@ zy?p-XOaWV+WlKB>op$qXpNH8TBrF0N=~%P9qcAj1Ic-9Ax91r(`%rHWyVH!E;FyNDq@wf PfF{;5UPp^L&2IxA(TkzD literal 0 HcmV?d00001 diff --git a/bin/main/com/example/demo/users/service/UserService.class b/bin/main/com/example/demo/users/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..66d69b25b9e572bbbafed8bdfbeb768f5b7d0e42 GIT binary patch literal 2879 zcmb7F{ZkuN6g@A*ENr(WQqTfgDNvgP=+bI!Z2$`hwi<$xlv=-+Fu#!3aRVb7h8bor8)O65F-Tz{r40E@s8VIIAlzC$ zdtnt)!%YLDc#q-nMQ|#@<7Rl6CClg0VKm%gxO2uSP9I&z1a51XqyV?0yWR+F;aZM? z_i=}cP;3{QjuYlK6BibiDIKxXH$Om~kd>#&F_>|uC@O82?WS9igl4JPXgD_aC>s-) zHZX&`3|EA=;`qG0l_cycHP`99P;FH_ZUt02RFYrQsCLtFw%6tqeX1hQJx_RMQ3R`^=~h<`DqM9( zUc(y0Oh=oY=cA*5bvZ@9WVqfbfQGGJ5>2ndS8X{))3Fc4UD+-S!y8RXdYy0DzD=Wb z(RD>&$=;#KnkfjcX8H{o#BGn_`$~9wrXO&Ri{P-q&FEW09g$uVBJcyxYOL{KM^t?s zFYr>s*9_yTFI7HlcVFyrv!H@ThSs)KkzXPM-{4zn%zAr?;otaqBF_-~spVE3?oSqk z*lRZOu|AB_7+X2vSSHbN^NVkWl;``#M@59ZY&lNJ4tTyl1xm)r>WpSx8sE#R{>i}S z_=4tO^&77KLT?H5)AgG2Oe2Xm$#wu~T6-(BrWHBh z$xop&LZh!B?G4ddf~+L=eOhI7@6G*+t1Z0!v)Yr$DYZVN5RK3#LS%AU(2DebK}b^D zsPvy|;oZM6_6NqNULymvFh#Fz$WZJsi5{Wfa7^szvDi_Vm?dz^nGz>SoL}Jgh@aYNcQ1LhgV}evq zDvn&}eatZuDJDe4mLTgvO4>t84Wp@c6sj`u$}|rs-ZjZb)K5?F>0|>6T?$#nH5Pgt za}7jXDHw_&k=A9AM<>fFMxgIc6kbxX6x*Q>gEXQ*B}Ecn(KUe$l;|#Z%XEKEf0^s= T2#`YxAj2Mj^ zn^FpNNlBq8q;xM`XgO^uWoc@g7)bYp($?v|{?vb<|3G{Cy*DFEjwGLuV|(7*ci(;Y ze)oI#-N~E(yZ8ox+wre30t#AFc2+Z{^=vLnYcEW;A_if!1Ac?bD`Xq-i#E zz_d*Fpn|%#_E81F9y@JBQHM1uRw1gOA!%C1P$4^JI3qguRS-+sDLpf)JEnN|g+X`H zq$8UuBdY=ww+&Ait^iHJdg=Sg0=>{q7ILO*IGUa_H8GnAW37TMRnT$_&2Svs(S~gI zkX^9SebXr;C*X)NZSPQVJ({_TF>Ry@E}b53yE@O>Yj`tWuu{Uh)+a5B$P-cAh?~M# zuOKequMD9(&uq#Rskj;MRG{ioGBWAdr->GwDzT*}!^yl!hVDvA zD!8eJ!6Q!EaF~bsDLqp#>WG;V#zqD06>n(TN(@I33(e0x~I^OH(6Sft)^dDhZm~O>R zLBw4Oo+<|`XSksuZA7sf2Slv5E9kF`wM3Mn z!&f0`9}RW2c~C~s&Fx3Uo)PqLIHo(c6+s_8k;9TF5!}i7?K^hv+Pw;NMnyeBVcb>y zB+AlO47bOtbj64V6>R7=Crnq*#M7)>6P6Lzt#o|KaAx9@X3mI9c7?iB&&enTaF4*? zsDiVV7*rr#i`GKw*z!$?u1#5!>X#Q|q^y{>Jb z{8-D=DL~`=Bus|SYTup7@aC&b>T-jOR|+KlNt0K=YMeqg3@-NeUYb#1!RC#XHy@x2 zyuSKHLB3yw1J+i*)b`z9;0Y$3+xq+4N9(LPB{?h=rBGK>k&7evjEc|VbL5rhk%C+~-Zd_V6{D*H=8F0v z*(=wb^sa^U?V6WFGcFVhtp7S*G zQM`rUhVdH(Ev1-EYl^jBOGK9R3Z*VzX~^LXhbLGUA&e;1Xf4?W+Ump@nR?R~fzq1&B6(<$OpKGoc6HRcXcxoOG zlmHnZjv`1EEgaoK#5Q0fKU22z?_NF=*o3=qD^h5~1iy@?`Fs$Y@i01Yp3kS*F};8- zxP+||(1RX6KA`JZ$UlgO2;oNFEg#~l04;tLk5E=ey9GQ-S&&vb@L_y}Gy!LedA%Y9 zACoCqM`8%IPsh$AmxVRhIg7`JN+OAAF$FSDPxvYDGH@>TWb7O>5IaNhd5PiE`-3$x zlzA%0Fm|Rn$Q_C17Ju;h60Cc$hCc3Okh@6N-Gp@yL)=SP_hCP7!##W-<;Wr&590vN z^1o)zDyqa4iH* z9LMjLAezOq$0RqZkjB$`&ZA7S3D0%R;#>3H>JqdIc#({Mc@E$A&%zT6n5ATX4i~*c zaRt~51p9T5u!FU*Zo(zzQfyWN)PtsnG4zs=eT4N8LqCi=(N7Qt@Lsa%J|x*(_Y>4X zvgj}#!w^9^g6DC!1UBx)?*qGwTo#;DsJB6a7-$TLGD(1cOq_z8`H8G4d$>;26jfm2 zovo>oXQH5ql2WQss=q@JKjTaQKbKWXu=y8!|0VTXQur0#6ejs{ndX0wKjF{#3nii= L{uO`6KhgYuaE*d1 literal 0 HcmV?d00001 diff --git a/bin/test/com/example/demo/HouseServiceTests.class b/bin/test/com/example/demo/HouseServiceTests.class new file mode 100644 index 0000000000000000000000000000000000000000..ccba01f965c80037f87d0ce283d544dee598edbb GIT binary patch literal 4177 zcmb7G`*+mV5&rIa?Ohgujd5t57Y=oTjWJ3HaR?hI#+cf4ZA$E#khW>%-D_J$D{Zur zZRjKEBY~4Zlcq_Vr0+-iemLi}#tmuudryB@{)YY?&FOa~*()Q~Cmh2{cQkkI%s1bi znSX!u{)YgL;=K$~0(**1S(i&jxnfDZB+HII;`miLA>9SDC?{prt7ecEXqz_{4Bay9 zS^doPyexVGTP@RGQxrH*NLZRvma2L+w6(!-UZC?S-}cP1oHDECv?T{^+wly~bnL3Y z;ezAN>eY&C+OspRQI?C2dqJO;hF#TXjH2hb7j zXlJfIq2ZJ0#KaZ|JgA`=Eg9?;=uKcAakETzSRpfq$wu#D2E77%6YAc@3Yi>gPx3uf z&Z18sTYICneDiW`IfowfE0!JL*>N-qjy;=?1vud;UgvwKT8{tkzZJTR91h}829IvI zXD1z>nbGhV2AKOGwlgyVclDf%qZMl9vpCEfS(+(T`LC;5n#tgZfSw4XOf*S!Yb}_u zXuTHDlT2*wo!aWn7i$0F@8ukxK!3~e4&|lt^C1kX5Kjoao(wT@+U;SBV-dNZL?=n` z&0Wu*?48QtBu-^8EU-V}$|l7~!)GwU$`Nu+;OX1ku10*x_a+@}sGG%UQo8nfZMAlT zf6G}ELb#V}AJqO{`{&K8S&Y*WGU~(H2RVEWPi1gcV0-;$DK05WObG1kIUOfLz%qrv z=QT{>9L=yO4O*7K!DOa38e|ZG!1qi`FPN-UTX7y=$l#f^v)8|9_#(cWes0}v0f8~pYzEuUdW!&(cY=%kUMBn&XLbEnB`77CvY_3*`2_tPBzua^SrWg zOJRqK(=3t%9f7rpNB7-9-k3DMQi|%3sxPT5Dg=tfZk>V-s7(R`K@UnyCXVCj3O5#9+mlP4J`v0=Cnyg(KMC5P zd8yB1(wlQiYi;bY2AVM~>2?R&^`VLFuT7m+^<1M8YF2ajIewYJFF57ZBR1^?=YrG= z0XkGPqIpWgukdTOkaArl@Siv(qn)Ag5yLK7vf5p6oC|&>e$^tf$Fj6xqw1b<^^gBC zJaY5B@mm*J9x^Ozf^%5DwFN(GLoUbB;CC9{M6NZ1-%`M`HEP?^4Tcs;iu{@VI|113 z!p`8Y0{3sOO4f%M;Q=13u7p5J4JLeMxKht-^yGlb)mE-_J_Vo6`>sQKk1r`~kCcF& zXyv;WDxeKJxB}X_Ikj$bCnd^Io-$=ao-6~&%Wd`ejtyZNgOT;KOMbl<>3=fw^5oEPo%dVdG>RXo!E_zgTkN&Y&HcHr1` z9AClExm(mn6Y8JcOnoe&zQKB-MVa5SiZkl}3MT)7rv>AFwol1BFdaxstC*|fa3p|t zH<9Q#&8IdL&+ir@J&39 zm-$tpawrTfLZt~;@C`gqRCeGJULZaxTJ*W&d7dzaWB3+jY3}=WBh0=NaQY+us*Chm zJeU{HHLK-q(jIDE3A0}4z?Hrgyu6CAg`6F0glPx9&r~Ucb>IfD zjs6`asg98-pC%B;`F4VTLpaOcf1c3I@ZF-Mj8k}#6X>giQi0YL#ukBgi1SuRr7~%! z07|u`RPiEsKcIG+aQ-krWq|wCP1n|7V1nx&sWPK3dcAUJ(Ftk1%`Yju6VwiM&40x8 jkEy?>h@ar6$|M)>()@4md;9@^q(s%JKjAM}M(6(l`HW{u literal 0 HcmV?d00001 diff --git a/bin/test/com/example/demo/MaterialServiceTests.class b/bin/test/com/example/demo/MaterialServiceTests.class new file mode 100644 index 0000000000000000000000000000000000000000..5dd3a42619216c3532314a7084e296800cb0b66f GIT binary patch literal 3591 zcmbVOYgZFj6x|a7!8jI-)Qa_0N)=EXwTh3ZEmEx5fUQu#K5U2N0)vy8IGF(2myf<{ zYu}%`R@>D-pteP-OMgIDKZLLSF0ZrufN2;avL zQSemS&T3*>&*n^_WklB2dUaPghHmx?XVOTE0g-p}F+>&APw11nX6n|Mc4A~gq+JDd z*?XN8>`qk#ocGCVc|YX+M`7{~BqYBz92us_J(1hdIj@D7GuDoa7_H+C8RX4H|ih zm=@`ROVk4`4+yPw5jdj-D=ouo-CjtUdoqs4u|9@%3O30CROZl`XF*A z1BA?CHj*ReLqJ@IG#UE!&(U}-ppd(5WvodE*d+fkjn&}B0C^b zi&La?pu2xSiuP3%uilG@SINa2D&B<7GWr1(xMBFd(3g<%LhbZF zR4DmNtH?ikK=@i;GlsO!z!L}kYjxA0n+x!PvN&vlt4ru@bxPwaN#PZY@$#j_n* z6_zZ2jsI+3SP{vbqaqL1q?*#`$%I5*Qkge9CuOatB(29opggw9O69#;YwFpNjNZJ1 zNJ?{_SMEC$XL){>Mj*ZV?ShjQM-6#lH7;}oZI}BLba>OT;^wq%SCedU1X`|`cC~)* zZaqS~cP+`AZsCb9ANLA(+|JAo*gcDQhP;H+?0J_jbq?lwd0O6e^qlXRkK+S;6vKxK zn#xHV)}(z#Xeo~%I_klFui|5TqF{NpY*O%7Sd_s|Klm}-%9tYGoU-jRgw)!_Yl#N)iQK38!b@wynU(7?ghV_CxS zu2Vske9dd8g0O|sj^SGc85;y@XQOED9?|^!)4kt=|%sEiO2xMZNH)UHa4G95-m5;HiPz|vgPRt%O2m7 zs*z4J*!u@4-&u5SmFos{&*J$R^v>d?GSIao3Rur9H=r3C(Sc1kN-#rc@_?`QaRk6S zXdS@IUgm>~r7+~B@HYd?Q8bw#30qm5HtfPy9Kkk%Z^voQ%rPoK7JIjkF-Wfpg1@6o zZzTyBW108db$#X0@oMm-;~BBT;@Xd+@}ox8NR?(d`XLJ*st&nzC+``sAIxg literal 0 HcmV?d00001 diff --git a/bin/test/com/example/demo/SpeakerSrviceTests.class b/bin/test/com/example/demo/SpeakerSrviceTests.class new file mode 100644 index 0000000000000000000000000000000000000000..d4a4d2e2667fc0714c4cf7428381aa1ab32dcaec GIT binary patch literal 2327 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 aDwAA%Li3;E3w(*MC{Z>1HNM6782T6Jl%G!k literal 0 HcmV?d00001 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..b7867b9 --- /dev/null +++ b/build.gradle @@ -0,0 +1,28 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.2.3' + id 'io.spring.dependency-management' version '1.1.4' +} + +group = 'com.example' +version = '0.0.1-SNAPSHOT' + +java { + sourceCompatibility = '17' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + implementation 'org.modelmapper:modelmapper:3.2.0' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/build/classes/java/main/com/example/demo/DemoApplication.class b/build/classes/java/main/com/example/demo/DemoApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..9580a81a2a67c745202f3d9cdce80b872260867e GIT binary patch literal 5198 zcma)ATX+-K5&n;DNo!dNAWXm^DFTvW%NT(n(AorSY%XbRpcqU@nwGV+HUixutqdf+ z;L?_q_Mwk`$xGX>{raC>tt4wDryqPiXJ_Wj znKSdxoHM%f-y5?49>!n1s6njjLhr(L_|=CQ#el zGU$OK5C|vZA?=hJPsOxQM2jawz5LUiO2wjKRgWeUUU<>qfzOA#aJRtHWO^i&i4AW$ z9_mYujA-dyYFJOEPYcwKXu3rbc(A#zxOq=Z&15=T`pQ>!*29B^J}iQt2E~#i0{+TE zjXo^FJpv8->6A90rAMP-O<--G!*O#46gxt zv>Mk=CetTEL&>Bb8Ze0^m|-~6*@VE569!L|0AoOx%4}qmX$~h7x^_wr^&}I+(UELg z9g1lsTaYZ-oeI_oc-z`i$y7E*zk0DA8$4+DVIwvPEHYu3)uXX|4rG`F+EZCI#>tve z^Q;ukwY-Qq=BVC{_ znix(BEGga5K0XtX8M%hxn45?enB&Qa7Biu|GoeTI(+awH1mgu`*0||q*6)zn-cy!x zeM$PYPH$rIhmJ+I(X0{51APZpAbttxnmZWxu*q8k*j!njPLf~>QC$U7)g@c&7H76-)g*N_ze^AfTm z;O)?H^zEAJ6e^;IL<&J6+(h3Yl8X`;{U*3&QYT~GktYXWT!U*&}|`GVPFt+CVpvOs|KhE+K?mKzHY zC(fxCm+)PQmhTCi|3A=D)qzedRLRE*Fe={ty}Y?QO_clqKlI>75+y$tSYQ3*b|J~1 zy--VzRzS*p?y7{AdF2)SRA8%dk(qc^#`ZR|a3)~9$>EwYzBWMmlvUSdZMX83fC%vB znx@1pV^+b>Sxt=Bn8dTWXN{TMb7oG<2SdQP!Y_s^K=Rq#IkG1dyus38yh?SmlFjRv zN<6qS-;+@7DyLm#9aksA(XZ*pl9BzYd}y=9;JP~AuY6M9(_HBVEsasrBNSU)fz5kJ z24VwI;oQ7RozAam&yO3~-`Oswo()btHrFm1b~vo6!7~-sQ)gjLy)GG+%C=bnD}R7c zm$`;|+$LzaxYcP;)skW_bTxdUUrps>=TIkGS0Sj%-TT;=*V`E{A2 zn`29G3L@zDOrw4R3xcf^SR7nCfu+H=2`mpb)lFbUu*o%n)mJE7gKPY|iuVg>N*$K* zmw{C@U^SNF0o=z1bQQO1#u`jeVw<%ACNae?ZeB ze2I&Tz~&w7yXB_fCO|!|<3|1@n>k9Qir*8Q#+t)LL*=g`K#)FbH4XAva+twQ(xrNr z;0G{9fg7}fj;VQv?;Rf??zGNc5^wq2T5H><5qe473|_+m|3lZYr3RcXp25RMgn#=K zx+l@wU!;7@qU8i+I)l+8Vr?T%P2*|*nI=~wK0k#o zOyXRJmy#B{tr5>l_E(zRjrdxg-B4gR)ivURS;D5z7 zWAzL!9T835CdL09VG6xIiSJ9H63$P^;qGOe2Cn%TIW*hBsrUb)M4JRet%=-W6G$N} zoyp$9Dc)Z~zbCNo+<6TX2>g{Y7*zK{^SMt$3F>{wt;ajxM~<@t^1x%dkUi zVe37JokGPf@eFp07qLgY!Or?^JZggNX`-l2ynmpB20C8_wLgC^q7^oOv)U7U6gJJ#+0{{0nb!R?oc+`~h#nOAD^x4rdJ#sdk2O kCZR3xM+t3+f76&haau>xJEeH9p-!32267zTWWNXe56OFR?EnA( literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/comments/api/CommentController.class b/build/classes/java/main/com/example/demo/comments/api/CommentController.class new file mode 100644 index 0000000000000000000000000000000000000000..bb6619c29275942ac438e5cc51b3424cb840b049 GIT binary patch literal 5302 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 F_&++rQqTYZ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/comments/repository/CommentRepository.class b/build/classes/java/main/com/example/demo/comments/repository/CommentRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..a097f4d73d0a0774ae69c0b8aebbce58d41e695c GIT binary patch literal 586 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 Y)iGEUvQ3Y->KTi$hCU-LWbnN(keV; zh!;!s6w(Z<#+fb*$=t+gz{r4 zG-+inOwW4qL^*?nAO2&@jf7$6ue#qpvy64P5xW%wb3>+>qm0weXrI^^fIUXnQxx4b zkj6B{+z@~n%u)u-Ax|QXyd8-V?is180VW@)7Q+`mJH}6s`16Eu>I)HeF^Wt0s4fHV Dd{wF3 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/core/configuration/WebConfiguration.class b/build/classes/java/main/com/example/demo/core/configuration/WebConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..fcf79f2745eaa08077155060fa59462dd0b5d999 GIT binary patch literal 1352 zcmcIkTTc@~6#j;`Y^k;2Dkxr1!Ao0|^%h>LM6K1A76^;Q#s@QPhcdX`X{J*yKg$

%?d*-o2w>~q>Y!)r;x%02kA5}BEztvbj#~@vV?)we06}d;A@S7Y)_+!~t)20^v19TTy1T7^J7C`>ELy^sQ*4hy*|LsB2t?dwtTs2=;dU+1=QjL_uf{6;S{vMs8zD=8euM{kbX z$6h*>I_lk36|VMzfI^V+RZlm>duf9_{eNPYY@0F64$}>>ET76k?QFz>8SZD>;e(1P z;4W^{XkjD~Ng6MtEs*AsWF!;$?_l4e<9oE)V_*XJX-)Sp-~k?z#*jr0vFPV7G^fVM zwy@|rN0@MaVzL%fEG%h50|ZJ7S`J8r3igZwy&yQCg(6Z#LWqO2YZ9ZZjl2$opT!A; z1V4ZuRWX|&u?Q};CEM@K%$pBC|9f}>u#Kg0I1C%R%1V3VUrXEdW$d4>q-VZNeWk5` zuKOzXwHX32kf}{w6d0y1_!SR&Ty=s!?F$iE4<)!R#><$1_s-t5Myd`&>0FzHTZYZm z@GW{|ZJg$)kzk{qqh7r{l<~#I*D@-YVpw>SIqp*riP#-P;?hd3DBYG+(*9WKGR+{g^Sk_Fq9DMJwcSMCObBV(FtZYaY7h&m9qtK%bXcp|JYBwTaG_sM+4a@jOFo ldP9#QDU?tnTpLAT4)cU47T>Wzsz2ymWCXG#Kk0O^_yYO`rwsrA literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/core/model/BaseEntity.class b/build/classes/java/main/com/example/demo/core/model/BaseEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..a38a6328ba694d688ff23b4cffa079e9eac39555 GIT binary patch literal 678 zcma)(OH0E*6ot>UdDygCjaqf-Mp^~4aOq>ACT@ z@2A~MnaNn?Dx;^_Q~4gHDP@+-?pC1Sm$m^+$yKi+u_aN zk85RRme~%YU^F*hARc)sVUDN%2SAYl8+G1lg$VOlV5SXRDzw1~qt-gwU~}sk_QYil zWxiCXcX(F6oEn9C?4&zsEG~sgQ!vr2OIYTq?LEeV?+Nw;3k9FX2T6ak2{gXh4#sTO Y6jw2w%PAIrFj?PB)?Z93U(HuP0k1x8yZ`_I literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/core/repository/CommonRepository.class b/build/classes/java/main/com/example/demo/core/repository/CommonRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..ea33307159129529742cd4d5db5ca3973b5c8c25 GIT binary patch literal 564 zcmZ{h+fKqj5Qb+!%E1$&h)-b3jT>(*k{E+m7>zXEuk8evY`bK;HS%g+_y9hXacq?k zk*nQ*zS(~c`|Q*rk+qsSq6Q*u{YBXs=!xWKtnT8vfZ0)*y7O;hP|O9;KSgh4n8hMZMp z4}?>{e7|BJ{8+ArxQknI&nCW?Rwm@gW(XA(BQ*Rl4EpTJT}76p#Qo!VBLfk-?mxT5O(+|(JrICRkXiEZAJ&1QD-wcgrlNvS)vQah3b6)C%1jB literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/core/repository/MapRepository.class b/build/classes/java/main/com/example/demo/core/repository/MapRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..bb3a39e4a222141446d587f859eb3351009cc71f GIT binary patch literal 3021 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 b%M$TJlJ*Py3ctp0*pp+=Z}EHl5flFf&BVxt literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/houses/api/HouseDto.class b/build/classes/java/main/com/example/demo/houses/api/HouseDto.class new file mode 100644 index 0000000000000000000000000000000000000000..87fc5bf45c479783a38278c0cc8fc1c795d7f492 GIT binary patch literal 2469 zcmbW2ZBN@)6vzKJkc6bpU_cqPgRLv=cv$h)c5G`pS_-9wg%r^WX|JY>a|fo59obGr zzttvnnzR@D0Q*qW{?~Tg#BwxBq}<1I&i$Q-d;QP9fBg;MM>MM_V5E#u14WbsCeGv= zX*$w9F<%^?DJv8xJ+xgr+z=R9T0W{^43#pf2Cl#mShT#hsm^7)<0!MG+MappbpsWc zvSXXi^>91%1PXSGrW@~VH$3;Gu5Eo}U|bt2g>O4*x22apHZX}PfnvwEEhRA7r?>5O zj~x|hUNta-PXtC?+0ID441GJXKWE^YwqI?_Q2DlW;xj%qFt5)j`7)%az}#Wi4eho% zvICnZY`U%&a?5iAfh7XGmVPMBH`1|N(XwfAEA*x9hJo4i!e-ZT>Ws(#iSFAj#fmi4 zRYhh%|AfH&;PI~*j6Q^(ATDx%Jg@iUi;T{e*J5qv~1GIg*SC z=gHz|cxuz(+l`B)Rr_(G!d<3za%s6QNl|hI%*e{GGGO4(+m3lAt=EC)nlg>8xySi| z?{$92n67tjvz0r}^9#yE^8;^1QAg;yf0Y{T+6d0p)B5}3RH=hDl3Jwz zZNvftCX#(^qDB+@X&G})jsCgjKTPUb^Y_NpmtNPm)Q+w5UhCb;H60WIW7l<+zvak) z*S3s3f%`i77fxFe`!X5=cRomy`Hu638@%-eUW5``J}Vp*^sB&jf#Y%ZpRxa(<$q%j zUtp1wDHNulm)WKp1^sYbLW}RnCA9diTtbV_PNFr7k$%5!;mg>;rO3erjAR|W#f4O+ zMq$3#Y*!c#lf7VHT=^5?cMb|zWvjP=3cg}%!~(d3HO_cF@inCemEWQK8#nuv7jl$! zR`mJb@PAj~9`1ASE!Goz8|#LdX)Oe~cUX zFkvFipy%u5>TbnhSbQ^xuz?X|bfis;BFmsPyucR>;{~gF#80^GasR;H**_AEsAOOq zH+4*yn8YoH;XiPct@wVz8OCF6{VS`Hcz+4V11BKnlmV| z*a}63w)Eos^f{(J(d)mIbS%g&Vx?39iy2^vZabzdXAC)pbfj#_f=W+dRQm?Dr<_7@ z_S948&h^fcSiy3SR_@Vez7i{YM>)scGbnL#PmL4(0{72g$TGVI4ae21WUGc8y(fD0 LJjN5kB(VAmoYxH6 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/houses/model/HouseEntity.class b/build/classes/java/main/com/example/demo/houses/model/HouseEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..b4c75bbbc28446debaef548674ca26ddf1f0bc1b GIT binary patch literal 3065 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 F_dj11s`dZ? literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/materials/api/MaterialContoller.class b/build/classes/java/main/com/example/demo/materials/api/MaterialContoller.class new file mode 100644 index 0000000000000000000000000000000000000000..585e38580a96884d00e65fd599de08a55294a256 GIT binary patch literal 4296 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 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/materials/repository/MaterialRepository.class b/build/classes/java/main/com/example/demo/materials/repository/MaterialRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..5edc961c9e29c9fed6ca91c5fa2c40967bc4034a GIT binary patch literal 593 zcmbVJO-lnY5Pj*Vt<`E3#G^Mqpt*`$3nF@2J+#t$x{WouNtSF@?a%Tgc<=}Kqr}-( zty1t{0&nsrlQ+D{+xyEafMaadQ9!YZQUhgF7}}B5Ts{h&#FCGswmh;*r22If-dlGm~e=D?bUk z)Un>TnTzDP%6)Bp70jp5z7_X^VY`>n8!ZPaRb=_Z80&>s){x_a(7G{C6Q|7h+6gTm zth?hWwUX9P63ORk0d`QOFU}XEO`l9yBgUs3DDOXmJyD{7I$?edDp)3LOwVPCE5wRe SB`lzcwP{>Oi(+2C0ek>N7_7qp literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/materials/service/MaterialService.class b/build/classes/java/main/com/example/demo/materials/service/MaterialService.class new file mode 100644 index 0000000000000000000000000000000000000000..2202b3be4e9fbe46f337d48ede2856da2b0a6242 GIT binary patch literal 3079 zcmbVO{dW^Z6upy{ED0;rQoy!~d=yPuVC6$W0%%){plQLT7V&$VOxtZYJ2|@>KK?5` zN2>?V@%XdHzscjB*=@2VF^BR)JDJIQ_ucpAzBl>%-{*enr|c=2t4p;CFZfP*MlDB3s#Ti|kCH68iXZMJ;rG-OjbO*fXI z=lYQo$?&mPm(F5(QcLy%#Zb0X#qvL z6gOl%>-z$urE=9&pdEX@Q}v?QL>aSj498gk+L3Z8u`yMus$ip1?oFbuLg_SBL;B8~ z8_9(r_Tpz13vUQG1BfObyCqA!ikQHpg*R=yg_GpiC3wFTdn#~Ayr|Zf+P?3u`BI>i zC74_zDfYTmMyY{QI=9ngm32z9>bk7AgSw98)Y`3<@5zvLnZQ{aQ#dDZNQDc2Bv&>= z^+e!Oiezfo>zFdhXw203T^l8oc^CCiQZWL{rI)ShOP9Y$_0H&g&kM}=$#++7L=iS)uyiA{%i+XMej4!uYx~5$9B9EGz4FVOrdWcadrK$=yoT#OH zb6xA_i3+!!h$@mQe%6vs3Z-Q>r&Jupq1#II79Gjst0ErZYYX4l_!i#@oH3Kq^t%^4 zR@>64nw06`uDkW*sXIiKc6a||tB^V+0q(j%!y93V^-uH;j7Q*LgJY60g&rajLvnN2p{bUB%?f~1U zVzCQcHNe-flmc&Y9p>4@G_#mqx^R967j|$-hvEAEo-j!sXOPEP-o=y&H=THQ!cC-k z5YYtA(RvK`Nnyz3R>;u+{7UC{qf^fn($JSXYG^F#@MLm*Pk8-18mvhkWfS^T;?W5` znug9(RytrVQ_PW~?hS_2BDg|FErP-ys63+1ZgsCJspN#gPgGDas9>7QbjhKH6|UOu bORlT@({>LD`8|F_9g-(So~&aNTNwWjj@~nd literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/speaker/api/SpeakerController.class b/build/classes/java/main/com/example/demo/speaker/api/SpeakerController.class new file mode 100644 index 0000000000000000000000000000000000000000..b2f8cd9d469fb3cb454dbc23b13818b8b9933470 GIT binary patch literal 1137 zcmb7D+ins;82)BC$x5MC#Y07cT-HgJcdVq!|`>`G|Wy4|?A7 z_O9p{hV%m&Nb`sxQK`1FIDu>iZVo4rV_55`fhS(`!O$08R}7RF4h7#6+T%m%HOKOX z3XE31FEm4b;%^E)k{!Wtw{avzIL7>;nS|6`^mm$NQ zqf`BJ#C5vEEn)hq`+{pe5JqTXN%e*AD=Hx%lTA3+I{ECaGhEn?0wV{aB|}NoJPrb7 zxREL#n)Qa#J-T8$tR2g~uk@a`FWO#P23?O&vECD5w)k*phsv;Wm~vX!A?|zs&AlyN zMItmY4Y8+2+>fZKTvzPy$TzLAnm%}U@b%|g21iE>Zc|0NBQ~X-cX94vuGx9en>a=d zp_#qwI?D7f9Qsi-Tl+Iea!5|$G@WNi+oaR_-P#wh+Uh4{KE#-_wC9naeE~_5vM8WP zT5*iVIh-er;$l|19gNiPl>{kxV4YStls{Nh4-X6u=Hs{f+S0Ob&UFp zb{Usqzl#z{PMjd?V41)rT9;{Af-7+_P_}KA3AYjw=30pBGreT>8|1r5U) D`!y&o literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class b/build/classes/java/main/com/example/demo/speaker/configuration/SpeakerConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..95d70c3ba9d2a9803318bf1ded32b6cd9bfb0b5c GIT binary patch literal 1289 zcma)5YflqF6g|@x7D_4Dics+ZD%uudeIS|?Ot6tpRTD5I#!tg`x(w{@kl881ztTj5 zkHjC~k22nE*HQ`%e3_lOd*_@p=idA0@6X==R`DW@1dyTT#(w2oGhKi$nTO4wK-xGFS_{t9V1>Y0ec2v-iZc}q3RbX$nqt)(U z8flDJ$Yd~zEW@PIt{r-frCqzGTvzCI?ii(y7=~S8+98IyV(mm%)#G7UDb;#!R)%3= zJcBF9kycN+47syOL%2$;RqlB+juzaAjb<3@ES5%a4U-n8GAQ6WnbAwZkdi?|F-&v| z+B8}QZY47321B{8Id$c8*>Qz<)0jqb2)9oQdL6hOK^A5&k4P8Om_d?MR#javjMZcy z-ZuShq2Kduk0NAf?$*@=~^#?s;2VoR8nt_qN z*pi_nfonmaOskhj-$J{X`;plV&3*An>Ak4qj5stl@1)wV1P=&n;DCEgdUHZI8PZV? zzY%6f)mufB)YzkS5gM(I{)esj+G}I4P##@lE6J$quB?| zVG3Ey(Js@@#(g}X6GIUt%7~EGVx)ZeE5>s9ADBqs7p6ZPFSp%sl;I z2$!9Kg^@uZE3qt5KPNFSUEe<`D>b=zn~0jL+~4h9BBpuwyRY##p;2Q^--mWs2X=Rw*(u7u(nRCO zgFnC@WxUfi&>$KfcJ9obd(S!d&fQL`+CPjsv{Ck#`Ov_luedbN2bqY;ZNtB1|=ne{37mL+rlV!9y#;& zoyr(Co0r6=r>Ik#GC{4LtA=C!9aS5Vx26*J#37Sw#d4>T;=LVGQ)I7 z1I&!2=1xJg_z5P Zx$+;(O~UlBHCVUdm`cRK>3fjj;U8J2@2>y= literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/speaker/domain/SpeakerEng.class b/build/classes/java/main/com/example/demo/speaker/domain/SpeakerEng.class new file mode 100644 index 0000000000000000000000000000000000000000..99ca807a99afeeeca13a8ce72e64879a6e74afeb GIT binary patch literal 1029 zcma)5+iuf95IviubuOkUZb~S(ax1k%+pQ2!r0_tY0x2p;L3!UK8?&kHjn*zuz6vA| zmj^z8k3x)-D2dV{`m(#To^$5x%<=C(KYsyujNKwK$XdwRSimB~a$md?JP?u3U$y(P zlQ1mqsYoSH7_zR{vXEz}b#%z(2N4be$-6StJRV4KBn|KCP^gGEN8$6xFQSN&1>432 zEHPBI@p&Bd9`<=d`@S>>qLXNI!cg#KGP+{ea2rz@`+)*htHJtIQ-UYjG{mLiII zZ`3vZk_MwhpgvO0Q~F}zF2nBsanDpd(6ML-GDXpw_H|b>lp89NhsR-Cnm6gkVMjY6 zXbGdzczl^l-l~{kt8vcPkPYfIqFB(FE3P*)+i~Bh&goe&SmWj~6r1|kbmW0bHI--D zo7x1o$OvR&tkdZZh%EI4xjRQ^GBvFm6zx$CqkXCN4Xox^-%`^vccodQ8aevITO?%3ebyhynHiD;RKqj9;vlHmnM8u=92)p(LWoPvVsu|2n da8Sa^439nG+5QL5^)q>@#ItrL&(2Ua{|h)}=`{cV literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/speaker/domain/SpeakerRus.class b/build/classes/java/main/com/example/demo/speaker/domain/SpeakerRus.class new file mode 100644 index 0000000000000000000000000000000000000000..0d24246666ecd4ceb9310b675615f03c9fc63d18 GIT binary patch literal 894 zcma)4%Wl&^6g`uKIuBE)Zc2HV0;RSoc*BYmHkG=vKq4sni8D15Y)@r7i0%+S!Y=@# zqOjltSfxLNxK6Cp3PtK-9`|+bxsTs}e*OaR3_DF!P}NY=aS2Nd?Gb;+-H^wD`*JW6 ze#Wr0D`S~GXQ*0sUqhY2@m1uC_dGfbg*z0Ha??Y>--^T?s))+1G_-ZBz$9v+ z3K-0Po$BZ?=#x*UA0{W0uao1`k9AyOSUF?(IIqsKTeymA8m{ZOft%Ea#dHic86PNy zwKBP0mdH5h+Wk6iGjvL*Ly=~QIE>fy7LW&x%LC=6)aLP2&G-Z Y(dRh!e{gP{i?d2NopW)VDeH%S0ix5q*Z=?k literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/speaker/service/SpeakerService.class b/build/classes/java/main/com/example/demo/speaker/service/SpeakerService.class new file mode 100644 index 0000000000000000000000000000000000000000..bf75e6b6e6f5b7f53717ade39d1b979bfced7b8f GIT binary patch literal 1214 zcmb7ETW=CU6#izpY=JGUP+RfZs#KsY+vOBL2Oo)*Ctm_y6r=cJL0|aPAGQ&+1?)WsHBj_oQZi0SCC;S zU(TJuY>VK9;4Z^zq541NTA&$JibJZf3KbIz3=gJe+fojf?%!l*ut*Sje|kQEy)e;PIRq2ZTp3@NC8{X)UCR0^S-l=m>YI&fH21n9o*s4w~*W}@-P}+MUI8v=w zTn|AYJPPx8LbgN6PH5RcMYLUtqDhW*nBMe^Q>H#_vlO`LZ^i&W|1K2K1qwAHS$;`iTwIeX|m}aV#caX`ul^f$~V46hR9FYD$}gcO6LMG;QfqwiQQ2mW(6^Qu_Ky z?Mz7rK6LuI)8EwTx!1BS$5zI4`oVf!Y4@BxyLYwz>z|i@0C*oir;xzDB>FV;V?bc+ zk+Egyw&9fZ2ZcvwF%THIW;s@HU0~nT^x7cyV=#%7h9PJI(?z$Un@^2O)i(8#S#kAX zyK4HnQML3{UM;##;JLPKdICf8QQq{ntfDC}n~O2^>u)IY@a?Qb9nmm~F}kU^CDUFq zs#WQ9GUs|_T`g7AlD^b>oJ}Gva54s{!SP1mrtlhGPvW44LwG~r$R0i^1AzqQrgFQb z%0^ZeZNvAo(~*_BoTPME;A{*f6^DxarW07fb_z!^nZz*-Z{oN>CdRCbWK3Jx4CZZH zAUze*s0Eg-=PWNnAq9SQNrmY`%rct31ZMOAQJ+B^S(=4DV4b#X7 z^iz9#Tj1VQTv{7yw<@Bcj>289ImN(o9sO2#L5{O{JBf2LC%V9)7RNRk0$0LJ#Q2E@ z-)5;0E@*g1N;?p^QW+`uMGcp5nR%vw0@-MubFNb+?U*#|&R#afvc00=D&C_)fy+V@ zco3^lhj}beLrXeT7}qrJWNy&?fm^SeyMQ3UQfkYG_Yk63Jm70vSS1_kD**?YZ`J}UF*fkb-I~YsgY^LT(f+O zGR!-U8yK=LFo=svT)*mBPI+C%_Qdrz^(SUQFIY}VH=6J2x6MF)ANU?!UhXKJSP|Mo zN?0X|8R_6^_j4z28Fr0f_Uq5A(hvN;v~zCi-bVg%&*YblV53n6q~GT-(q0;?%tMcn zUFw~T>qn%VY>!la;M;;cOtCf%FEDgUWO3)phQ1~*8A$J-E9T>x=?4pLX`6NrJMz~{ zG4-fK?=`htiwH5-vw$~L8);QzD(}|3qIt`bd;UQCh;&YV;<$Z!cD_QD+P40ym@181 z#D>+(cH!K4HNmm)7hE^s_tL1=+lfCqfNBbl;U(c~2vB3?wX2cJ!e!3C4&~m zx={>Vk0Zeln^5cS?`SqdqdLGH!ztOOe=6s?o3(0mmg2l2w{m1Bwi!wh|J%bl1!i^(PXx|HBMOJSs8P5y+K;(0IS6QX9mn+4d}#Vfd@pdiL&k23B=Mub zvAthqr?1P06C6Df9MBR-%SoMAX*oXgydP{`xW^|S@$Pdu{_{MV`5huN^Bl>{>~jqN z%B2KyJf_jd;}IT@Vi1!U!7(gx<#^o;_wj&tbf92_x{^Q%Ec1FW!DabSy5k(gqeNYx zv1B)r`3=J}>G2&L_!Hy5sJA5O06Bs&NT7rDH=95s_!ujEF5UMF-bmLRf4aM#P_8F- zyFMM`I*-+s>pWcxIeC+VI4`gpDWj0Ix?vc^ zCyMhLKIK`4`Weq`kW5CO0-6uy8O}(gnH{{lgSp*~^+*WAO?8Ix5MR()sLn%rmM9|% zMc_+5^YInF<{JOL34Fufw?2&oXFG$1Ap^Zh9x^@S3O_>v*&Te)g~P=Nhw&zdadgPo zh_pbjMg9gM4)RpuPf{5Y#52PMLHzYliDfd9<(aN4k(pIg7Q0Zns;JbfGTo$-4&{(_ zEJ-!1QVJvU+YqNr0ixohWvV0MNOFRsVQh+Scj0tBB2P~#+StXSJw<)6$RdG9iglV- go4mK1HWfI$m!;-Xv@JZvHooIZiYw3X1AfB9zw2O8R{#J2 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/types/api/TypeDto.class b/build/classes/java/main/com/example/demo/types/api/TypeDto.class new file mode 100644 index 0000000000000000000000000000000000000000..8e7311cfb16b407f9c712aa8ca6a6a165f182c48 GIT binary patch literal 1255 zcmb7@T~8B16o%g^Z5L{x$d>}*2coth%#HCzB_e2osf7S(;*}Y;BMfwRo85uHztTiw z;)OrJA7y-JTY)whC7Yd@Gjq;6&p9*m^Vjzu0A66JfDHOPWQ)ilFED(dj+Jbxa8GXR z9%$bRnOA)&~=lT-KJg%!^kRYqA(Gt zFyK(dR>@=4G>vpx`dqTHGNDamEwZne%prAVx^)~~msWN)YLKB+HKDE@1-m-lQQXf_ zMZRj*RcxHynatXKLx8#JzYD;sZvj`()NBpP2X&D4$s_{`JR>vnnQywV)Fo{B` z&N7v6X>Z0+OUL$j{T6$n(UHP0HnMcL8!}vwb&bm`AY)412uiqF~;9}>dEVMH=+zzk1>PqvUJM?( zB-l|6Qev9_EsYu6=HL$QcJ!9nyL9sN3t!=#)40d);B!pH5lytcIz*1vB`;VGCL(A! z%vs!L+lx8ai#c%#CLatQa1R&U#WdK-lj(=(i4-w1@!6YH*gV`1Ufy0eb+9TK0-}ED_XUpKr;0_6zu=a zrI!=vz<_}(xGK=JBi*HvRbxL!LKf9%)mG%SXTLR z-zpJrB3#CRJVbCN=b7S28^|Clpp#?GD_BnhOHeXqw!}UPw6E9|xwc>4lGSxDrxlEnfTr? zNGPaD^~KMCL$@r@;8?E+N7C8aZ5*25C)?n-MOhVS&AV3N#j3Rzh(IgY!5$U|CH&xK6( z9b(#H_B+}#$GDv3_ZG3}VfGtZRws`!sEAH6`Ubr`r4*lc(zW-{qKY=^wQ?9u+z&Im z5$G625@YD&lO4bWOPazwt*V>fmxX%P3z)$@CN{v>`)qpzIeN7srniZo7}e3TSTD&8 L{|L--jbQFKpr{ey literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/types/repository/TypeRepository.class b/build/classes/java/main/com/example/demo/types/repository/TypeRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..18069c50a046e9c1bca376cd199192a15d79b8ab GIT binary patch literal 565 zcmb7BO-lnY5Pj*Vt<`Gl#iKVrpb@WI3nF@2J+!44Pw6(+=x(xPvub~qC&7b1z#k<} zs%WJkn7~Zlx=Jh8V<_(KjjC8-I9!r&vs7k_8bc~9ij+>xL^3o(rR8OwjHMllaZHs~ zXd)4hgjF7Y6-(|$Wei8*e;Wl1wSk&y;c`pjSIYu_n(Z$0KbbZdzuDTDG*JUFS$lvlqKe;0?R4OkOa1aFxwu3`(1S$>Ha^-Wc)efZFlr7~ZFWNG8 zV;Md58`53muAV*%*pY0j*iTgSLf~p`2iKmF@m}cqRBar_5er2JZ(>B?@_qqW%BoDJ zgFs-URIZsyJBc5-H9t-a`ly3rIL=CGCvdZr+88!!DqO9W2a|57NV+Z6l!1HKi{)&X z_{oc^g|`IG?~q_>t*J?^ZH!~W!rKns!Aa)UOYC7g@m1(CVOy=tcY?rM4x~V-Ke6jxcHqm1e2n9)gGrndIHaQ4AeM`3k$NU@ zB||dY4LW9-^l8X&d)`3_W!^y}l3v0p7D{_%bI-KfROghg_kuumn|k+nA< zS-_$e=DijZ9(^SmQ(8TVd`d!_UUhH{@6$AXWqPbXcxG8%(gOa#!3{%0r`;qC`sgDE zH_Z`6Bok@jmcYeU-Xs-1Nu^H@B(V+lZZagzNIaSm%E*t-s^sEsWTj-FUmR#~YdN z6(N4LPx;0ZSJ-ijK zk-mlwQE|Q9zx@nkPHBMqUf2v|JXup}qtmYTsVVF3zLPDEnu31wz5keo+}*c-)@H~v zUJ%s%L{^LV@%5RNy(>tTr$^PnHrc*L4llu(3qu*r1YR7=*utv7xdFTeD{S$sZ#Pk1`b-94`Qcf0aCL}ltXSif+W!(IMA zj3NFnVwhhH1^Ul$cRaPmrO`(an1TbNHMgvb^Vr%@)EJSv*aTj^||Y-rEu&&HZE_u+s&0P{V^BaLoYUznZI~p6BjpeMTg;feM^|Mjx)&PEbn5{gsY_9-EiYs9Yi#NbF?1CL#8lf zYAfVu0RE)wyV>P)k!k459WiM<(BYZMhg-tyZ(ER)Jjy2YsnnwzdL#>-r>u0qTpyW5 zTlWS-Y7tzcqZUEoPgI{!XSaJ-l`=VQ@KY5O3@TXW0$p;bW09-2`-LjHiC Q(17HL&65?ZVI5=t11l8?I{*Lx literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/users/api/UserController.class b/build/classes/java/main/com/example/demo/users/api/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..4307caee9f3015d723344a516a691c6e483d9377 GIT binary patch literal 4088 zcmb_fYj+b>6x}zZ2~DT3pkRR_Adfb!3@A`Ah_iH`2{V&IMbw|9 zYe`-3!R2R{zscpkH1e_A)^)X1R!jPPb330#R^Vg|P@UtAz|G(dyqU&94TtcSz>z(CQU(GEOpO(G zOO=nT%-V+U=f@)}H91M?u)x_EN-7Q&`J5A2!FC2mF`C9P4R7PPKrY6tgJewGx*1H{ zwm^0)q)`nlTQ69Cknh7uypzT$4X1HNU_eFE*ru%?c&1UN5-qm1Reecq=CdrIF%9F$ z3G`5Vdt2b{SX^4`YBwvQu8zW8t2)KNavl9<_&|=6csGr6GAFvgp(e)`8Uk0sOvLz! z2H#?-5H4tVPfD8#T&au{{Gx_SxXe6LK!JQT&jr_6C+(Ot?9N_3!?L}i;VM3$LV?Rd z6SyC%P@8!yP+dzpR2bJZo@5@-{efGno4sJ7#<2)(T%<4`Yna9iwJNeW0-oXJ{~?x+ zNH;Xh;U8|6$xpGzm@>vfY>XXFU4GAQG`=E`oMn3w7%W(h zd9PYtHN9nH)#ggJ;1&&g#qcco9xf(>4a*mphzqu!%gCW(3!gWG4Y#ylct)8acyy35 zRXbt7j`P%(2G)N`*6XP_i#oO}LV?~TYuzz|s>e{Sv@{KQtgdzABNfA z8dAb4QOrmOSErvRdCRb?46{dnW|f}v_obC{L-!W)m%ApvU<4cWG9dk=!$`YntTGQ> zMs}%tGOizyarj9c2K-NUy0 zbyG}TD$#vSEmR{yOm!{b4b?`P)tFgwt6tH(X~{Expmjt#Cx7C2e7bhNNR?WS{_B`3 zjhn>!)y#I`+<7&@vG8YHH{kE3QK_{Pe=vng29M#T;cEy`W#u;~Aj{cuH%+}@lvhgz zEsQmz7`Prsf<88(=G))VY=%ZPfZK*svQ7U~!F4yQmFO(Rc|#uM$VqH5lx6teHfxZ3 z+eSyY5O&tE?IkNP^Fw$da3&g2IOIi*!ll6;Oby9FK)d5O9E|0BX!>dVAaJ@(#!iZ) z@uR@8y+38AugQlK96b^o&=SbXNu5twIX?5gA8cK?%bid7_Jth(c^}OE4w0L9fpl*2 z1^R#GQUV2DvqWuhBv1kieC|zfS#C;qoP&6k zs53N{>;`hbp?@Mfyn_ROV)z&Jl>|+ZBN&4OI#~O%0W^S5vB-VtzDMvyy5{)P+4YEW zJ+j;N=@{2bSZ=yrqH7^1Z?cuFZxKTB8YS!W4vxIU3C`rNa29xpi3Bg_1$HCl6p~gm z41;)}IIrL{-estt^UemzWF!^PbSO`MP9jb0;Qbv;?RKn3Lg;U((~pPvlFmYP9@4W! z8Biz!UvbaJ*Z78O{P#`ZTmF6L(@1c(Ggufh&^hvu=^0k|ITFb4;G+&4E=D*EH#iKV zO~!hptMpprUoXT#-b(zFRQd$*%y2;ve=SsEfsAB%W@}31CKZ+04pgoxDz&Q2HmGDn zIb|)e&(dIl<8|Hbu8OaJn9mr>hig>|)WHq9iP`NZ^rT jo#oRe-|dD?84llNskszw3s13)@41rU$}>F2PZ;?Z@g7jP literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/users/api/UserDto.class b/build/classes/java/main/com/example/demo/users/api/UserDto.class new file mode 100644 index 0000000000000000000000000000000000000000..66a6af26cfb92ed7371a6bc71fd924931ff074d7 GIT binary patch literal 1708 zcmb7^YflqF6o$`~w%e8>P%a9J2qLsa7%zw>C=me@Of3YkiJ#1{9bsWF&F&WAUumK- z@q<6WA7y-JyB4}xL_X}yoSAdpdFGs%{q_6DPa=9j&vKNYE{&3TN>Q3o-=R1b+!Xdc z-`qQty3Z*6+^`LQnNe4?rEb_E4k{_f!bR!Y*}qud(zz%*iXSbx-e_PHIyArCjA2g08^FA^Mt)q z`_kXQSqeo({I?E4wixk19=>7H07KNR|r=h$4dPs-oG-g2FWbp2DvrG>6b58E$Z zEp%!nh=W3Qdwpf?!)CSe9&la@ZlD-tE7efmx6(gw>RZA^B|(T?HJqjz)OE1qJYi+w z0L7NW(0R>pU8!auv95}aA)LcuH)glmh403~nU&jdnyxNi8>%Gv@CweWWWwCAZRxI> z2$h~j3yc<2S^hhvVO}&^WHfiBNYtX0Q<}i-P2lAv(c%SRlu%Cq?RAXP#OMb45que9 z0~A;Zb^R~#z;pPgM;6L>;Also&CxUTsq%MXUoc3}O|)v6NTXY5^DPG&qua0;jnf@? zbq0SW?K2k72Nz<3)yaAwF@bMV(p{Ru;2uqfdduilO48-oZ={{ks6P|oou`l*MKs*< z3W*f0N+6>dtfd$Xg;}H$+9+mE6mv8NlTn#wv4;xoVCso7-3HV61x%`#ZKmFU>3%Fz zf0Su5mT4}YsXxjz4W^k3nAG)YGvQLfn2%)|j53vDnRq4?0uYjx#zw`Oqi-Ajk1LH%qc$I@1U4x#!-K?|kQ+?=CO?{p}9`AK~*9Vu+hC zEF_RrxLNaCW%seuI&Qk$;t8nB^<(&$1Y8r{yY4 zMyO}wU%84~*9;K;275_-kL>v%&U z=G7SyNuW8WFo!oyyk%h?*A%8SLND-|Tr#ti}A6>x$^mN7ZcfQOR>|YKx`zrzDw^mt)flX&!B$Q zVYhXVfQ-W+$Q|yieh}Wn`}73h0|E=cW7-65&MrQKX_rosvX@Sgv9B1X$PN*6I%zx#0;6v`G42FV1;57&*QnY2r~F7xE2B9@Cf@H;iJX>R z!b#>h;MAYp$5`c&%x;Gxmf06Usfrx#QhWEPo(jLuGF$#<#R?wLm$x?G rr#8^jKGv|#R?IQxQ{u$1!KiU0%n9`mR!yW=2Tfe#jlu)2F?{wPHJez! literal 0 HcmV?d00001 diff --git a/build/classes/java/main/com/example/demo/users/repository/UserRepository.class b/build/classes/java/main/com/example/demo/users/repository/UserRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..dff53f48a3d052fc8a991372d121b329b466a1e7 GIT binary patch literal 565 zcmb7BO-}+b5PjuS5Jka@M{j;4)OZC+jM3BT0hEiUvW!?|+fBEt^0Pddc<=}Kql~j? z6hmTSo6Pi0U*7a}-riqc0UTnZiX8G~6ly4Yx8!{srJBHj2n$$ilFVeaH)x*4-zr zUeCD=0zI0l$t(pczUxW)utM-DY#wX)ltUQ##&r0<~@8-DN@O?=f7k;ozcx zMJ~*{Z8|*qiZmv)MjU#igciMQ;|e~cX!J_-NY;2NSy|Eq{>a8PlZI}m#Wd)nPi$N_ zMtA?4(t9 z?zal{hG$7_fkSmKkn`R4vJ4j!4vy4S)Ag6!(9`?$a5!G`B7t**h23#1)HrkQ$#_k* z9=IXX9CLgK6dK-Y;KtpMwr{>ld#_h-?1cY%XVq>IKIgS)Lv_QZ zyzS{ZRnjvq9sd{ftPvPn=rTQRx#UG2c{3dZDt7hYVbRNV6|Oo_NB7l==E74IZa5Jc zAyxdmBb^jVQ)Wh~IEq8JlW-?Gl*czkJjS;czO(T?eh@firkm+iFL^3}RZ0xpaf6mGqsh8b8{JMV!=|*mGbdXV7wLFbeD{AQCf}@^owX_Q ztn2#?FP60uetLaorFR9BbMB~fk811f0;YMb$|6YSetn37rrOp zd2@cmfZB;n3i^eSxx+KwL@CZAuG-BBjWe~0!++!03ye*@#QVS|PI23ZPW&FjDDU8L zjAi_u==nW?yZDkOQorvKn=OQ|QhPc*+Mb=-`(TTK#P{PFV7muwqmFxh;JN|6hWQkD zo$D~q#;c5?I)DD$CeCl-k~YKj>J~Fe9H)@SY1U%Wn5!n*J#*t}97HsRbCe#%eY!AY zVk_h*0RE-pyWY#^BHhr%9Wid))8^^P$6L(nZ(A@Yc~p$)6NyI8^hjztPg-e%xlA%k zMco@TsY!5!ikbw4KT&&3p55%1D#_%y!B1FFFsNXd3slLWfkm!b?jhGD{Hq)$ literal 0 HcmV?d00001 diff --git a/build/classes/java/test/com/example/demo/CommentServiceTests.class b/build/classes/java/test/com/example/demo/CommentServiceTests.class new file mode 100644 index 0000000000000000000000000000000000000000..810b6fc934160d8f0b58e531f4e34f959a0a89d5 GIT binary patch literal 5119 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 TMS+j-2|io?sEKd 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 literal 0 HcmV?d00001 diff --git a/build/classes/java/test/com/example/demo/UserServiceTests.class b/build/classes/java/test/com/example/demo/UserServiceTests.class new file mode 100644 index 0000000000000000000000000000000000000000..76e1c32c5d7ffdacc4a01ad631526730639f945f GIT binary patch literal 3703 zcmb7G>2lLn7(LfWC4dtGDqC0#41tCca0104bYoh@z6km9Xm}&DGke^2_)oJwGFpiJw7zByyulGzkiqCJ5Q4XcnA*wkEeph6!?wIZMy z{$lj1>r8W*&*bXhPg&f|{tx#(5oO<^AJj5*;@$*SYq$^h3vB*R$O6l&bruBr8d*~N z6`endCq2ShHi0z)I~sfh3MHo~E&uqS?U~-qB-RPE8pV=nC$T}G-G4nXSu#v(H*KWQ zg-xm|HVX_zsmVF^WHy2}@44m@B|T#)Y(;kh+ca#)4uRf9f^CA1g;;Q~b7He*y7PYB$TIU6liKbb1@hcukQ5dAWA zfowyP z!irO2k7~GtF*05)7ya5OMm+|ly3`8ze-Izh@Th{=9!wFAy&yL#s>d}vp~!4w%Slhp zrzxhuJ*C0GI5S9aL&Zpm)Y9dTvZ7+pM}9WaYd)ZQ-s1vY7prXNk{mNDCdc4_Z9AS3 z4!A@9{Hl~ye@?h0a@ujP>*La}EBb^{@ErH1ZqyX?fvV?Bo31QonTt~#7X+6xZ8=gc zjZ1e_4K#+Ea|(tvX1JzWhr+mb)nrj_ZEUtn?5BKmqz745<6U6gBJ)-4GKN&p@4?wP z2QpQbo+E+viCS6IpAK;R7M-c8^=4e#Rvfh~39rak3cmwL`;iyB5)r~EFKqN_in zZ5}EG4$c^M(UO(!oa0=tmZQ_A@k8}5#nGE(89l!A&A{c|b)!Q!w0z32tUT{D*$%X| zx8mazFAJY&ctPF6v?1G;u73-WERW9x_BFrI1fYH18~IP*OLpZF6xrzuQkTFt0^1rA z(~RQ;z7yDR_oM8aAR*XHlrhzF{N<&H&#PRu@o9!nUPQUN#+A;e;Ip;&HpEYSiQ#&9 z2)yQ5eAj{lD8c3maHt&fm9u;*AkJXlOpBva*RA zHKRWw;p-K9f5tt(qU%wSUYlN@UV9rGXR+mSU7AVvrZWxFzVz;NUm(r3sl&5);1}!{ zjP1xyweH06Ih>fq={cOO$GV38f%RC84d}y0oWv$vB$EYf@nc^d#1zJUl2R8Hf>$Wo zxu;NgTvvxM#n*<$jZu3HPgB-H8~u2OvUoEBo~6s@Y6Sewe5w&W5e@vY%dKh|$xX0(B}h%K6IXW5 z;>kG_lzhGl)`}pp!wXsI#01$?$Lks0LgIn_yeb`FPWuV?Ab$_z9F7oB7Ls3oRh659 z=t9_i+zm2&4r_ggv1SmT?}(`>LQYf@9i$1r4^*(r0tk^Ls9sZj(AWbnQXc2-OZ w?=ieu^Y$9ouXC?jz#Djz3)P2j(bI?ci2t8blBU9E_yS)s%U|PLe2=bw004#8?EnA( literal 0 HcmV?d00001 diff --git a/build/resources/main/application.properties b/build/resources/main/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/resources/main/application.properties @@ -0,0 +1 @@ + diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..ac30c5a4ffff23cb5adc79133d52ce149590733e GIT binary patch literal 39836 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1af9e09 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..1aa94a4 --- /dev/null +++ b/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@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 %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..0a383dd --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'demo' diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java new file mode 100644 index 0000000..c9ab04b --- /dev/null +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -0,0 +1,76 @@ +package com.example.demo; + +import java.util.Objects; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.example.demo.types.model.TypeEntity; +import com.example.demo.types.service.TypeService; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.houses.service.HouseService; +import com.example.demo.materials.model.MaterialEntity; +import com.example.demo.materials.service.MaterialService; +import com.example.demo.users.model.UserEntity; +import com.example.demo.users.service.UserService; +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.comments.service.CommentService; + +@SpringBootApplication +public class DemoApplication implements CommandLineRunner { + private final Logger log = LoggerFactory.getLogger(DemoApplication.class); + + private final TypeService typeService; + private final HouseService itemService; + private final MaterialService materialService; + private final UserService userService; + private final CommentService commentService; + + public DemoApplication(TypeService typeService, HouseService itemService, + MaterialService materialService, UserService userService, CommentService commentService) { + this.typeService = typeService; + this.itemService = itemService; + this.materialService = materialService; + this.userService = userService; + this.commentService = commentService; + } + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + + @Override + public void run(String... args) throws Exception { + if (args.length > 0 && Objects.equals("--populate", args[0])) { + log.info("Create default types values"); + final var type1 = typeService.create(new TypeEntity(null, "Дом")); + final var type2 = typeService.create(new TypeEntity(null, "Дача")); + final var type3 = typeService.create(new TypeEntity(null, "Вилла")); + + log.info("Create default materials values"); + final var material1 = materialService.create(new MaterialEntity(null, "Дерево")); + final var material2 = materialService.create(new MaterialEntity(null, "Кирпич")); + final var material3 = materialService.create(new MaterialEntity(null, "Камень")); + + log.info("Create default user values"); + final var user1 = userService.create(new UserEntity(null, "admin", "admin@gmail.com", "admin")); + final var user2 = userService.create(new UserEntity(null, "Vanya", "vanya@gmail.com", "vanya")); + + log.info("Create default items values"); + final var house1 = itemService.create( + new HouseEntity(null, type1, 17500000.00, "Тайский дракон", material1, 4)); + final var house2 = itemService.create(new HouseEntity(null, type2, 122423.00, "dfdsfds sdf", material2, 3)); + itemService.create(new HouseEntity(null, type3, 1111111.00, "sdc1 дракон", material3, 3)); + itemService.create(new HouseEntity(null, type3, 1234567788.00, "Снек За Бу Горский", material3, 5)); + + log.info("Create default comment values"); + commentService.create(new CommentEntity(null, house1, user1, "Класс класс класс", null, 5)); + commentService.create(new CommentEntity(null, house1, user1, "Живу пол года, изменений не видно", null, 3)); + commentService.create(new CommentEntity(null, house2, user1, "Прошлый дом была лучше", null, 4)); + commentService.create(new CommentEntity(null, house2, user2, "Необычно", null, 5)); + } + } +} diff --git a/src/main/java/com/example/demo/comments/api/CommentController.java b/src/main/java/com/example/demo/comments/api/CommentController.java new file mode 100644 index 0000000..6344b33 --- /dev/null +++ b/src/main/java/com/example/demo/comments/api/CommentController.java @@ -0,0 +1,78 @@ +package com.example.demo.comments.api; + +import java.util.List; + +import org.modelmapper.ModelMapper; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.comments.service.CommentService; +import com.example.demo.core.configuration.Constants; +import com.example.demo.houses.service.HouseService; +import com.example.demo.users.service.UserService; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping(Constants.API_URL + "/comment") +public class CommentController { + private final CommentService commentService; + private final HouseService houseService; + private final UserService userService; + private final ModelMapper modelMapper; + + public CommentController( + CommentService commentService, + HouseService houseService, + UserService userService, ModelMapper modelMapper) { + this.commentService = commentService; + this.houseService = houseService; + this.userService = userService; + this.modelMapper = modelMapper; + } + + private CommentDto toDto(CommentEntity entity) { + return modelMapper.map(entity, CommentDto.class); + } + + private CommentEntity toEntity(CommentDto dto) { + final CommentEntity entity = modelMapper.map(dto, CommentEntity.class); + entity.setHouse(houseService.get(dto.getHouseId())); + entity.setUser(userService.get(dto.getUserId())); + return entity; + } + + @GetMapping + public List getAll(@RequestParam(name = "HouseId", defaultValue = "0") Long HouseId, + @RequestParam(name = "userId", defaultValue = "0") Long userId) { + return commentService.getAll(HouseId, userId).stream().map(this::toDto).toList(); + } + + @GetMapping("/{id}") + public CommentDto get(@PathVariable(name = "id") Long id) { + return toDto(commentService.get(id)); + } + + @PostMapping + public CommentDto create(@RequestBody @Valid CommentDto dto) { + return toDto(commentService.create(toEntity(dto))); + } + + @PutMapping("/{id}") + public CommentDto update(@PathVariable(name = "id") Long id, @RequestBody CommentDto dto) { + return toDto(commentService.update(id, toEntity(dto))); + } + + @DeleteMapping("/{id}") + public CommentDto delete(@PathVariable(name = "id") Long id) { + return toDto(commentService.delete(id)); + } +} diff --git a/src/main/java/com/example/demo/comments/api/CommentDto.java b/src/main/java/com/example/demo/comments/api/CommentDto.java new file mode 100644 index 0000000..a750ab8 --- /dev/null +++ b/src/main/java/com/example/demo/comments/api/CommentDto.java @@ -0,0 +1,79 @@ +package com.example.demo.comments.api; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Date; + +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; + +public class CommentDto { + private Long id; + @NotNull + @Min(1) + private Long houseId; + @NotNull + @Min(1) + private Long userId; + @NotNull + @Min(1) + private String description; + @NotNull + @Min(1) + private Date date; + @NotNull + @Min(1) + @Max(5) + private Double rating; + + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHouseId() { + return houseId; + } + + public void setHouseId(Long houseId) { + this.houseId = houseId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Double getRating() { + return rating; + } + + public void setRating(Double rating) { + this.rating = rating; + } +} diff --git a/src/main/java/com/example/demo/comments/model/CommentEntity.java b/src/main/java/com/example/demo/comments/model/CommentEntity.java new file mode 100644 index 0000000..dc573da --- /dev/null +++ b/src/main/java/com/example/demo/comments/model/CommentEntity.java @@ -0,0 +1,90 @@ +package com.example.demo.comments.model; + +import java.util.Objects; + +import java.util.Date; + +import com.example.demo.core.model.BaseEntity; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.users.model.UserEntity; + +public class CommentEntity extends BaseEntity { + private HouseEntity house; + private UserEntity user; + private String description; + private Date date; + private double rating; + + public CommentEntity() { + super(); + } + + public CommentEntity(Long id, HouseEntity house, UserEntity user, String description, Date date, double rating) { + super(id); + this.house = house; + this.user = user; + this.description = description; + this.date = date; + this.rating = rating; + } + + public HouseEntity getHouse() { + return house; + } + + public void setHouse(HouseEntity house) { + this.house = house; + } + + public UserEntity getUser() { + return user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public double getRating() { + return rating; + } + + public void setRating(double rating) { + this.rating = rating; + } + + @Override + public int hashCode() { + return Objects.hash(id, house, user, description, date, rating); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + final CommentEntity other = (CommentEntity) obj; + return Objects.equals(other.getId(), id) + && Objects.equals(other.getHouse(), house) + && Objects.equals(other.getUser(), user) + && Objects.equals(other.getDescription(), description) + && Objects.equals(other.getDate(), date) + && Objects.equals(other.getRating(), rating); + } +} diff --git a/src/main/java/com/example/demo/comments/repository/CommentRepository.java b/src/main/java/com/example/demo/comments/repository/CommentRepository.java new file mode 100644 index 0000000..b60c20f --- /dev/null +++ b/src/main/java/com/example/demo/comments/repository/CommentRepository.java @@ -0,0 +1,10 @@ +package com.example.demo.comments.repository; + +import org.springframework.stereotype.Repository; + +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.core.repository.MapRepository; + +@Repository +public class CommentRepository extends MapRepository { +} diff --git a/src/main/java/com/example/demo/comments/service/CommentService.java b/src/main/java/com/example/demo/comments/service/CommentService.java new file mode 100644 index 0000000..0564900 --- /dev/null +++ b/src/main/java/com/example/demo/comments/service/CommentService.java @@ -0,0 +1,63 @@ +package com.example.demo.comments.service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Stream; + +import org.springframework.stereotype.Service; + +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.comments.repository.CommentRepository; +import com.example.demo.core.error.NotFoundException; + +@Service +public class CommentService { + private final CommentRepository repository; + + public CommentService(CommentRepository repository) { + this.repository = repository; + } + + public List getAll(Long houseId, Long userId) { + Stream stream = repository.getAll().stream(); + + if (!Objects.equals(houseId, 0L)) { + stream = stream.filter(item -> item.getHouse().getId().equals(houseId)); + } + if (houseId == null || houseId < 0) { + throw new IllegalArgumentException("House ID must be greater than 0."); + } + if (!Objects.equals(userId, 0L)) { + stream = stream.filter(item -> item.getUser().getId().equals(userId)); + } + if (userId == null || userId < 0) { + throw new IllegalArgumentException("User ID must be greater than 0."); + } + return stream.toList(); + } + + public CommentEntity get(Long id) { + return Optional.ofNullable(repository.get(id)) + .orElseThrow(() -> new NotFoundException(id)); + } + + public CommentEntity create(CommentEntity entity) { + return repository.create(entity); + } + + public CommentEntity update(Long id, CommentEntity entity) { + final CommentEntity existsEntity = get(id); + existsEntity.setHouse(entity.getHouse()); + existsEntity.setUser(entity.getUser()); + existsEntity.setDescription(entity.getDescription()); + existsEntity.setDate(entity.getDate()); + existsEntity.setRating(entity.getRating()); + return repository.update(existsEntity); + } + + public CommentEntity delete(Long id) { + final CommentEntity existsEntity = get(id); + return repository.delete(existsEntity); + } +} diff --git a/src/main/java/com/example/demo/core/configuration/Constants.java b/src/main/java/com/example/demo/core/configuration/Constants.java new file mode 100644 index 0000000..d9c6b7c --- /dev/null +++ b/src/main/java/com/example/demo/core/configuration/Constants.java @@ -0,0 +1,8 @@ +package com.example.demo.core.configuration; + +public class Constants { + public static final String API_URL = "/api/1.0"; + + private Constants() { + } +} diff --git a/src/main/java/com/example/demo/core/configuration/MapperConfiguration.java b/src/main/java/com/example/demo/core/configuration/MapperConfiguration.java new file mode 100644 index 0000000..a5ad6f3 --- /dev/null +++ b/src/main/java/com/example/demo/core/configuration/MapperConfiguration.java @@ -0,0 +1,13 @@ +package com.example.demo.core.configuration; + +import org.modelmapper.ModelMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MapperConfiguration { + @Bean + ModelMapper modelMapper() { + return new ModelMapper(); + } +} diff --git a/src/main/java/com/example/demo/core/configuration/WebConfiguration.java b/src/main/java/com/example/demo/core/configuration/WebConfiguration.java new file mode 100644 index 0000000..762e85a --- /dev/null +++ b/src/main/java/com/example/demo/core/configuration/WebConfiguration.java @@ -0,0 +1,15 @@ +package com.example.demo.core.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.lang.NonNull; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfiguration implements WebMvcConfigurer { + @Override + public void addCorsMappings(@NonNull CorsRegistry registry) { + registry.addMapping("/**") + .allowedMethods("GET", "POST", "PUT", "DELETE"); + } +} diff --git a/src/main/java/com/example/demo/core/error/NotFoundException.java b/src/main/java/com/example/demo/core/error/NotFoundException.java new file mode 100644 index 0000000..586af3c --- /dev/null +++ b/src/main/java/com/example/demo/core/error/NotFoundException.java @@ -0,0 +1,7 @@ +package com.example.demo.core.error; + +public class NotFoundException extends RuntimeException { + public NotFoundException(Long id) { + super(String.format("Entity with id [%s] is not found or not exists", id)); + } +} diff --git a/src/main/java/com/example/demo/core/model/BaseEntity.java b/src/main/java/com/example/demo/core/model/BaseEntity.java new file mode 100644 index 0000000..674ddfb --- /dev/null +++ b/src/main/java/com/example/demo/core/model/BaseEntity.java @@ -0,0 +1,20 @@ +package com.example.demo.core.model; + +public abstract class BaseEntity { + protected Long id; + + protected BaseEntity() { + } + + protected BaseEntity(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/src/main/java/com/example/demo/core/repository/CommonRepository.java b/src/main/java/com/example/demo/core/repository/CommonRepository.java new file mode 100644 index 0000000..85e1e6d --- /dev/null +++ b/src/main/java/com/example/demo/core/repository/CommonRepository.java @@ -0,0 +1,17 @@ +package com.example.demo.core.repository; + +import java.util.List; + +public interface CommonRepository { + List getAll(); + + E get(T id); + + E create(E entity); + + E update(E entity); + + E delete(E entity); + + void deleteAll(); +} diff --git a/src/main/java/com/example/demo/core/repository/MapRepository.java b/src/main/java/com/example/demo/core/repository/MapRepository.java new file mode 100644 index 0000000..6809ac2 --- /dev/null +++ b/src/main/java/com/example/demo/core/repository/MapRepository.java @@ -0,0 +1,57 @@ +package com.example.demo.core.repository; + +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import com.example.demo.core.model.BaseEntity; + +public abstract class MapRepository implements CommonRepository { + private final Map entities = new TreeMap<>(); + private Long lastId = 0L; + + protected MapRepository() { + } + + @Override + public List getAll() { + return entities.values().stream().toList(); + } + + @Override + public E get(Long id) { + return entities.get(id); + } + + @Override + public E create(E entity) { + lastId++; + entity.setId(lastId); + entities.put(lastId, entity); + return entity; + } + + @Override + public E update(E entity) { + if (get(entity.getId()) == null) { + return null; + } + entities.put(entity.getId(), entity); + return entity; + } + + @Override + public E delete(E entity) { + if (get(entity.getId()) == null) { + return null; + } + entities.remove(entity.getId()); + return entity; + } + + @Override + public void deleteAll() { + lastId = 0L; + entities.clear(); + } +} diff --git a/src/main/java/com/example/demo/houses/api/HouseController.java b/src/main/java/com/example/demo/houses/api/HouseController.java new file mode 100644 index 0000000..9da19a2 --- /dev/null +++ b/src/main/java/com/example/demo/houses/api/HouseController.java @@ -0,0 +1,76 @@ +package com.example.demo.houses.api; + +import java.util.List; + +import org.modelmapper.ModelMapper; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.example.demo.core.configuration.Constants; +import com.example.demo.types.service.TypeService; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.houses.service.HouseService; +import com.example.demo.materials.service.MaterialService; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping(Constants.API_URL + "/house") +public class HouseController { + private final HouseService houseService; + private final TypeService typeService; + private final MaterialService materialService; + private final ModelMapper modelMapper; + + public HouseController(HouseService houseService, TypeService typeService, + MaterialService materialService, ModelMapper modelMapper) { + this.houseService = houseService; + this.typeService = typeService; + this.materialService = materialService; + this.modelMapper = modelMapper; + } + + private HouseDto toDto(HouseEntity entity) { + return modelMapper.map(entity, HouseDto.class); + } + + private HouseEntity toEntity(HouseDto dto) { + final HouseEntity entity = modelMapper.map(dto, HouseEntity.class); + entity.setType(typeService.get(dto.getTypeId())); + entity.setMaterial(materialService.get(dto.getMaterialId())); + return entity; + } + + @GetMapping + public List getAll(@RequestParam(name = "typeId", defaultValue = "0") Long typeId, + @RequestParam(name = "materialId", required = false) Long materialId) { + return houseService.getAll(typeId, materialId).stream().map(this::toDto).toList(); + } + + @GetMapping("/{id}") + public HouseDto get(@PathVariable(name = "id") Long id) { + return toDto(houseService.get(id)); + } + + @PostMapping + public HouseDto create(@RequestBody @Valid HouseDto dto) { + return toDto(houseService.create(toEntity(dto))); + } + + @PutMapping("/{id}") + public HouseDto update(@PathVariable(name = "id") Long id, @RequestBody HouseDto dto) { + return toDto(houseService.update(id, toEntity(dto))); + } + + @DeleteMapping("/{id}") + public HouseDto delete(@PathVariable(name = "id") Long id) { + return toDto(houseService.delete(id)); + } +} diff --git a/src/main/java/com/example/demo/houses/api/HouseDto.java b/src/main/java/com/example/demo/houses/api/HouseDto.java new file mode 100644 index 0000000..b7ad973 --- /dev/null +++ b/src/main/java/com/example/demo/houses/api/HouseDto.java @@ -0,0 +1,76 @@ +package com.example.demo.houses.api; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; + +public class HouseDto { + private Long id; + @NotNull + @Min(1) + private Long typeId; + @NotNull + @Min(1) + private Double price; + @NotNull + @Min(1) + private String name; + @NotNull + @Min(1) + private Long materialId; + @NotNull + @Min(0) + @Max(5) + private Double rating; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getTypeId() { + return typeId; + } + + public void setTypeId(Long typeId) { + this.typeId = typeId; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Double getRating() { + return rating; + } + + public void setRating(Double rating) { + this.rating = rating; + } +} diff --git a/src/main/java/com/example/demo/houses/api/PropertyStatus.java b/src/main/java/com/example/demo/houses/api/PropertyStatus.java new file mode 100644 index 0000000..416450e --- /dev/null +++ b/src/main/java/com/example/demo/houses/api/PropertyStatus.java @@ -0,0 +1,6 @@ +package com.example.demo.houses.api; + +public enum PropertyStatus { + SALE, + PURCHASE +} diff --git a/src/main/java/com/example/demo/houses/model/HouseEntity.java b/src/main/java/com/example/demo/houses/model/HouseEntity.java new file mode 100644 index 0000000..d47152f --- /dev/null +++ b/src/main/java/com/example/demo/houses/model/HouseEntity.java @@ -0,0 +1,88 @@ +package com.example.demo.houses.model; + +import java.util.Objects; + +import com.example.demo.core.model.BaseEntity; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.materials.model.MaterialEntity; + +public class HouseEntity extends BaseEntity { + private TypeEntity type; + private Double price; + private String name; + private MaterialEntity material; + private double rating; + + public HouseEntity() { + super(); + } + + public HouseEntity(Long id, TypeEntity type, Double price, String name, MaterialEntity material, double rating) { + super(id); + this.type = type; + this.price = price; + this.name = name; + this.material = material; + this.rating = rating; + } + + public TypeEntity getType() { + return type; + } + + public void setType(TypeEntity type) { + this.type = type; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public MaterialEntity getMaterial() { + return material; + } + + public void setMaterial(MaterialEntity material) { + this.material = material; + } + + public double getRating() { + return rating; + } + + public void setRating(double rating) { + this.rating = rating; + } + + @Override + public int hashCode() { + return Objects.hash(id, type, price, name, material, rating); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + final HouseEntity other = (HouseEntity) obj; + return Objects.equals(other.getId(), id) + && Objects.equals(other.getType(), type) + && Objects.equals(other.getPrice(), price) + && Objects.equals(other.getName(), name) + && Objects.equals(other.getMaterial(), material) + && Double.compare(other.getRating(), rating) == 0; + } +} diff --git a/src/main/java/com/example/demo/houses/repository/HouseRepository.java b/src/main/java/com/example/demo/houses/repository/HouseRepository.java new file mode 100644 index 0000000..fefa600 --- /dev/null +++ b/src/main/java/com/example/demo/houses/repository/HouseRepository.java @@ -0,0 +1,10 @@ +package com.example.demo.houses.repository; + +import org.springframework.stereotype.Repository; + +import com.example.demo.core.repository.MapRepository; +import com.example.demo.houses.model.HouseEntity; + +@Repository +public class HouseRepository extends MapRepository { +} diff --git a/src/main/java/com/example/demo/houses/service/HouseService.java b/src/main/java/com/example/demo/houses/service/HouseService.java new file mode 100644 index 0000000..0456fad --- /dev/null +++ b/src/main/java/com/example/demo/houses/service/HouseService.java @@ -0,0 +1,77 @@ +package com.example.demo.houses.service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Stream; + +import org.springframework.stereotype.Service; + +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.comments.service.CommentService; +import com.example.demo.core.error.NotFoundException; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.houses.repository.HouseRepository; + +@Service +public class HouseService { + private final HouseRepository repository; + CommentService commentService; + + public HouseService(HouseRepository repository, CommentService commentService) { + this.repository = repository; + this.commentService = commentService; + } + + public List getAll(Long typeId, Long materialId) { + Stream stream = repository.getAll().stream(); + + if (!Objects.equals(typeId, 0L)) { + stream = stream.filter(item -> item.getType().getId().equals(typeId)); + } + if (!Objects.equals(materialId, 0L)) { + stream = stream.filter(item -> item.getMaterial().getId().equals(materialId)); + } + + return stream.map(this::calculateAverageRating).toList(); + } + + public HouseEntity get(Long id) { + return calculateAverageRating(Optional.ofNullable(repository.get(id)) + .orElseThrow(() -> new NotFoundException(id))); + } + + public HouseEntity create(HouseEntity entity) { + return repository.create(entity); + } + + public HouseEntity update(Long id, HouseEntity entity) { + final HouseEntity existsEntity = get(id); + existsEntity.setType(entity.getType()); + existsEntity.setPrice(entity.getPrice()); + existsEntity.setName(entity.getName()); + existsEntity.setMaterial(entity.getMaterial()); + existsEntity.setRating(entity.getRating()); + return repository.update(existsEntity); + } + + public HouseEntity delete(Long id) { + final HouseEntity existsEntity = get(id); + return repository.delete(existsEntity); + } + + public HouseEntity calculateAverageRating(HouseEntity house) { + List comments = commentService.getAll(house.getId(), 0L); + if (comments.isEmpty()) { + house.setRating(0); + } else { + double sum = 0; + for (CommentEntity comment : comments) { + sum += comment.getRating(); + } + double averageRating = sum / comments.size(); + house.setRating(averageRating); + } + return house; + } +} diff --git a/src/main/java/com/example/demo/materials/api/MaterialContoller.java b/src/main/java/com/example/demo/materials/api/MaterialContoller.java new file mode 100644 index 0000000..0bbd330 --- /dev/null +++ b/src/main/java/com/example/demo/materials/api/MaterialContoller.java @@ -0,0 +1,64 @@ +package com.example.demo.materials.api; + +import java.util.List; + +import org.modelmapper.ModelMapper; +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.RestController; + +import com.example.demo.core.configuration.Constants; +import com.example.demo.materials.model.MaterialEntity; +import com.example.demo.materials.service.MaterialService; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping(Constants.API_URL + "/material") +public class MaterialContoller { + private final MaterialService materialService; + private final ModelMapper modelMapper; + + public MaterialContoller(MaterialService materialService, ModelMapper modelMapper) { + this.materialService = materialService; + this.modelMapper = modelMapper; + } + + private MaterialDto toDto(MaterialEntity entity) { + return modelMapper.map(entity, MaterialDto.class); + } + + private MaterialEntity toEntity(MaterialDto dto) { + return modelMapper.map(dto, MaterialEntity.class); + } + + @GetMapping + public List getAll() { + return materialService.getAll().stream().map(this::toDto).toList(); + } + + @GetMapping("/{id}") + public MaterialDto get(@PathVariable(name = "id") Long id) { + return toDto(materialService.get(id)); + } + + @PostMapping + public MaterialDto create(@RequestBody @Valid MaterialDto dto) { + return toDto(materialService.create(toEntity(dto))); + } + + @PutMapping("/{id}") + public MaterialDto update(@PathVariable(name = "id") Long id, @RequestBody MaterialDto dto) { + return toDto(materialService.update(id, toEntity(dto))); + } + + @DeleteMapping("/{id}") + public MaterialDto delete(@PathVariable(name = "id") Long id) { + return toDto(materialService.delete(id)); + } +} diff --git a/src/main/java/com/example/demo/materials/api/MaterialDto.java b/src/main/java/com/example/demo/materials/api/MaterialDto.java new file mode 100644 index 0000000..d4d5e82 --- /dev/null +++ b/src/main/java/com/example/demo/materials/api/MaterialDto.java @@ -0,0 +1,28 @@ +package com.example.demo.materials.api; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.NotBlank; + +public class MaterialDto { + private Long id; + @NotBlank + private String name; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/com/example/demo/materials/model/MaterialEntity.java b/src/main/java/com/example/demo/materials/model/MaterialEntity.java new file mode 100644 index 0000000..a86d479 --- /dev/null +++ b/src/main/java/com/example/demo/materials/model/MaterialEntity.java @@ -0,0 +1,42 @@ +package com.example.demo.materials.model; + +import java.util.Objects; + +import com.example.demo.core.model.BaseEntity; + +public class MaterialEntity extends BaseEntity { + private String name; + + public MaterialEntity() { + super(); + } + + public MaterialEntity(Long id, String name) { + super(id); + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + return Objects.hash(id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + final MaterialEntity other = (MaterialEntity) obj; + return Objects.equals(other.getId(), id) + && Objects.equals(other.getName(), name); + } +} diff --git a/src/main/java/com/example/demo/materials/repository/MaterialRepository.java b/src/main/java/com/example/demo/materials/repository/MaterialRepository.java new file mode 100644 index 0000000..86612ad --- /dev/null +++ b/src/main/java/com/example/demo/materials/repository/MaterialRepository.java @@ -0,0 +1,10 @@ +package com.example.demo.materials.repository; + +import org.springframework.stereotype.Repository; + +import com.example.demo.core.repository.MapRepository; +import com.example.demo.materials.model.MaterialEntity; + +@Repository +public class MaterialRepository extends MapRepository { +} diff --git a/src/main/java/com/example/demo/materials/service/MaterialService.java b/src/main/java/com/example/demo/materials/service/MaterialService.java new file mode 100644 index 0000000..781c314 --- /dev/null +++ b/src/main/java/com/example/demo/materials/service/MaterialService.java @@ -0,0 +1,43 @@ +package com.example.demo.materials.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.materials.model.MaterialEntity; +import com.example.demo.materials.repository.MaterialRepository; + +@Service +public class MaterialService { + private final MaterialRepository repository; + + public MaterialService(MaterialRepository repository) { + this.repository = repository; + } + + public List getAll() { + return repository.getAll(); + } + + public MaterialEntity get(Long id) { + return Optional.ofNullable(repository.get(id)) + .orElseThrow(() -> new NotFoundException(id)); + } + + public MaterialEntity create(MaterialEntity entity) { + return repository.create(entity); + } + + public MaterialEntity update(Long id, MaterialEntity entity) { + final MaterialEntity existsEntity = get(id); + existsEntity.setName(entity.getName()); + return repository.update(existsEntity); + } + + public MaterialEntity delete(Long id) { + final MaterialEntity existsEntity = get(id); + return repository.delete(existsEntity); + } +} diff --git a/src/main/java/com/example/demo/speaker/api/SpeakerController.java b/src/main/java/com/example/demo/speaker/api/SpeakerController.java new file mode 100644 index 0000000..293296d --- /dev/null +++ b/src/main/java/com/example/demo/speaker/api/SpeakerController.java @@ -0,0 +1,23 @@ +package com.example.demo.speaker.api; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.example.demo.speaker.service.SpeakerService; + +@RestController +public class SpeakerController { + private final SpeakerService speakerService; + + public SpeakerController(SpeakerService speakerService) { + this.speakerService = speakerService; + } + + @GetMapping + public String hello( + @RequestParam(value = "name", defaultValue = "Мир") String name, + @RequestParam(value = "lang", defaultValue = "ru") String lang) { + return speakerService.say(name, lang); + } +} diff --git a/src/main/java/com/example/demo/speaker/configuration/SpeakerConfiguration.java b/src/main/java/com/example/demo/speaker/configuration/SpeakerConfiguration.java new file mode 100644 index 0000000..0ef7cda --- /dev/null +++ b/src/main/java/com/example/demo/speaker/configuration/SpeakerConfiguration.java @@ -0,0 +1,27 @@ +package com.example.demo.speaker.configuration; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.example.demo.speaker.domain.Speaker; +import com.example.demo.speaker.domain.SpeakerEng; +import com.example.demo.speaker.domain.SpeakerRus; + +@Configuration +public class SpeakerConfiguration { + private final Logger log = LoggerFactory.getLogger(SpeakerConfiguration.class); + + @Bean(value = "ru", initMethod = "init", destroyMethod = "destroy") + public SpeakerRus createRusSpeaker() { + log.info("Call createRusSpeaker()"); + return new SpeakerRus(); + } + + @Bean(value = "en") + public Speaker createEngSpeaker() { + log.info("Call createEngSpeaker()"); + return new SpeakerEng(); + } +} diff --git a/src/main/java/com/example/demo/speaker/domain/Speaker.java b/src/main/java/com/example/demo/speaker/domain/Speaker.java new file mode 100644 index 0000000..27a0a29 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/domain/Speaker.java @@ -0,0 +1,5 @@ +package com.example.demo.speaker.domain; + +public interface Speaker { + String say(); +} diff --git a/src/main/java/com/example/demo/speaker/domain/SpeakerDeu.java b/src/main/java/com/example/demo/speaker/domain/SpeakerDeu.java new file mode 100644 index 0000000..5909864 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/domain/SpeakerDeu.java @@ -0,0 +1,28 @@ +package com.example.demo.speaker.domain; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; + +@Component(value = "de") +public class SpeakerDeu implements Speaker { + private final Logger log = LoggerFactory.getLogger(SpeakerDeu.class); + + @Override + public String say() { + return "Hallo"; + } + + @PostConstruct + public void init() { + log.info("SpeakerDeu.init()"); + } + + @PreDestroy + public void destroy() { + log.info("SpeakerDeu.destroy()"); + } +} diff --git a/src/main/java/com/example/demo/speaker/domain/SpeakerEng.java b/src/main/java/com/example/demo/speaker/domain/SpeakerEng.java new file mode 100644 index 0000000..a310403 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/domain/SpeakerEng.java @@ -0,0 +1,26 @@ +package com.example.demo.speaker.domain; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.InitializingBean; + +public class SpeakerEng implements Speaker, InitializingBean, DisposableBean { + private final Logger log = LoggerFactory.getLogger(SpeakerEng.class); + + @Override + public String say() { + return "Hello"; + } + + @Override + public void afterPropertiesSet() { + log.info("SpeakerEng.afterPropertiesSet()"); + } + + @Override + public void destroy() { + log.info("SpeakerEng.destroy()"); + + } +} diff --git a/src/main/java/com/example/demo/speaker/domain/SpeakerRus.java b/src/main/java/com/example/demo/speaker/domain/SpeakerRus.java new file mode 100644 index 0000000..d6ed18e --- /dev/null +++ b/src/main/java/com/example/demo/speaker/domain/SpeakerRus.java @@ -0,0 +1,21 @@ +package com.example.demo.speaker.domain; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SpeakerRus implements Speaker { + private final Logger log = LoggerFactory.getLogger(SpeakerRus.class); + + @Override + public String say() { + return "Привет"; + } + + public void init() { + log.info("SpeakerRus.init()"); + } + + public void destroy() { + log.info("SpeakerRus.destroy()"); + } +} diff --git a/src/main/java/com/example/demo/speaker/service/SpeakerService.java b/src/main/java/com/example/demo/speaker/service/SpeakerService.java new file mode 100644 index 0000000..db81ba4 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/service/SpeakerService.java @@ -0,0 +1,20 @@ +package com.example.demo.speaker.service; + +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; + +import com.example.demo.speaker.domain.Speaker; + +@Service +public class SpeakerService { + private final ApplicationContext applicationContext; + + public SpeakerService(ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + public String say(String name, String lang) { + final Speaker speaker = (Speaker) applicationContext.getBean(lang); + return String.format("%s, %s!", speaker.say(), name); + } +} diff --git a/src/main/java/com/example/demo/types/api/TypeController.java b/src/main/java/com/example/demo/types/api/TypeController.java new file mode 100644 index 0000000..81f07cf --- /dev/null +++ b/src/main/java/com/example/demo/types/api/TypeController.java @@ -0,0 +1,64 @@ +package com.example.demo.types.api; + +import java.util.List; + +import org.modelmapper.ModelMapper; +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.RestController; + +import com.example.demo.core.configuration.Constants; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.types.service.TypeService; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping(Constants.API_URL + "/type") +public class TypeController { + private final TypeService typeService; + private final ModelMapper modelMapper; + + public TypeController(TypeService typeService, ModelMapper modelMapper) { + this.typeService = typeService; + this.modelMapper = modelMapper; + } + + private TypeDto toDto(TypeEntity entity) { + return modelMapper.map(entity, TypeDto.class); + } + + private TypeEntity toEntity(TypeDto dto) { + return modelMapper.map(dto, TypeEntity.class); + } + + @GetMapping + public List getAll() { + return typeService.getAll().stream().map(this::toDto).toList(); + } + + @GetMapping("/{id}") + public TypeDto get(@PathVariable(name = "id") Long id) { + return toDto(typeService.get(id)); + } + + @PostMapping + public TypeDto create(@RequestBody @Valid TypeDto dto) { + return toDto(typeService.create(toEntity(dto))); + } + + @PutMapping("/{id}") + public TypeDto update(@PathVariable(name = "id") Long id, @RequestBody TypeDto dto) { + return toDto(typeService.update(id, toEntity(dto))); + } + + @DeleteMapping("/{id}") + public TypeDto delete(@PathVariable(name = "id") Long id) { + return toDto(typeService.delete(id)); + } +} diff --git a/src/main/java/com/example/demo/types/api/TypeDto.java b/src/main/java/com/example/demo/types/api/TypeDto.java new file mode 100644 index 0000000..c559680 --- /dev/null +++ b/src/main/java/com/example/demo/types/api/TypeDto.java @@ -0,0 +1,28 @@ +package com.example.demo.types.api; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.NotBlank; + +public class TypeDto { + private Long id; + @NotBlank + private String name; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/com/example/demo/types/model/TypeEntity.java b/src/main/java/com/example/demo/types/model/TypeEntity.java new file mode 100644 index 0000000..fd90bdb --- /dev/null +++ b/src/main/java/com/example/demo/types/model/TypeEntity.java @@ -0,0 +1,43 @@ +package com.example.demo.types.model; + +import java.util.Objects; + +import com.example.demo.core.model.BaseEntity; + +public class TypeEntity extends BaseEntity { + private String name; + + public TypeEntity() { + super(); + } + + public TypeEntity(Long id, String name) { + super(id); + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + return Objects.hash(id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + final TypeEntity other = (TypeEntity) obj; + return Objects.equals(other.getId(), id) + && Objects.equals(other.getName(), name); + } + +} diff --git a/src/main/java/com/example/demo/types/repository/TypeRepository.java b/src/main/java/com/example/demo/types/repository/TypeRepository.java new file mode 100644 index 0000000..1c29ea2 --- /dev/null +++ b/src/main/java/com/example/demo/types/repository/TypeRepository.java @@ -0,0 +1,10 @@ +package com.example.demo.types.repository; + +import org.springframework.stereotype.Repository; + +import com.example.demo.core.repository.MapRepository; +import com.example.demo.types.model.TypeEntity; + +@Repository +public class TypeRepository extends MapRepository { +} diff --git a/src/main/java/com/example/demo/types/service/TypeService.java b/src/main/java/com/example/demo/types/service/TypeService.java new file mode 100644 index 0000000..e71b030 --- /dev/null +++ b/src/main/java/com/example/demo/types/service/TypeService.java @@ -0,0 +1,43 @@ +package com.example.demo.types.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.types.repository.TypeRepository; + +@Service +public class TypeService { + private final TypeRepository repository; + + public TypeService(TypeRepository repository) { + this.repository = repository; + } + + public List getAll() { + return repository.getAll(); + } + + public TypeEntity get(Long id) { + return Optional.ofNullable(repository.get(id)) + .orElseThrow(() -> new NotFoundException(id)); + } + + public TypeEntity create(TypeEntity entity) { + return repository.create(entity); + } + + public TypeEntity update(Long id, TypeEntity entity) { + final TypeEntity existsEntity = get(id); + existsEntity.setName(entity.getName()); + return repository.update(existsEntity); + } + + public TypeEntity delete(Long id) { + final TypeEntity existsEntity = get(id); + return repository.delete(existsEntity); + } +} diff --git a/src/main/java/com/example/demo/users/api/UserController.java b/src/main/java/com/example/demo/users/api/UserController.java new file mode 100644 index 0000000..1d00e35 --- /dev/null +++ b/src/main/java/com/example/demo/users/api/UserController.java @@ -0,0 +1,64 @@ +package com.example.demo.users.api; + +import java.util.List; + +import org.modelmapper.ModelMapper; +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.RestController; + +import com.example.demo.core.configuration.Constants; +import com.example.demo.users.model.UserEntity; +import com.example.demo.users.service.UserService; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping(Constants.API_URL + "/user") +public class UserController { + private final UserService userService; + private final ModelMapper modelMapper; + + public UserController(UserService userService, ModelMapper modelMapper) { + this.userService = userService; + this.modelMapper = modelMapper; + } + + private UserDto toDto(UserEntity entity) { + return modelMapper.map(entity, UserDto.class); + } + + private UserEntity toEntity(UserDto dto) { + return modelMapper.map(dto, UserEntity.class); + } + + @GetMapping + public List getAll() { + return userService.getAll().stream().map(this::toDto).toList(); + } + + @GetMapping("/{id}") + public UserDto get(@PathVariable(name = "id") Long id) { + return toDto(userService.get(id)); + } + + @PostMapping + public UserDto create(@RequestBody @Valid UserDto dto) { + return toDto(userService.create(toEntity(dto))); + } + + @PutMapping("/{id}") + public UserDto update(@PathVariable(name = "id") Long id, @RequestBody UserDto dto) { + return toDto(userService.update(id, toEntity(dto))); + } + + @DeleteMapping("/{id}") + public UserDto delete(@PathVariable(name = "id") Long id) { + return toDto(userService.delete(id)); + } +} diff --git a/src/main/java/com/example/demo/users/api/UserDto.java b/src/main/java/com/example/demo/users/api/UserDto.java new file mode 100644 index 0000000..283cc85 --- /dev/null +++ b/src/main/java/com/example/demo/users/api/UserDto.java @@ -0,0 +1,49 @@ +package com.example.demo.users.api; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.NotBlank; + +public class UserDto { + private Long id; + @NotBlank + private String name; + @NotBlank + private String email; + @NotBlank + private String password; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/src/main/java/com/example/demo/users/model/UserEntity.java b/src/main/java/com/example/demo/users/model/UserEntity.java new file mode 100644 index 0000000..de0e140 --- /dev/null +++ b/src/main/java/com/example/demo/users/model/UserEntity.java @@ -0,0 +1,64 @@ +package com.example.demo.users.model; + +import java.util.Objects; + +import com.example.demo.core.model.BaseEntity; + +public class UserEntity extends BaseEntity { + private String name; + private String email; + private String password; + + public UserEntity() { + super(); + } + + public UserEntity(Long id, String name, String email, String password) { + super(id); + this.name = name; + this.email = email; + this.password = password; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public int hashCode() { + return Objects.hash(id, name, email, password); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + final UserEntity other = (UserEntity) obj; + return Objects.equals(other.getId(), id) + && Objects.equals(other.getName(), name) + && Objects.equals(other.getName(), email) + && Objects.equals(other.getName(), password); + } +} diff --git a/src/main/java/com/example/demo/users/repository/UserRepository.java b/src/main/java/com/example/demo/users/repository/UserRepository.java new file mode 100644 index 0000000..dbc0e52 --- /dev/null +++ b/src/main/java/com/example/demo/users/repository/UserRepository.java @@ -0,0 +1,11 @@ +package com.example.demo.users.repository; + +import org.springframework.stereotype.Repository; + +import com.example.demo.core.repository.MapRepository; +import com.example.demo.users.model.UserEntity; + +@Repository +public class UserRepository extends MapRepository { + +} diff --git a/src/main/java/com/example/demo/users/service/UserService.java b/src/main/java/com/example/demo/users/service/UserService.java new file mode 100644 index 0000000..4e5f338 --- /dev/null +++ b/src/main/java/com/example/demo/users/service/UserService.java @@ -0,0 +1,43 @@ +package com.example.demo.users.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.users.model.UserEntity; +import com.example.demo.users.repository.UserRepository; + +@Service +public class UserService { + private final UserRepository repository; + + public UserService(UserRepository repository) { + this.repository = repository; + } + + public List getAll() { + return repository.getAll(); + } + + public UserEntity get(Long id) { + return Optional.ofNullable(repository.get(id)) + .orElseThrow(() -> new NotFoundException(id)); + } + + public UserEntity create(UserEntity entity) { + return repository.create(entity); + } + + public UserEntity update(Long id, UserEntity entity) { + final UserEntity existsEntity = get(id); + existsEntity.setName(entity.getName()); + return repository.update(existsEntity); + } + + public UserEntity delete(Long id) { + final UserEntity existsEntity = get(id); + return repository.delete(existsEntity); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/src/test/java/com/example/demo/CommentServiceTests.java b/src/test/java/com/example/demo/CommentServiceTests.java new file mode 100644 index 0000000..c169d12 --- /dev/null +++ b/src/test/java/com/example/demo/CommentServiceTests.java @@ -0,0 +1,81 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.comments.model.CommentEntity; +import com.example.demo.comments.service.CommentService; +import com.example.demo.core.error.NotFoundException; +import com.example.demo.users.model.UserEntity; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.materials.model.MaterialEntity; + +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +public class CommentServiceTests { + @Autowired + private CommentService commentService; + + @Test + void getTest() { + Assertions.assertThrows(NotFoundException.class, () -> commentService.get(0L)); + } + + @Test + @Order(1) + void createTest() { + HouseEntity ae1 = new HouseEntity(null, null, 122423.00, + "Red Dragon", null, -1); + UserEntity ue1 = new UserEntity(null, "vanya", "vanya@gmail.com", "vanya"); + HouseEntity ae2 = new HouseEntity(null, null, 12.00, + "Vanya", null, -1); + UserEntity ue2 = new UserEntity(null, "baron", "baron@gmail.com", "12345"); + commentService.create(new CommentEntity(null, ae1, ue1, "Digital disigne and very hipe house", null, 3.5)); + commentService.create( + new CommentEntity(null, ae1, ue2, "Maybe is cool, but i don`t like this aria", null, 4.5)); + final CommentEntity last = commentService + .create(new CommentEntity(null, ae2, ue1, "Okey, its okey", null, 2.5)); + Assertions.assertEquals(3, commentService.getAll(0L, 0L).size()); + Assertions.assertEquals(last, commentService.get(3L)); + } + + @Test + @Order(2) + void updateTest() { + final String testName = "TEST"; + final CommentEntity entity = commentService.get(3L); + final String oldName = entity.getDescription(); + final CommentEntity newEntity = commentService.update(3L, new CommentEntity(null, new HouseEntity(null, null, + 122423.00, + "dfdsfds sdf", null, -1), + new UserEntity(null, "admin", "admin@gmail.com", "admin"), testName, null, 5)); + Assertions.assertEquals(3, commentService.getAll(0L, 0L).size()); + Assertions.assertEquals(newEntity, commentService.get(3L)); + Assertions.assertEquals(testName, newEntity.getDescription()); + Assertions.assertNotEquals(oldName, newEntity.getDescription()); + } + + @Test + @Order(3) + void deleteTest() { + commentService.delete(3L); + Assertions.assertEquals(2, commentService.getAll(0L, 0L).size()); + final CommentEntity last = commentService.get(2L); + Assertions.assertEquals(2L, last.getId()); + + final CommentEntity newEntity = commentService.create(new CommentEntity(null, + new HouseEntity(null, new TypeEntity(null, "Однокомнатная"), + 122423.00, + "dfdsfds sdf", + new MaterialEntity(null, "Ульяновск"), -1), + new UserEntity(null, "admin", "admin@gmail.com", "admin"), "Cool", null, 4)); + Assertions.assertEquals(3, commentService.getAll(0L, 0L).size()); + Assertions.assertEquals(4L, newEntity.getId()); + } +} diff --git a/src/test/java/com/example/demo/HouseServiceTests.java b/src/test/java/com/example/demo/HouseServiceTests.java new file mode 100644 index 0000000..46db281 --- /dev/null +++ b/src/test/java/com/example/demo/HouseServiceTests.java @@ -0,0 +1,73 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.houses.model.HouseEntity; +import com.example.demo.houses.service.HouseService; +import com.example.demo.materials.model.MaterialEntity; + +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +public class HouseServiceTests { + @Autowired + private HouseService lineService; + + @Test + void getTest() { + Assertions.assertThrows(NotFoundException.class, () -> lineService.get(0L)); + } + + @Test + @Order(1) + void createTest() { + lineService.create(new HouseEntity(null, new TypeEntity(null, "Дача"), 122423.00, + "dfdsfds sdf", new MaterialEntity(null, "Кирпич"), 5)); + lineService.create(new HouseEntity(null, new TypeEntity(null, "Вилла"), 122423.00, + "dfdsfds sdf", new MaterialEntity(null, "Камень"), 5)); + final HouseEntity last = lineService + .create(new HouseEntity(null, new TypeEntity(null, "Дом"), 122423.00, + "dfdsfds sdf", new MaterialEntity(null, "Кирпич"), 5)); + Assertions.assertEquals(3, lineService.getAll(0L, 0L).size()); + Assertions.assertEquals(last, lineService.get(3L)); + } + + @Test + @Order(2) + void updateTest() { + final String testName = "TEST"; + final HouseEntity entity = lineService.get(3L); + final String oldName = entity.getName(); + final HouseEntity newEntity = lineService.update(3L, + new HouseEntity(1L, new TypeEntity(null, "name"), + 0.00, testName, + new MaterialEntity(null, "name"), 5)); + Assertions.assertEquals(3, lineService.getAll(0L, 0L).size()); + Assertions.assertEquals(newEntity, lineService.get(3L)); + Assertions.assertEquals(testName, newEntity.getName()); + Assertions.assertNotEquals(oldName, newEntity.getName()); + } + + @Test + @Order(3) + void deleteTest() { + lineService.delete(3L); + Assertions.assertEquals(2, lineService.getAll(0L, 0L).size()); + final HouseEntity last = lineService.get(2L); + Assertions.assertEquals(2L, last.getId()); + + final HouseEntity newEntity = lineService + .create(new HouseEntity(null, new TypeEntity(null, "name"), + 122423.00,"name", + new MaterialEntity(null, "name"), 3.5)); + Assertions.assertEquals(3, lineService.getAll(0L, 0L).size()); + Assertions.assertEquals(4L, newEntity.getId()); + } +} diff --git a/src/test/java/com/example/demo/MaterialServiceTests.java b/src/test/java/com/example/demo/MaterialServiceTests.java new file mode 100644 index 0000000..10782ff --- /dev/null +++ b/src/test/java/com/example/demo/MaterialServiceTests.java @@ -0,0 +1,61 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.materials.model.MaterialEntity; +import com.example.demo.materials.service.MaterialService; + +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +public class MaterialServiceTests { + @Autowired + private MaterialService materialService; + + @Test + void getTest() { + Assertions.assertThrows(NotFoundException.class, () -> materialService.get(0L)); + } + + @Test + @Order(1) + void createTest() { + materialService.create(new MaterialEntity(null, "Ульяновск")); + materialService.create(new MaterialEntity(null, "Москва")); + final MaterialEntity last = materialService.create(new MaterialEntity(null, "Санкт-Петербург")); + Assertions.assertEquals(3, materialService.getAll().size()); + Assertions.assertEquals(last, materialService.get(3L)); + } + + @Test + @Order(2) + void updateTest() { + final String test = "TEST"; + final MaterialEntity entity = materialService.get(3L); + final String oldName = entity.getName(); + final MaterialEntity newEntity = materialService.update(3L, new MaterialEntity(1L, test)); + Assertions.assertEquals(3, materialService.getAll().size()); + Assertions.assertEquals(newEntity, materialService.get(3L)); + Assertions.assertEquals(test, newEntity.getName()); + Assertions.assertNotEquals(oldName, newEntity.getName()); + } + + @Test + @Order(3) + void deleteTest() { + materialService.delete(3L); + Assertions.assertEquals(2, materialService.getAll().size()); + final MaterialEntity last = materialService.get(2L); + Assertions.assertEquals(2L, last.getId()); + + final MaterialEntity newEntity = materialService.create(new MaterialEntity(null, "Санкт-Петербург")); + Assertions.assertEquals(3, materialService.getAll().size()); + Assertions.assertEquals(4L, newEntity.getId()); + } +} diff --git a/src/test/java/com/example/demo/SpeakerSrviceTests.java b/src/test/java/com/example/demo/SpeakerSrviceTests.java new file mode 100644 index 0000000..d8624d3 --- /dev/null +++ b/src/test/java/com/example/demo/SpeakerSrviceTests.java @@ -0,0 +1,38 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.speaker.service.SpeakerService; + +@SpringBootTest +class SpeakerSrviceTests { + @Autowired + SpeakerService speakerService; + + @Test + void testSpeakerRus() { + final String res = speakerService.say("Мир", "ru"); + Assertions.assertEquals("Привет, Мир!", res); + } + + @Test + void testSpeakerEng() { + final String res = speakerService.say("World", "en"); + Assertions.assertEquals("Hello, World!", res); + } + + @Test + void testSpeakerDeu() { + final String res = speakerService.say("Welt", "de"); + Assertions.assertEquals("Hallo, Welt!", res); + } + + @Test + void testSpeakerErrorWired() { + Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> speakerService.say("Мир", "rus")); + } +} diff --git a/src/test/java/com/example/demo/TypeServiceTests.java b/src/test/java/com/example/demo/TypeServiceTests.java new file mode 100644 index 0000000..97eeae0 --- /dev/null +++ b/src/test/java/com/example/demo/TypeServiceTests.java @@ -0,0 +1,61 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.types.model.TypeEntity; +import com.example.demo.types.service.TypeService; + +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +class TypeServiceTests { + @Autowired + private TypeService typeService; + + @Test + void getTest() { + Assertions.assertThrows(NotFoundException.class, () -> typeService.get(0L)); + } + + @Test + @Order(1) + void createTest() { + typeService.create(new TypeEntity(null, "Однокомнатная")); + typeService.create(new TypeEntity(null, "Двухкомнатная")); + final TypeEntity last = typeService.create(new TypeEntity(null, "Трехкомнатная")); + Assertions.assertEquals(3, typeService.getAll().size()); + Assertions.assertEquals(last, typeService.get(3L)); + } + + @Test + @Order(2) + void updateTest() { + final String test = "TEST"; + final TypeEntity entity = typeService.get(3L); + final String oldName = entity.getName(); + final TypeEntity newEntity = typeService.update(3L, new TypeEntity(1L, test)); + Assertions.assertEquals(3, typeService.getAll().size()); + Assertions.assertEquals(newEntity, typeService.get(3L)); + Assertions.assertEquals(test, newEntity.getName()); + Assertions.assertNotEquals(oldName, newEntity.getName()); + } + + @Test + @Order(3) + void deleteTest() { + typeService.delete(3L); + Assertions.assertEquals(2, typeService.getAll().size()); + final TypeEntity last = typeService.get(2L); + Assertions.assertEquals(2L, last.getId()); + + final TypeEntity newEntity = typeService.create(new TypeEntity(null, "Двухкомнатная")); + Assertions.assertEquals(3, typeService.getAll().size()); + Assertions.assertEquals(4L, newEntity.getId()); + } +} diff --git a/src/test/java/com/example/demo/UserServiceTests.java b/src/test/java/com/example/demo/UserServiceTests.java new file mode 100644 index 0000000..667741f --- /dev/null +++ b/src/test/java/com/example/demo/UserServiceTests.java @@ -0,0 +1,61 @@ +package com.example.demo; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.example.demo.core.error.NotFoundException; +import com.example.demo.users.model.UserEntity; +import com.example.demo.users.service.UserService; + +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +public class UserServiceTests { + @Autowired + private UserService userService; + + @Test + void getTest() { + Assertions.assertThrows(NotFoundException.class, () -> userService.get(0L)); + } + + @Test + @Order(1) + void createTest() { + userService.create(new UserEntity(null, "admin", "admin@gmail.com", "admin")); + userService.create(new UserEntity(null, "user1", "user1@gmail.com", "user1")); + final UserEntity last = userService.create(new UserEntity(null, "user2", "user2@gmail.com", "user2")); + Assertions.assertEquals(3, userService.getAll().size()); + Assertions.assertEquals(last, userService.get(3L)); + } + + @Test + @Order(2) + void updateTest() { + final String test = "TEST"; + final UserEntity entity = userService.get(3L); + final String oldName = entity.getName(); + final UserEntity newEntity = userService.update(3L, new UserEntity(1L, test, "user2@gmail.com", "user2")); + Assertions.assertEquals(3, userService.getAll().size()); + Assertions.assertEquals(newEntity, userService.get(3L)); + Assertions.assertEquals(test, newEntity.getName()); + Assertions.assertNotEquals(oldName, newEntity.getName()); + } + + @Test + @Order(3) + void deleteTest() { + userService.delete(3L); + Assertions.assertEquals(2, userService.getAll().size()); + final UserEntity last = userService.get(2L); + Assertions.assertEquals(2L, last.getId()); + + final UserEntity newEntity = userService.create(new UserEntity(null, "admin", "admin", null)); + Assertions.assertEquals(3, userService.getAll().size()); + Assertions.assertEquals(4L, newEntity.getId()); + } +}