package im.rosetta.database.entity; import im.rosetta.database.CreateUpdateEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; /** * Сущность для буфера сообщений, которые не были доставлены получателю, например, * из-за того, что он был оффлайн, а так же для синхронизации сообщений * между устройствами одного пользователя. * Сообщения в буфере хранятся в виде сериализованных пакетов. * Когда получатель становится онлайн, сервер пытается доставить ему все сообщения из буфера. */ @Entity @Table(name = "packet_buffer") public class Buffer extends CreateUpdateEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "source") private String from; @Column(name = "destination") private String to; @Column(name = "packetId") private int packetId; @Column(name = "packet", columnDefinition = "bytea") private byte[] packet; @Column(name = "timestamp") private Long timestamp; public Long getId() { return id; } public String getFrom() { return from; } public String getTo() { return to; } public byte[] getPacket() { return packet; } public Long getTimestamp() { return timestamp; } public void setFrom(String from) { this.from = from; } public void setTo(String to) { this.to = to; } public void setPacket(byte[] packet) { this.packet = packet; } public void setTimestamp(Long timestamp) { this.timestamp = timestamp; } public int getPacketId() { return packetId; } public void setPacketId(int packetId) { this.packetId = packetId; } }