mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-04 16:46:08 +02:00
Add core models, DTOs, and services for EchoHub chat application
- Created User, Channel, Message, and ServerInfo models with necessary properties. - Added DTOs for user profiles, server information, and message handling. - Implemented JWT authentication service for user login and token generation. - Developed Entity Framework Core DbContext for database interactions. - Introduced SignalR ChatHub for real-time messaging and presence tracking. - Implemented file storage and image to ASCII conversion services. - Set up CORS and middleware for API endpoints. - Created launch settings and development configuration for server and web projects.
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public class Channel
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public string? Topic { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public Guid CreatedByUserId { get; set; }
|
||||
|
||||
public List<Message> Messages { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public class Message
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public required string Content { get; set; }
|
||||
public MessageType Type { get; set; } = MessageType.Text;
|
||||
public string? AttachmentUrl { get; set; }
|
||||
public string? AttachmentFileName { get; set; }
|
||||
public DateTimeOffset SentAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
|
||||
public Guid ChannelId { get; set; }
|
||||
public Channel? Channel { get; set; }
|
||||
|
||||
public Guid SenderUserId { get; set; }
|
||||
public required string SenderUsername { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public enum MessageType
|
||||
{
|
||||
Text,
|
||||
Image,
|
||||
File
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public class ServerInfo
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public required string Url { get; set; }
|
||||
public int OnlineUsers { get; set; }
|
||||
public int TotalChannels { get; set; }
|
||||
public DateTimeOffset RegisteredAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset LastPingAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public bool IsOnline { get; set; } = true;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public class User
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public required string Username { get; set; }
|
||||
public required string PasswordHash { get; set; }
|
||||
public string? DisplayName { get; set; }
|
||||
public string? Bio { get; set; }
|
||||
public string? NicknameColor { get; set; }
|
||||
public string? AvatarAscii { get; set; }
|
||||
public UserStatus Status { get; set; } = UserStatus.Online;
|
||||
public string? StatusMessage { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset LastSeenAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace EchoHub.Core.Models;
|
||||
|
||||
public enum UserStatus
|
||||
{
|
||||
Online,
|
||||
Away,
|
||||
DoNotDisturb,
|
||||
Invisible
|
||||
}
|
||||
Reference in New Issue
Block a user