using Microsoft.Extensions.Logging;
using SharpChat.Connections;

namespace SharpChat.Sessions;

public class Session(long id, string secret, string userId, ILogger logger, Connection conn) {
    public long Id { get; } = id;
    public string Secret { get; } = secret;
    public string UserId { get; } = userId;
    public ILogger Logger { get; } = logger;
    public Connection Connection { get; internal set; } = conn;
    public DateTimeOffset LastHeartbeat { get; private set; } = DateTimeOffset.UtcNow;

    public bool IsSuspended
        => NullConnection.IsNull(Connection);

    public void Heartbeat() {
        LastHeartbeat = DateTimeOffset.UtcNow;
    }
}