Доставчиците на данни се създават от класове, които наследяват интерфейса ITfDataProviderAddon
. Tefter.bg сканира за тези класове по време на стартиране и ги прави достъпни за потребителите.
Доставчиците на данни също изискват типизирани компоненти за техния жизнен цикъл.
Типичният процес за създаване и разпространение на доставчик на данни за Tefter.bg включва разработване на Razor библиотечен проект и след това разпространение на резултата като NuGet пакет. За практически примери можете да прегледате проектите на съществуващи доставчици, създадени от нас, като:
CSV Data Provider | GitHub |
MSSQL Data Provider | GitHub |
Обичайната структура на проектите е следната:
Това е обичайната структура на метод на Източник данни и неговите свойства и методи за обратно извикване.
using CsvHelper;
using CsvHelper.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using WebVella.Tefter.Exceptions;
using WebVella.Tefter.Models;
using WebVella.Tefter.Services;
using WebVella.Tefter.Web.Utils;
namespace WebVella.Tefter.DataProviders.Csv;
public class CsvDataProvider : ITfDataProviderAddon
{
public const string ID = "82883b60-197f-4f5a-8c6a-2bec16508816";
public const string NAME = "Csv Data Provider";
public const string DESCRIPTION = "Provide data from CSV formated file";
public const string FLUENT_ICON_NAME = "DocumentTable";
public Guid Id { get; init;} = new Guid(ID);
public string Name { get; init;} = NAME;
public string Description { get; init;} = DESCRIPTION;
public string FluentIconName { get; init;} = FLUENT_ICON_NAME;
/// <summary>
/// Return what types of data types it can process from the data source
/// </summary>
public ReadOnlyCollection<string> GetSupportedSourceDataTypes()
{
//sample only
return new List<string> {
"TEXT", //Keep text on first place as the first place is used as default type
}.AsReadOnly();
}
/// <summary>
/// Returns mapping between source data types and Tefter.bg data types
/// </summary>
public ReadOnlyCollection<TfDatabaseColumnType> GetDatabaseColumnTypesForSourceDataType(
string dataType)
{
return new List<TfDatabaseColumnType>().AsReadOnly();
}
/// <summary>
/// Gets data from the data source
/// </summary>
public ReadOnlyCollection<TfDataProviderDataRow> GetRows(
TfDataProvider provider,
ITfDataProviderSychronizationLog synchLog)
{
return (new List<TfDataProviderDataRow>()).AsReadOnly()
}
/// <summary>
/// Gets the data source schema
/// </summary>
public TfDataProviderSourceSchemaInfo GetDataProviderSourceSchema(TfDataProvider provider)
{
return new TfDataProviderSourceSchemaInfo();
}
/// <summary>
/// Validates its custom settings on user submit
/// </summary>
public List<ValidationError> Validate(string settingsJson)
{
return new List<ValidationError>();
}
}
Това е компонент, който се използва в модалния прозорец за управление на настройки, за да позволи управление на персонализирани настройки на доставчика.
Той трябва да наследи интерфейса ITfScreenRegionComponent<TfDataProviderManageSettingsScreenRegionContext>
.
Това е компонент, който се използва за показване на персонализираните настройки на Източник данни.
Той трябва да наследи интерфейса ITfScreenRegionComponent<TfDataProviderDisplaySettingsScreenRegionContext>
.