Skip to content

Commit cb7c0b8

Browse files
committed
Merge remote-tracking branch 'origin/main'
# Conflicts: # pom.xml # src/test/java/com/example/tasklist/config/TestConfig.java # src/test/java/com/example/tasklist/service/impl/TaskServiceImplTest.java # src/test/java/com/example/tasklist/service/impl/UserServiceImplTest.java
2 parents d358a4e + ccdc633 commit cb7c0b8

22 files changed

+564
-16
lines changed

pom.xml

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
<xml-format.version>3.2.2</xml-format.version>
3131
<checkstyle.version>3.2.2</checkstyle.version>
3232
<graphql-java-kickstart.version>15.0.0</graphql-java-kickstart.version>
33-
<graphql-scalars.version>20.2</graphql-scalars.version>
33+
<graphql-java-extended-scalars.version>20.2</graphql-java-extended-scalars.version>
34+
<junit-jupiter.version>5.10.0</junit-jupiter.version>
3435
<mockito.version>5.4.0</mockito.version>
3536
<jacoco.version>0.8.8</jacoco.version>
3637
</properties>
@@ -67,6 +68,22 @@
6768
<artifactId>spring-boot-starter-graphql</artifactId>
6869
</dependency>
6970

71+
<dependency>
72+
<groupId>org.springframework.boot</groupId>
73+
<artifactId>spring-boot-starter-test</artifactId>
74+
<scope>test</scope>
75+
</dependency>
76+
77+
<dependency>
78+
<groupId>org.springframework.boot</groupId>
79+
<artifactId>spring-boot-starter-mail</artifactId>
80+
</dependency>
81+
82+
<dependency>
83+
<groupId>org.springframework.boot</groupId>
84+
<artifactId>spring-boot-starter-freemarker</artifactId>
85+
</dependency>
86+
7087
<dependency>
7188
<groupId>com.graphql-java-kickstart</groupId>
7289
<artifactId>graphql-java-kickstart</artifactId>
@@ -76,7 +93,7 @@
7693
<dependency>
7794
<groupId>com.graphql-java</groupId>
7895
<artifactId>graphql-java-extended-scalars</artifactId>
79-
<version>${graphql-scalars.version}</version>
96+
<version>${graphql-java-extended-scalars.version}</version>
8097
</dependency>
8198

8299
<dependency>
@@ -167,21 +184,16 @@
167184
</dependency>
168185

169186
<dependency>
170-
<groupId>org.mockito</groupId>
171-
<artifactId>mockito-core</artifactId>
172-
<version>${mockito.version}</version>
173-
<scope>test</scope>
174-
</dependency>
175-
176-
<dependency>
177-
<groupId>org.springframework.boot</groupId>
178-
<artifactId>spring-boot-starter-test</artifactId>
187+
<groupId>org.junit.jupiter</groupId>
188+
<artifactId>junit-jupiter-api</artifactId>
189+
<version>${junit-jupiter.version}</version>
179190
<scope>test</scope>
180191
</dependency>
181192

182193
<dependency>
183-
<groupId>junit</groupId>
184-
<artifactId>junit</artifactId>
194+
<groupId>org.mockito</groupId>
195+
<artifactId>mockito-core</artifactId>
196+
<version>${mockito.version}</version>
185197
<scope>test</scope>
186198
</dependency>
187199

@@ -238,7 +250,7 @@
238250
<goal>check</goal>
239251
</goals>
240252
<configuration>
241-
<suppressionsFileExpression>checkstyle-suppressions.xml</suppressionsFileExpression>
253+
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
242254
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
243255
</configuration>
244256
</execution>

src/main/java/com/example/tasklist/TasklistApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.cache.annotation.EnableCaching;
6+
import org.springframework.scheduling.annotation.EnableScheduling;
67
import org.springframework.transaction.annotation.EnableTransactionManagement;
78

89
@SpringBootApplication
910
@EnableTransactionManagement
1011
@EnableCaching
12+
@EnableScheduling
1113
public class TasklistApplication {
1214

1315
public static void main(final String[] args) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.example.tasklist.config;
2+
3+
import com.example.tasklist.service.props.MailProperties;
4+
import lombok.RequiredArgsConstructor;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.mail.javamail.JavaMailSender;
8+
import org.springframework.mail.javamail.JavaMailSenderImpl;
9+
10+
@Configuration
11+
@RequiredArgsConstructor
12+
public class MailConfig {
13+
14+
private final MailProperties mailProperties;
15+
16+
@Bean
17+
public JavaMailSender mailSender() {
18+
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
19+
mailSender.setHost(mailProperties.getHost());
20+
mailSender.setPort(mailProperties.getPort());
21+
mailSender.setUsername(mailProperties.getUsername());
22+
mailSender.setPassword(mailProperties.getPassword());
23+
mailSender.setJavaMailProperties(mailProperties.getProperties());
24+
return mailSender;
25+
}
26+
27+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.example.tasklist.domain;
2+
3+
public enum MailType {
4+
5+
REGISTRATION,
6+
REMINDER
7+
8+
}

src/main/java/com/example/tasklist/repository/TaskRepository.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.data.jpa.repository.Query;
77
import org.springframework.data.repository.query.Param;
88

9+
import java.sql.Timestamp;
910
import java.util.List;
1011

1112
public interface TaskRepository extends JpaRepository<Task, Long> {
@@ -17,6 +18,14 @@ public interface TaskRepository extends JpaRepository<Task, Long> {
1718
""", nativeQuery = true)
1819
List<Task> findAllByUserId(@Param("userId") Long userId);
1920

21+
@Query(value = """
22+
SELECT * FROM tasks t
23+
WHERE t.expiration_date is not null
24+
AND t.expiration_date between :start and :end
25+
""", nativeQuery = true)
26+
List<Task> findAllSoonTasks(@Param("start") Timestamp start,
27+
@Param("end") Timestamp end);
28+
2029
@Modifying
2130
@Query(value = """
2231
INSERT INTO users_tasks (user_id, task_id)

src/main/java/com/example/tasklist/repository/UserRepository.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ public interface UserRepository extends JpaRepository<User, Long> {
1111

1212
Optional<User> findByUsername(String username);
1313

14+
@Query(value = """
15+
SELECT u.id as id,
16+
u.name as name,
17+
u.username as username,
18+
u.password as password
19+
FROM users_tasks ut
20+
JOIN users u ON ut.user_id = u.id
21+
WHERE ut.task_id = :taskId
22+
""", nativeQuery = true)
23+
Optional<User> findTaskAuthor(@Param("taskId") Long taskId);
24+
1425
@Query(value = """
1526
SELECT exists(
1627
SELECT 1
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.example.tasklist.service;
2+
3+
import com.example.tasklist.domain.MailType;
4+
import com.example.tasklist.domain.user.User;
5+
6+
import java.util.Properties;
7+
8+
public interface MailService {
9+
10+
void sendEmail(User user, MailType type, Properties params);
11+
12+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.example.tasklist.service;
2+
3+
public interface Reminder {
4+
5+
void remindForTask();
6+
7+
}

src/main/java/com/example/tasklist/service/TaskService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.example.tasklist.domain.task.Task;
44
import com.example.tasklist.domain.task.TaskImage;
55

6+
import java.time.Duration;
67
import java.util.List;
78

89
public interface TaskService {
@@ -11,6 +12,8 @@ public interface TaskService {
1112

1213
List<Task> getAllByUserId(Long id);
1314

15+
List<Task> getAllSoonTasks(Duration duration);
16+
1417
Task update(Task task);
1518

1619
Task create(Task task, Long userId);

src/main/java/com/example/tasklist/service/UserService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public interface UserService {
1414

1515
boolean isTaskOwner(Long userId, Long taskId);
1616

17+
User getTaskAuthor(Long taskId);
18+
1719
void delete(Long id);
1820

1921
}

0 commit comments

Comments
 (0)