DevelKit.MessageTemplates.SqlServer
0.1.0
dotnet add package DevelKit.MessageTemplates.SqlServer --version 0.1.0
NuGet\Install-Package DevelKit.MessageTemplates.SqlServer -Version 0.1.0
<PackageReference Include="DevelKit.MessageTemplates.SqlServer" Version="0.1.0" />
<PackageVersion Include="DevelKit.MessageTemplates.SqlServer" Version="0.1.0" />
<PackageReference Include="DevelKit.MessageTemplates.SqlServer" />
paket add DevelKit.MessageTemplates.SqlServer --version 0.1.0
#r "nuget: DevelKit.MessageTemplates.SqlServer, 0.1.0"
#:package DevelKit.MessageTemplates.SqlServer@0.1.0
#addin nuget:?package=DevelKit.MessageTemplates.SqlServer&version=0.1.0
#tool nuget:?package=DevelKit.MessageTemplates.SqlServer&version=0.1.0
<img src="https://raw.githubusercontent.com/develmax/DevelKit.MessageTemplates/main/assets/logo.png" alt="DevelKit.MessageTemplates icon" width="96" height="96" />
DevelKit.MessageTemplates
Русский | English
Шаблонизатор сообщений для .NET: поля сущностей, переходы по связям, условия, форматы .NET и каталог именованных параметров. Подходит для SMS, email, push и других текстовых уведомлений. Библиотека подготавливает текст. Отправку и правила конкретного канала реализует приложение.
Пакеты
| Пакет | Платформа | Назначение |
|---|---|---|
| DevelKit.MessageTemplates | net452; net10.0 | Парсер, форматтер, каталог параметров, кеш и независимый план чтения |
| DevelKit.MessageTemplates.DynamicsCrm | net452 | Адаптер Dynamics CRM 2015 SDK 7.0.0.1 |
| DevelKit.MessageTemplates.SqlServer | net10.0 | Генерация SQL Server и параметризованного DbCommand |
Адаптеры зависят от ядра и подключаются отдельно. Ядро не имеет внешних runtime-зависимостей. Текущая версия: 0.1.0. Пакеты уже доступны на NuGet.org по ссылкам в таблице выше. Стабильная версия 0.1.0 подготовлена в исходниках и локальных пакетах. До её отдельной публикации на NuGet.org доступна 0.1.0-preview.3.
Быстрый пример без базы
using DevelKit.MessageTemplates;
var template = TextTemplateParser.Parse(
"Здравствуйте, {{person:name}}! Встреча {{meeting:startsAt(dd.MM.yyyy HH:mm)}}.");
// Значения можно получить из уже загруженных данных приложения.
var text = TextTemplateFormatter.Format(template, parameter =>
parameter.FieldName switch
{
"name" => "Анна",
"startsAt" => new DateTime(2026, 9, 15, 14, 30, 0),
_ => null
});
Console.WriteLine(text);
// Здравствуйте, Анна! Встреча 15.09.2026 14:30.
Парсер и форматтер можно использовать независимо от адаптеров. Для загрузки данных по шаблону TemplateEngine строит план и передаёт его ITemplateDataProvider. Допустимые сущности, поля и связи задаются через TemplateSchema или собственный IQueryMetadata.
Язык шаблонов
Поле: {{person:name}}
Формат: {{meeting:startsAt(dd.MM.yyyy HH:mm)}}
Связь: {{meeting:guest{{person:name}}}}
Условие: {{meeting:if[[isOnline = true ? meetingUrl ; address]]}}
Именованный параметр раскрывается перед разбором текста:
var aliases = new[]
{
new TemplateAlias("{{meeting:date}}", "{{meeting:startsAt(dd.MM.yyyy)}}")
};
var expanded = TemplateAliases.Expand("Ждём вас {{meeting:date}}.", aliases);
Каталог можно загружать через ITemplateAliasRepository и кешировать с CachedTemplateAliases. После изменения каталога вызывайте Invalidate. В этой версии ключ псевдонима имеет вид {{entity:field}} без пробелов внутри имени сущности или поля.
Сборка и проверка
Для полного запуска нужны Windows, PowerShell 7, .NET SDK 10 и .NET Framework 4.8 для запуска приложений net452. Зависимости восстанавливаются с nuget.org.
./build.ps1
Скрипт собирает решение в Release, выполняет проверки ядра, SQL и CRM, запускает два примера и создаёт три пакета в artifacts. Примеры и тесты работают без серверов и учётных данных. GitHub Actions запускает тот же сценарий на Windows.
Документация и примеры
- Синтаксис и этапы обработки.
- Как читать код.
- Поведение и ограничения.
- CRM-адаптер.
- Пример SQL и пример CRM SDK.
- Сборка и выпуск пакетов.
- Участие в разработке.
Границы применения
Шаблон выбирает данные только в пределах схемы, разрешённой приложением. Проверка SQL-идентификаторов не заменяет контроль доступа. Значения SQL передаются через DbParameter. Обе ветви if загружаются до выбора результата.
Парсер мягкий: нераспознанные фрагменты могут остаться текстом. HTML-кодирование, лимиты длины, стоимость SMS и часовые пояса задаёт приложение. План рассчитан на одну строку данных, без циклов по коллекциям. Живые CRM и SQL Server, CRM plugin sandbox и современный Dataverse не входят в автоматическую проверку.
Лицензия
MIT. Copyright (c) 2026 Maksim Moiseev (develmax).
Разрешены модификация и коммерческое использование. При распространении сохраняйте уведомление об авторских правах и текст лицензии.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DevelKit.MessageTemplates (>= 0.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 100 | 9/8/2026 |
| 0.1.0-preview.3 | 61 | 9/8/2026 |