Skip to content
 
 

Latest commit

 

History

120 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DaJet Script 2.0 DaJet Metadata at NuGet

Данная версия DaJet Script является продолжением проекта DaJet. В новой версии планируется выполнить рефакторинг существующего кода, сохранив при этом синтаксис и все базовые концепции. Функционал предыдущей версии постепенно переносится в этот репозиторий. Одной из причин является необходимость перевода проекта DaJet на новую версию библиотеки DaJet.Metadata, которая была перписана с нуля.

На данный момент DaJet Script 2.0 уже используется, и вполне успешно, в новых проектах DaJet MCP Server и DaJet Http Server, а также DaJet Studio.

В текущей версии поддерживаются следующие команды:

  • DECLARE или PRIVATE
  • USE
  • SELECT
  • PRINT
  • RETURN
  • JSON (функция сериализации)

Поддерживается работа с базами данных SQL Server и PostgreSQL.

Для выполнения скриптов необходимо подключить в свой проект NuGet-пакет DaJet.Interpreter.

> dotnet add package DaJet.Interpreter --version 1.0.6

Этот пакет имеет следующие зависимости:

  • DaJet.Interpreter (текущий репозиторий)
    • DaJet.Scripting (текущий репозиторий)
      • DaJet.Metadata
        • DaJet.FileLogger
        • DaJet.TypeSystem
        • DaJet.Data
          • Npgsql
          • Microsoft.Data.SqlClient

Пример использования интерпретатора DaJet Script 2.0

Файл скрипта DaJet Script test.djs

DECLARE @КодТовара string -- Входящий параметр скрипта
PRIVATE @Результат array  -- Результат выполнения скрипта

USE 'MS_TEST'
  SELECT Ссылка, Код, Наименование
    INTO @Результат
    FROM Справочник.Номенклатура
   WHERE Код = @КодТовара
END

RETURN @Результат -- или JSON(@Результат)

Код программы на C#

private static readonly JsonSerializerOptions JsonOptions = new()
{
    WriteIndented = true,
    ReferenceHandler = ReferenceHandler.IgnoreCycles,
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};

static void Main()
{
  JsonOptions.Converters.Add(new DictionaryJsonConverter());

  string MS_TEST = "Data Source=server;Initial Catalog=database;Integrated Security=True;Encrypt=False;";

  MetadataProvider.Add("MS_TEST", DataSourceType.SqlServer, in MS_TEST);

  string filePath = Path.Combine(AppContext.BaseDirectory, "scripts", "test.djs");

  Script script = new ScriptBuilder().FromFile(in filePath).Build();

  Interpreter interpreter = new(in script);

  Dictionary<string, object> parameters = new()
  {
    { "КодТовара", "00000002" }
  };

  object value = interpreter.Execute(in parameters);

  string json = JsonSerializer.Serialize(value, value.GetType(), JsonOptions);

  Console.WriteLine(json);
}

About

DaJet Script 2.0

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages