Добавка Източник данни

Въведение

Доставчиците на данни се създават от класове, които наследяват интерфейса ITfDataProviderAddon. Tefter.bg сканира за тези класове по време на стартиране и ги прави достъпни за потребителите. Доставчиците на данни също изискват типизирани компоненти за техния жизнен цикъл.

Типичният процес за създаване и разпространение на доставчик на данни за Tefter.bg включва разработване на Razor библиотечен проект и след това разпространение на резултата като NuGet пакет. За практически примери можете да прегледате проектите на съществуващи доставчици, създадени от нас, като:

CSV Data Provider GitHub
MSSQL Data Provider GitHub

Проект на Източник данни

Обичайната структура на проектите е следната:

Data provider project

Клас на Източник данни

Това е обичайната структура на метод на Източник данни и неговите свойства и методи за обратно извикване.

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>();
	}
}

Компонент ManageSettings

Това е компонент, който се използва в модалния прозорец за управление на настройки, за да позволи управление на персонализирани настройки на доставчика. Той трябва да наследи интерфейса ITfScreenRegionComponent<TfDataProviderManageSettingsScreenRegionContext>.

Компонент ViewSettings

Това е компонент, който се използва за показване на персонализираните настройки на Източник данни. Той трябва да наследи интерфейса ITfScreenRegionComponent<TfDataProviderDisplaySettingsScreenRegionContext>.