diff --git a/Inventory/ProductAdapter.cs b/Inventory/ProductAdapter.cs new file mode 100644 index 0000000..3144733 --- /dev/null +++ b/Inventory/ProductAdapter.cs @@ -0,0 +1,59 @@ +using Core.Blueprint.Mongo; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using System.Text.Json.Serialization; + +namespace Core.Adapters.Lib.Inventory +{ + /// + /// Represents the possible statuses of a product. + /// + public enum ProductStatus + { + Active, + Inactive, + Discontinued + } + + [CollectionAttributeName("Product")] + public class ProductAdapter : Document + { + /// + /// Gets or sets the foreign key to the owning Tenant. + /// + [BsonElement("tenantId")] + [JsonPropertyName("tenantId")] + public string TenantId { get; set; } = null!; + + /// + /// Gets or sets the name of the product. + /// + [BsonElement("productName")] + [JsonPropertyName("productName")] + public string ProductName { get; set; } = null!; + + /// + /// Gets or sets the description of the product. + /// + [BsonElement("description")] + [JsonPropertyName("description")] + public string Description { get; set; } = null!; + + /// + /// Gets or sets the status of the product. Stored as a string in MongoDB. + /// + [BsonElement("status")] + [JsonPropertyName("status")] + [BsonRepresentation(BsonType.String)] + public ProductStatus Status { get; set; } + + /// + /// Gets or sets the list of Tag Ids associated with this product. + /// This follows the standard MongoDB practice for many-to-many relationships + /// by embedding an array of references. + /// + [BsonElement("tagIds")] + [JsonPropertyName("tagIds")] + public List TagIds { get; set; } = new List(); + } +}