70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
|
using System;
|
|||
|
using System.ComponentModel.DataAnnotations;
|
|||
|
using Microsoft.EntityFrameworkCore;
|
|||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|||
|
using EllieBot.Db;
|
|||
|
using EllieBot.Modules.Games.Fish;
|
|||
|
|
|||
|
namespace EllieBot.Modules.Games.Fish.Db;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Represents a fishing item owned by a user.
|
|||
|
/// </summary>
|
|||
|
public class UserFishItem
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// The unique identifier for this user fish item.
|
|||
|
/// </summary>
|
|||
|
[Key]
|
|||
|
public int Id { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The ID of the user who owns this item.
|
|||
|
/// </summary>
|
|||
|
public ulong UserId { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The type of the fishing item.
|
|||
|
/// </summary>
|
|||
|
public FishItemType ItemType { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The ID of the fishing item.
|
|||
|
/// </summary>
|
|||
|
public int ItemId { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Indicates whether the item is currently equipped by the user.
|
|||
|
/// </summary>
|
|||
|
public bool IsEquipped { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The number of uses left for this item. Null means unlimited uses.
|
|||
|
/// </summary>
|
|||
|
public int? UsesLeft { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The date and time when this item expires. Null means the item doesn't expire.
|
|||
|
/// </summary>
|
|||
|
public DateTime? ExpiresAt { get; set; }
|
|||
|
|
|||
|
|
|||
|
public int? ExpiryFromNowInMinutes()
|
|||
|
{
|
|||
|
if (ExpiresAt is null)
|
|||
|
return null;
|
|||
|
|
|||
|
return (int)(ExpiresAt.Value - DateTime.UtcNow).TotalMinutes;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Entity configuration for UserFishItem.
|
|||
|
/// </summary>
|
|||
|
public class UserFishItemConfiguration : IEntityTypeConfiguration<UserFishItem>
|
|||
|
{
|
|||
|
public void Configure(EntityTypeBuilder<UserFishItem> builder)
|
|||
|
{
|
|||
|
builder.HasIndex(x => new { x.UserId });
|
|||
|
}
|
|||
|
}
|