using Kbx.Contracts.Generated;

namespace Shared.Excel;

public static class ImportFieldDefinitionFactory
{
    public static ImportFieldDefinition FromKbxField(string key, bool? required = null, string? label = null)
    {
        var field = KbxFieldCatalog.Get(key);
        if (!field.Importable)
            throw new InvalidOperationException($"KBX field '{key}' is not importable.");

        return new ImportFieldDefinition(
            Key: field.Key,
            Label: label ?? field.Label,
            Aliases: field.Aliases,
            DataType: field.DataType,
            Required: required ?? field.Required,
            MaxLength: field.MaxLength,
            Precision: field.Precision,
            Scale: field.Scale,
            LookupEntity: field.LookupEntity,
            Importable: field.Importable,
            Exportable: field.Exportable);
    }
}
