namespace GB5Shared.Storage
{
///
/// Bind to "StorageConfiguration" config section (values come from HashiCorp Vault, not appsettings).
/// S3 bucket/region/credentials are NOT here — they're per-tenant, sourced dynamically from
/// each tenant DB's own MDBLEVELSETTING row (see AttachmentStorageResolver), not deployment config.
///
public class StorageConfiguration
{
/// Root path for the Network/FileBased provider (UNC or local path).
public string NetworkBasePath { get; set; } = string.Empty;
///
/// Physical path template. Tokens: {ClientId}, {ObjectTypeCode}, {ObjectId},
/// {Year}, {Month}, {AttachmentId}, {Ext}, {DocumentTypeCode}.
/// Default produces year/type/entity partitioned layout.
/// Examples:
/// Flat: {ClientId}/{AttachmentId}{Ext}
/// Partitioned: {ClientId}/{Year}/{Month}/{ObjectTypeCode}/{AttachmentId}{Ext}
/// Per-entity: {ClientId}/{ObjectTypeCode}/{ObjectId}/{AttachmentId}{Ext}
///
public string PathTemplate { get; set; } =
"{ClientId}/{Year}/{ObjectTypeCode}/{ObjectId}/{AttachmentId}{Ext}";
}
}