mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-04-07 07:10:01 +02:00
SQLite: Доработка добавления расширения
This commit is contained in:
parent
55a602e49a
commit
cb8540b43c
1
.gitignore
vendored
1
.gitignore
vendored
@ -24,3 +24,4 @@ target/
|
||||
addin.zip
|
||||
src/addins/tcp_server/OPI_TCPServer.zip
|
||||
src/addins/sqlite/OPI_SQLite.zip
|
||||
*.db3
|
||||
|
13190
service/dictionaries/en.json
vendored
13190
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
BIN
src/en/OInt/addins/OPI_SQLite.zip
vendored
BIN
src/en/OInt/addins/OPI_SQLite.zip
vendored
Binary file not shown.
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_SQLite.zip
vendored
BIN
src/ru/OInt/addins/OPI_SQLite.zip
vendored
Binary file not shown.
75
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
75
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
@ -122,19 +122,22 @@
|
||||
// в виде `{'blob':Base64 строка}`
|
||||
// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^
|
||||
// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки
|
||||
// При выполнении нескольких запросов в рамках одного соединения, расширения лучше подключить один раз при помощи функции `ПодключитьРасширение`
|
||||
//
|
||||
// Параметры:
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// Расширения - Соответствие Из КлючИЗначение - Расширения: Ключ > путь или данные расширения, Значение > точка входа - exts
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса
|
||||
, Знач Параметры = ""
|
||||
, Знач ФорсироватьРезультат = Ложь
|
||||
, Знач Соединение = "") Экспорт
|
||||
, Знач Соединение = ""
|
||||
, Знач Расширения = Неопределено) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
@ -145,6 +148,22 @@
|
||||
Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Расширения) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Расширения, "Некорректная коллекция расширений!");
|
||||
|
||||
Для Каждого Расширение Из Расширения Цикл
|
||||
|
||||
ПодключениеРасширения = ПодключитьРасширение(Расширение.Ключ, Расширение.Значение, Коннектор);
|
||||
|
||||
Если Не ПодключениеРасширения["result"] Тогда
|
||||
Возврат ПодключениеРасширения;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
@ -153,6 +172,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Подключить расширение !NOCLI
|
||||
// Подключает расширение SQLite для указанного соединения
|
||||
//
|
||||
// Примечание:
|
||||
// Соединение активно только в рамках соединения. При каждом новом соединении его необходимо подключать заново
|
||||
// Аналогично использованию параметра `Расширения` (`exts` в CLI) функции `ВыполнитьЗапросSQL`
|
||||
//
|
||||
// Параметры:
|
||||
// Расширение - Строка, ДвоичныеДанные - Данные или путь к расширению - ext
|
||||
// ТочкаВхода - Строка - Точка входа расширения, если необходима - point
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат подключения расширения
|
||||
Функция ПодключитьРасширение(Знач Расширение, Знач ТочкаВхода = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Расширение_ = Расширение;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Расширение_);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТочкаВхода);
|
||||
|
||||
Временный = Расширение_["Временный"];
|
||||
ПутьКФайлу = Расширение_["Путь"];
|
||||
Коннектор = ОткрытьСоединение(Соединение);
|
||||
|
||||
Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.LoadExtension(ПутьКФайлу, ТочкаВхода);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Если Временный Тогда
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
Исключение
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ORM
|
||||
|
74
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
74
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@ -2266,12 +2266,25 @@
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
База = ПолучитьИмяВременногоФайла("sqlite");
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База);
|
||||
OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext", ПараметрыТеста);
|
||||
|
||||
SQLite_ОткрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ЗакрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ВыполнитьЗапросSQL(ПараметрыТеста);
|
||||
SQLite_ЭтоКоннектор(ПараметрыТеста);
|
||||
SQLite_ПодключитьРасширение(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(База);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -17005,8 +17018,24 @@
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Transaction)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
|
||||
// С расширением
|
||||
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
СоответствиеРасширений = Новый Соответствие;
|
||||
СоответствиеРасширений.Вставить(Расширение, ТочкаВхода);
|
||||
|
||||
ТекстЗапроса = "SELECT uuid4();";
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение, СоответствиеРасширений);
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1); // SKIP
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
|
||||
// END
|
||||
|
||||
@ -17350,6 +17379,49 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ПодключитьРасширение(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(База);
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(Расширение, ТочкаВхода, Соединение);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("dll");
|
||||
КопироватьФайл(Расширение, ИВФ);
|
||||
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(ИВФ, ТочкаВхода, Соединение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (путь)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(Новый ДвоичныеДанные(ИВФ), ТочкаВхода, Соединение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (двоичные)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL("select uuid4();", , , Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (проверка)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
|
||||
|
||||
Результат = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (закрытие)", "SQLite");
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла расширение", "SQLite");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область PostgreSQL
|
||||
|
@ -19050,6 +19050,27 @@
|
||||
Картинка = Новый ДвоичныеДанные(ФайлКартинки);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Результат["data"][0]["data"]["blob"]).Размер(), Картинка.Размер());
|
||||
|
||||
// С расширением
|
||||
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
СоответствиеРасширений = Новый Соответствие;
|
||||
СоответствиеРасширений.Вставить(Расширение, ТочкаВхода);
|
||||
|
||||
ТекстЗапроса = "SELECT uuid4();";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, ""));
|
||||
Опции.Вставить("db" , ИВФ);
|
||||
Опции.Вставить("exts", СоответствиеРасширений);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
УдалитьФайлы(ФайлКартинки);
|
||||
|
@ -2196,9 +2196,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@ -325,6 +325,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьФайлНаДиске(Значение, Знач Расширение = Неопределено) Экспорт
|
||||
|
||||
СтруктураВозврата = Новый Структура("Путь,Временный", "", Ложь);
|
||||
ЗначениеСтрокой = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||
ЗначениеФайл = Новый Файл(ЗначениеСтрокой);
|
||||
|
||||
Если ЗначениеФайл.Существует() Тогда
|
||||
|
||||
СтруктураВозврата.Вставить("Путь", ЗначениеФайл.ПолноеИмя);
|
||||
|
||||
Иначе
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Значение, Истина);
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
Путь = ПолучитьИмяВременногоФайла(Расширение);
|
||||
Значение.Записать(Путь);
|
||||
|
||||
СтруктураВозврата.Вставить("Путь" , Путь);
|
||||
СтруктураВозврата.Вставить("Временный", Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Значение = СтруктураВозврата;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -122,19 +122,22 @@
|
||||
// в виде `{'blob':Base64 строка}`
|
||||
// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^
|
||||
// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки
|
||||
// При выполнении нескольких запросов в рамках одного соединения, расширения лучше подключить один раз при помощи функции `ПодключитьРасширение`
|
||||
//
|
||||
// Параметры:
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// Расширения - Соответствие Из КлючИЗначение - Расширения: Ключ > путь или данные расширения, Значение > точка входа - exts
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса
|
||||
, Знач Параметры = ""
|
||||
, Знач ФорсироватьРезультат = Ложь
|
||||
, Знач Соединение = "") Экспорт
|
||||
, Знач Соединение = ""
|
||||
, Знач Расширения = Неопределено) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
@ -145,6 +148,22 @@
|
||||
Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Расширения) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Расширения, "Некорректная коллекция расширений!");
|
||||
|
||||
Для Каждого Расширение Из Расширения Цикл
|
||||
|
||||
ПодключениеРасширения = ПодключитьРасширение(Расширение.Ключ, Расширение.Значение, Коннектор);
|
||||
|
||||
Если Не ПодключениеРасширения["result"] Тогда
|
||||
Возврат ПодключениеРасширения;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
@ -153,6 +172,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Подключить расширение !NOCLI
|
||||
// Подключает расширение SQLite для указанного соединения
|
||||
//
|
||||
// Примечание:
|
||||
// Расширение активно только в рамках соединения. При каждом новом соединении его необходимо подключать заново
|
||||
// Аналогично использованию параметра `Расширения` (`exts` в CLI) функции `ВыполнитьЗапросSQL`
|
||||
//
|
||||
// Параметры:
|
||||
// Расширение - Строка, ДвоичныеДанные - Данные или путь к расширению - ext
|
||||
// ТочкаВхода - Строка - Точка входа расширения, если необходима - point
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат подключения расширения
|
||||
Функция ПодключитьРасширение(Знач Расширение, Знач ТочкаВхода = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Расширение_ = Расширение;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Расширение_);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТочкаВхода);
|
||||
|
||||
Временный = Расширение_["Временный"];
|
||||
ПутьКФайлу = Расширение_["Путь"];
|
||||
Коннектор = ОткрытьСоединение(Соединение);
|
||||
|
||||
Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.LoadExtension(ПутьКФайлу, ТочкаВхода);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Если Временный Тогда
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
Исключение
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ORM
|
||||
|
@ -325,6 +325,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьФайлНаДиске(Значение, Знач Расширение = Неопределено) Экспорт
|
||||
|
||||
СтруктураВозврата = Новый Структура("Путь,Временный", "", Ложь);
|
||||
ЗначениеСтрокой = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||
ЗначениеФайл = Новый Файл(ЗначениеСтрокой);
|
||||
|
||||
Если ЗначениеФайл.Существует() Тогда
|
||||
|
||||
СтруктураВозврата.Вставить("Путь", ЗначениеФайл.ПолноеИмя);
|
||||
|
||||
Иначе
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Значение, Истина);
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
Путь = ПолучитьИмяВременногоФайла(Расширение);
|
||||
Значение.Записать(Путь);
|
||||
|
||||
СтруктураВозврата.Вставить("Путь" , Путь);
|
||||
СтруктураВозврата.Вставить("Временный", Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Значение = СтруктураВозврата;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -2266,12 +2266,25 @@
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
База = ПолучитьИмяВременногоФайла("sqlite");
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База);
|
||||
OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext", ПараметрыТеста);
|
||||
|
||||
SQLite_ОткрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ЗакрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ВыполнитьЗапросSQL(ПараметрыТеста);
|
||||
SQLite_ЭтоКоннектор(ПараметрыТеста);
|
||||
SQLite_ПодключитьРасширение(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(База);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -17005,8 +17018,24 @@
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Transaction)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
|
||||
// С расширением
|
||||
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
СоответствиеРасширений = Новый Соответствие;
|
||||
СоответствиеРасширений.Вставить(Расширение, ТочкаВхода);
|
||||
|
||||
ТекстЗапроса = "SELECT uuid4();";
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение, СоответствиеРасширений);
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1); // SKIP
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
|
||||
// END
|
||||
|
||||
@ -17350,6 +17379,49 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ПодключитьРасширение(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(База);
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(Расширение, ТочкаВхода, Соединение);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("dll");
|
||||
КопироватьФайл(Расширение, ИВФ);
|
||||
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(ИВФ, ТочкаВхода, Соединение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (путь)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Результат = OPI_SQLite.ПодключитьРасширение(Новый ДвоичныеДанные(ИВФ), ТочкаВхода, Соединение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (двоичные)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL("select uuid4();", , , Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (проверка)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
|
||||
|
||||
Результат = OPI_SQLite.ЗакрытьСоединение(Соединение);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПодключитьРасширение (закрытие)", "SQLite");
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла расширение", "SQLite");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область PostgreSQL
|
||||
|
@ -19050,6 +19050,27 @@
|
||||
Картинка = Новый ДвоичныеДанные(ФайлКартинки);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Результат["data"][0]["data"]["blob"]).Размер(), Картинка.Размер());
|
||||
|
||||
// С расширением
|
||||
|
||||
Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
СоответствиеРасширений = Новый Соответствие;
|
||||
СоответствиеРасширений.Вставить(Расширение, ТочкаВхода);
|
||||
|
||||
ТекстЗапроса = "SELECT uuid4();";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, ""));
|
||||
Опции.Вставить("db" , ИВФ);
|
||||
Опции.Вставить("exts", СоответствиеРасширений);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
УдалитьФайлы(ФайлКартинки);
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user