Files
Vanadium-2023-2025-Leak-Server/Classes/DBs/DBClasses/RoomConsumablesDBClasses.cs
T
skidfire fe3468c65d yikes,
2026-09-06 19:59:27 -04:00

66 lines
2.6 KiB
C#

using LiteDB;
using System;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RoomConsumablesDBClasses
{
/// <summary>
/// A creator-made consumable for sale in a room's shop.
/// The client identifies these purely by GUID, so the GUID is the primary key.
/// </summary>
public class RoomConsumable
{
[BsonId]
public Guid RoomConsumableId { get; set; } = Guid.NewGuid();
public long RoomId { get; set; }
public long CreatorPlayerId { get; set; }
public string Name { get; set; } = "";
public string? Description { get; set; }
public string? ImageName { get; set; }
public int Price { get; set; }
/// <summary>Room currency the item is priced in; null means it is priced in tokens.</summary>
public Guid? CurrencyId { get; set; }
/// <summary>Soft delete — players may still hold deleted items in inventory.</summary>
public bool IsDeleted { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
/// <summary>One player's stack of one consumable.</summary>
public class RoomConsumableOwnership
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public Guid RoomConsumableId { get; set; }
public int Count { get; set; }
/// <summary>
/// Client-generated token guarding consume/purchase races. The client adopts the
/// NewConcurrencyCode it sent regardless of what the response echoes back, so this
/// must be stored verbatim or the next consume fails with ConcurrencyCodeMismatch.
/// </summary>
public Guid ConcurrencyCode { get; set; } = Guid.NewGuid();
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
/// <summary>
/// A player's balance of one room currency. Vanadium has no room-currency registry yet
/// (see RoomConsumablesController.PurchaseCurrency), so this exists to make
/// currency-priced purchases work once one is added.
/// </summary>
public class RoomCurrencyBalance
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public Guid CurrencyId { get; set; }
public int Balance { get; set; }
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
}
}