Синхронизация сообщений для офлайн пользователей в группах

This commit is contained in:
RoyceDa
2026-02-23 17:30:15 +02:00
parent b0f0986e0d
commit 773659c2ba
4 changed files with 133 additions and 43 deletions

View File

@@ -3,15 +3,20 @@ package im.rosetta.database.entity;
import java.util.ArrayList;
import java.util.List;
import im.rosetta.database.CreateUpdateEntity;
import im.rosetta.database.converters.StringListConverter;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import im.rosetta.database.CreateUpdateEntity;
import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OrderColumn;
import jakarta.persistence.Table;
/**
@@ -28,13 +33,20 @@ public class Group extends CreateUpdateEntity {
@Column(name = "groupId")
private String groupId;
@Convert(converter = StringListConverter.class)
@Column(name = "membersPublicKeys", nullable = false, columnDefinition = "TEXT")
private List<String> membersPublicKeys = new ArrayList<>();
@Convert(converter = StringListConverter.class)
@Column(name = "bannedPublicKeys", nullable = false, columnDefinition = "TEXT")
private List<String> bannedPublicKeys = new ArrayList<>();
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "group_members", joinColumns = @JoinColumn(name = "group_id"))
@Column(name = "public_key", nullable = false, columnDefinition = "TEXT")
@OrderColumn(name = "order_index")
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
private List<String> membersPublicKeys = new ArrayList<>();
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "group_banned", joinColumns = @JoinColumn(name = "group_id"))
@Column(name = "public_key", nullable = false, columnDefinition = "TEXT")
@OrderColumn(name = "order_index")
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
private List<String> bannedPublicKeys = new ArrayList<>();
public Long getId() {
return id;