Clean up legacy outgoing attachment duplicates
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class Chat
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public string? ExternalId { get; set; }
|
||||
public ChatKind Kind { get; set; } = ChatKind.MaxDialog;
|
||||
public string Title { get; set; } = "MAX chat";
|
||||
public string? AvatarUrl { get; set; }
|
||||
public string? LastMessagePreview { get; set; }
|
||||
public DateTimeOffset? LastMessageAt { get; set; }
|
||||
public int UnreadCount { get; set; }
|
||||
public bool IsPinned { get; set; }
|
||||
public bool IsMuted { get; set; }
|
||||
public bool IsArchived { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public ICollection<Message> Messages { get; set; } = new List<Message>();
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public enum ChatKind
|
||||
{
|
||||
Direct = 0,
|
||||
Group = 1,
|
||||
Channel = 2,
|
||||
MaxDialog = 3
|
||||
}
|
||||
|
||||
public enum MessageDirection
|
||||
{
|
||||
Incoming = 0,
|
||||
Outgoing = 1,
|
||||
System = 2
|
||||
}
|
||||
|
||||
public enum MessageDeliveryState
|
||||
{
|
||||
Sending = 0,
|
||||
Sent = 1,
|
||||
Delivered = 2,
|
||||
Read = 3,
|
||||
Failed = 4
|
||||
}
|
||||
|
||||
public enum AttachmentKind
|
||||
{
|
||||
File = 0,
|
||||
VoiceNote = 1,
|
||||
Image = 2,
|
||||
Video = 3,
|
||||
Sticker = 4,
|
||||
Gif = 5,
|
||||
Contact = 6
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class MaxAccountState
|
||||
{
|
||||
public int Id { get; set; } = 1;
|
||||
public string PhoneNumber { get; set; } = "";
|
||||
public string Status { get; set; } = "NotStarted";
|
||||
public bool IsAuthorized { get; set; }
|
||||
public string? LastUrl { get; set; }
|
||||
public string? LastError { get; set; }
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class Message
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public Guid ChatId { get; set; }
|
||||
public Chat? Chat { get; set; }
|
||||
public string? ExternalId { get; set; }
|
||||
public string? SenderExternalId { get; set; }
|
||||
public string? SenderName { get; set; }
|
||||
public MessageDirection Direction { get; set; }
|
||||
public string? Text { get; set; }
|
||||
public DateTimeOffset SentAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset? EditedAt { get; set; }
|
||||
public DateTimeOffset? DeletedAt { get; set; }
|
||||
public Guid? ReplyToMessageId { get; set; }
|
||||
public string? ForwardedFrom { get; set; }
|
||||
public MessageDeliveryState DeliveryState { get; set; } = MessageDeliveryState.Sent;
|
||||
public string? Error { get; set; }
|
||||
public string? MediaAlbumId { get; set; }
|
||||
public ICollection<MessageAttachment> Attachments { get; set; } = new List<MessageAttachment>();
|
||||
public ICollection<MessageReaction> Reactions { get; set; } = new List<MessageReaction>();
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class MessageAttachment
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public Guid MessageId { get; set; }
|
||||
public Message? Message { get; set; }
|
||||
public string? ExternalId { get; set; }
|
||||
public string OriginalFileName { get; set; } = "file";
|
||||
public string StorageFileName { get; set; } = "";
|
||||
public string ContentType { get; set; } = "application/octet-stream";
|
||||
public long FileSizeBytes { get; set; }
|
||||
public string? Sha256 { get; set; }
|
||||
public AttachmentKind Kind { get; set; } = AttachmentKind.File;
|
||||
public int SortOrder { get; set; }
|
||||
public string? RemoteUrl { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class MessageReaction
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public Guid MessageId { get; set; }
|
||||
public Message? Message { get; set; }
|
||||
public string Emoji { get; set; } = "";
|
||||
public string ActorKey { get; set; } = "self";
|
||||
public string? ActorName { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class PushDevice
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public Guid UserId { get; set; }
|
||||
public User? User { get; set; }
|
||||
public string FirebaseToken { get; set; } = "";
|
||||
public string Platform { get; set; } = "android";
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class User
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public string DisplayName { get; set; } = "QMAX Owner";
|
||||
public string? PhoneNumber { get; set; }
|
||||
public string? AvatarPath { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public ICollection<UserSession> Sessions { get; set; } = new List<UserSession>();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace QMax.Api.Data.Entities;
|
||||
|
||||
public sealed class UserSession
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
public Guid UserId { get; set; }
|
||||
public User? User { get; set; }
|
||||
public string DeviceName { get; set; } = "Android";
|
||||
public string RefreshTokenHash { get; set; } = "";
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset LastSeenAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset ExpiresAt { get; set; } = DateTimeOffset.UtcNow.AddDays(90);
|
||||
public DateTimeOffset? RevokedAt { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user