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}"; } }