using System.Text;
namespace DataConnection.DB.FoxPro;
///
/// Informazioni di connessione risolte per una sorgente Visual FoxPro / dBase.
/// Una "connessione" FoxPro è semplicemente un percorso sul filesystem:
/// un file .dbc (database container) oppure una cartella di tabelle libere .dbf.
///
public sealed class FoxProConnectionInfo
{
/// Cartella che contiene i file .dbf (e relativi .fpt/.cdx).
public string Folder { get; init; } = string.Empty;
/// Percorso completo del file .dbc, se la sorgente è un database container; altrimenti null.
public string? DbcPath { get; init; }
///
/// Encoding usato per decodificare i campi carattere/memo. Il valore reale è sempre
/// impostato da (default effettivo: code page 1252);
/// qui usiamo Latin1 come placeholder built-in che non richiede il provider code-page.
///
public Encoding Encoding { get; init; } = Encoding.Latin1;
/// Se true, include anche i record marcati come cancellati (default: false).
public bool IncludeDeleted { get; init; }
/// True se la sorgente è un database container (.dbc).
public bool IsContainer => !string.IsNullOrEmpty(DbcPath);
/// Nome leggibile della sorgente (nome del .dbc o della cartella), per messaggi/log.
public string DisplayName => IsContainer
? System.IO.Path.GetFileName(DbcPath!)
: new System.IO.DirectoryInfo(Folder).Name;
}