From abd50a63ed49c898f67affd7925cc48429916825 Mon Sep 17 00:00:00 2001
From: DyCTaTOR <125912249+DyCTaTOR@users.noreply.github.com>
Date: Sun, 14 Apr 2024 17:58:09 +0400
Subject: [PATCH] directions1

---
 .../directions/model/DirectionsEntity.java    | 15 ++++++++--
 .../repository/DirectionsRepository.java      | 29 ++++++++++++++++---
 src/main/resources/application.properties     | 19 ++++++++++++
 .../demo/{ => java}/DepartmentsTests.java     |  2 +-
 .../demo/{ => java}/DirectionsTests.java      |  2 +-
 .../demo/{ => java}/EntrysDataTests.java      |  2 +-
 .../example/demo/{ => java}/NewsTests.java    |  2 +-
 .../demo/resources/application.properties     | 14 +++++++++
 8 files changed, 75 insertions(+), 10 deletions(-)
 rename src/test/java/com/example/demo/{ => java}/DepartmentsTests.java (96%)
 rename src/test/java/com/example/demo/{ => java}/DirectionsTests.java (96%)
 rename src/test/java/com/example/demo/{ => java}/EntrysDataTests.java (96%)
 rename src/test/java/com/example/demo/{ => java}/NewsTests.java (96%)
 create mode 100644 src/test/java/com/example/demo/resources/application.properties

diff --git a/src/main/java/com/example/demo/directions/model/DirectionsEntity.java b/src/main/java/com/example/demo/directions/model/DirectionsEntity.java
index b3fe39d..ff6833a 100644
--- a/src/main/java/com/example/demo/directions/model/DirectionsEntity.java
+++ b/src/main/java/com/example/demo/directions/model/DirectionsEntity.java
@@ -5,18 +5,29 @@ import java.util.Objects;
 import com.example.demo.core.model.BaseEntity;
 import com.example.demo.department.model.DepartmentEntity;
 
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "directions")
 public class DirectionsEntity extends BaseEntity {
+    @Column(nullable = false, unique = true, length = 9)
     private String code;
+    @Column(nullable = false, unique = true, length = 80)
     private String name;
+    @ManyToOne
+    @JoinColumn(name = "departmentId", nullable = false)
     private DepartmentEntity department;
+    @Column(nullable = false, unique = true, length = 80)
     private String things;
 
     public DirectionsEntity() {
-        super();
     }
 
     public DirectionsEntity(Long id, String code, String name, DepartmentEntity department, String things) {
-        super(id);
         this.code = code;
         this.name = name;
         this.department = department;
diff --git a/src/main/java/com/example/demo/directions/repository/DirectionsRepository.java b/src/main/java/com/example/demo/directions/repository/DirectionsRepository.java
index 145a579..ed84f20 100644
--- a/src/main/java/com/example/demo/directions/repository/DirectionsRepository.java
+++ b/src/main/java/com/example/demo/directions/repository/DirectionsRepository.java
@@ -1,10 +1,31 @@
 package com.example.demo.directions.repository;
 
-import org.springframework.stereotype.Repository;
+import java.util.Optional;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
 
-import com.example.demo.core.repository.MapRepository;
 import com.example.demo.directions.model.DirectionsEntity;
 
-@Repository
-public class DirectionsRepository extends MapRepository<DirectionsEntity> {
+public interface DirectionsRepository extends CrudRepository<DirectionsEntity, Long> {
+    Optional<OrderEntity> findOneByUserIdAndId(long userId, long id);
+
+    List<OrderEntity> findByUserId(long userId);
+
+    List<OrderEntity> findByUserIdAndTypeId(long userId, long typeId);
+
+    // select
+    // tpe.name,
+    // coalesce(sum(order.price), 0),
+    // coalesce(sum(order.count), 0)
+    // from types as tpe
+    // left join orders as order on tpe.id = order.type_id and order.user_id = ?
+    // group by tpe.name order by tpe.id
+    @Query("select "
+            + "t as type, "
+            + "coalesce(sum(o.price), 0) as totalPrice, "
+            + "coalesce(sum(o.count), 0) as totalCount "
+            + "from TypeEntity t left join OrderEntity o on o.type = t and o.user.id = ?1 "
+            + "group by t order by t.id")
+    List<OrderGrouped> getOrdersTotalByType(long userId);
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b13789..62ab433 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,20 @@
+# Server
+spring.main.banner-mode=off
+server.port=8080
 
+# Logger settings
+# Available levels are: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
+logging.level.com.example.demo=DEBUG
+
+# JPA Settings
+spring.datasource.url=jdbc:h2:file:./data
+spring.datasource.username=sa
+spring.datasource.password=password
+spring.datasource.driver-class-name=org.h2.Driver
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.open-in-view=false
+# spring.jpa.show-sql=true
+# spring.jpa.properties.hibernate.format_sql=true
+
+# H2 console
+spring.h2.console.enabled=true
\ No newline at end of file
diff --git a/src/test/java/com/example/demo/DepartmentsTests.java b/src/test/java/com/example/demo/java/DepartmentsTests.java
similarity index 96%
rename from src/test/java/com/example/demo/DepartmentsTests.java
rename to src/test/java/com/example/demo/java/DepartmentsTests.java
index e7b36a2..0e79f9b 100644
--- a/src/test/java/com/example/demo/DepartmentsTests.java
+++ b/src/test/java/com/example/demo/java/DepartmentsTests.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.java;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
diff --git a/src/test/java/com/example/demo/DirectionsTests.java b/src/test/java/com/example/demo/java/DirectionsTests.java
similarity index 96%
rename from src/test/java/com/example/demo/DirectionsTests.java
rename to src/test/java/com/example/demo/java/DirectionsTests.java
index fc7ec19..c5b1535 100644
--- a/src/test/java/com/example/demo/DirectionsTests.java
+++ b/src/test/java/com/example/demo/java/DirectionsTests.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.java;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
diff --git a/src/test/java/com/example/demo/EntrysDataTests.java b/src/test/java/com/example/demo/java/EntrysDataTests.java
similarity index 96%
rename from src/test/java/com/example/demo/EntrysDataTests.java
rename to src/test/java/com/example/demo/java/EntrysDataTests.java
index d8476bc..ccd1739 100644
--- a/src/test/java/com/example/demo/EntrysDataTests.java
+++ b/src/test/java/com/example/demo/java/EntrysDataTests.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.java;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
diff --git a/src/test/java/com/example/demo/NewsTests.java b/src/test/java/com/example/demo/java/NewsTests.java
similarity index 96%
rename from src/test/java/com/example/demo/NewsTests.java
rename to src/test/java/com/example/demo/java/NewsTests.java
index 4942f5a..b370768 100644
--- a/src/test/java/com/example/demo/NewsTests.java
+++ b/src/test/java/com/example/demo/java/NewsTests.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.java;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
diff --git a/src/test/java/com/example/demo/resources/application.properties b/src/test/java/com/example/demo/resources/application.properties
new file mode 100644
index 0000000..d5f355c
--- /dev/null
+++ b/src/test/java/com/example/demo/resources/application.properties
@@ -0,0 +1,14 @@
+# Server
+spring.main.banner-mode=off
+
+# Logger settings
+# Available levels are: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
+logging.level.com.example.demo=DEBUG
+
+# JPA Settings
+spring.datasource.url=jdbc:h2:mem:testdb
+spring.datasource.username=sa
+spring.datasource.password=password
+spring.datasource.driver-class-name=org.h2.Driver
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.open-in-view=false
\ No newline at end of file