dev add notification entity
Test Workflow / test (push) Successful in 2s

This commit is contained in:
vladp
2026-04-01 15:32:36 +07:00
parent 549d248cb7
commit 051f1ef5d4
21 changed files with 543 additions and 28 deletions
@@ -0,0 +1,40 @@
package ru.soune.nocopy.repository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import ru.soune.nocopy.entity.notification.Notification;
import ru.soune.nocopy.entity.notification.NotificationStatus;
import ru.soune.nocopy.entity.notification.NotificationType;
import ru.soune.nocopy.entity.user.User;
import java.util.List;
public interface NotificationRepository extends JpaRepository<Notification, Long> {
Page<Notification> findByUser(User user, Pageable pageable);
Page<Notification> findByUserAndNotificationTypeIn(User user, List<NotificationType> types, Pageable pageable);
Page<Notification> findByUserAndStatusIn(User user, List<NotificationStatus> statuses, Pageable pageable);
Page<Notification> findByUserAndNotificationTypeInAndStatusIn(User user, List<NotificationType> types,
List<NotificationStatus> statuses,
Pageable pageable);
List<Notification> findTop5ByUserAndStatusOrderByCreatedAtDesc(User user, NotificationStatus status);
long countByUserAndStatus(User user, NotificationStatus status);
@Modifying
@Query("UPDATE Notification n SET n.status = :newStatus WHERE n.id IN :ids AND n.user = :user AND " +
"n.status = :oldStatus")
int updateStatus(@Param("ids") List<Long> ids,
@Param("user") User user,
@Param("oldStatus") NotificationStatus oldStatus,
@Param("newStatus") NotificationStatus newStatus);
Page<Notification> getNotificationsByUser(User user, Pageable pageable);
}