mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-05-31 23:20:02 +02:00
SQLite: Закрытие соединения и начало тестов
This commit is contained in:
parent
f67675686d
commit
4ddfb35e2d
File diff suppressed because it is too large
Load Diff
@ -3,12 +3,14 @@ mod methods;
|
||||
use addin1c::{name, Variant};
|
||||
use crate::core::getset;
|
||||
use rusqlite::{Connection};
|
||||
use serde_json::json;
|
||||
|
||||
// МЕТОДЫ КОМПОНЕНТЫ -------------------------------------------------------------------------------
|
||||
|
||||
// Синонимы
|
||||
pub const METHODS: &[&[u16]] = &[
|
||||
name!("Connect"),
|
||||
name!("Close"),
|
||||
name!("Execute"),
|
||||
|
||||
];
|
||||
@ -17,7 +19,8 @@ pub const METHODS: &[&[u16]] = &[
|
||||
pub fn get_params_amount(num: usize) -> usize {
|
||||
match num {
|
||||
0 => 0,
|
||||
1 => 2,
|
||||
1 => 0,
|
||||
2 => 2,
|
||||
_ => 0,
|
||||
}
|
||||
}
|
||||
@ -28,11 +31,9 @@ pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn
|
||||
|
||||
match num {
|
||||
|
||||
0 =>{
|
||||
Box::new(obj.initialize())
|
||||
},
|
||||
|
||||
1 => {
|
||||
0 => Box::new(obj.initialize()),
|
||||
1 => Box::new(obj.close_connection()),
|
||||
2 => {
|
||||
|
||||
let query = params[0].get_string().unwrap_or("".to_string());
|
||||
let params_json = params[1].get_string().unwrap_or("".to_string());
|
||||
@ -91,6 +92,23 @@ impl AddIn {
|
||||
self.connection.as_ref()
|
||||
}
|
||||
|
||||
pub fn close_connection(&mut self) -> String {
|
||||
if let Some(conn) = self.connection.take() {
|
||||
match conn.close() {
|
||||
Ok(_) => json!({"result": true}).to_string(),
|
||||
Err((_conn, err)) => json!({
|
||||
"result": false,
|
||||
"error": err.to_string()
|
||||
}).to_string(),
|
||||
}
|
||||
} else {
|
||||
json!({
|
||||
"result": false,
|
||||
"error": "Connection already closed"
|
||||
}).to_string()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_field_ptr(&self, index: usize) -> *const dyn getset::ValueType {
|
||||
match index {
|
||||
0 => &self.connection_string as &dyn getset::ValueType as *const _,
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -55,7 +55,7 @@
|
||||
// Произвольный - Объект коннектора или структура с информацией об ошибке
|
||||
Функция СоздатьПодключение(Знач База = "") Экспорт
|
||||
|
||||
Если Строка(ТипЗнч(База)) = "AddIn.OPI_SQLite.Main" Тогда
|
||||
Если ЭтоКоннектор(База) Тогда
|
||||
Возврат База;
|
||||
КонецЕсли;
|
||||
|
||||
@ -72,6 +72,31 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Закрыть подключение !NOCLI
|
||||
// Явно закрывает переданное соединение
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект компоненты с открытым соединением - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат закрытия соединения
|
||||
Функция ЗакрытьПодключение(Знач Соединение) Экспорт
|
||||
|
||||
Если ЭтоКоннектор(Соединение) Тогда
|
||||
|
||||
Результат = Соединение.Close();
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Новый Структура("result,error", Ложь, "It's not a connection");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выполнить запрос SQL
|
||||
// Выполняет произвольный SQL запрос
|
||||
//
|
||||
@ -84,12 +109,14 @@
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса, Знач Параметры = "", Знач ФорсироватьРезультат = Ложь,
|
||||
Знач Соединение = "") Экспорт
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса
|
||||
, Знач Параметры = ""
|
||||
, Знач ФорсироватьРезультат = Ложь
|
||||
, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса);
|
||||
|
||||
@ -220,4 +247,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоКоннектор(Знач Значение)
|
||||
|
||||
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SQLite.Main";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -2212,6 +2212,18 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
SQLite_СоздатьПодключение(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -16051,6 +16063,38 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
|
||||
Процедура SQLite_СоздатьПодключение(ПараметрыФункции)
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("sqlite");
|
||||
|
||||
БазаНаДиске = OPI_SQLite.СоздатьПодключение(ИВФ);
|
||||
БазаВПамяти = OPI_SQLite.СоздатьПодключение();
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(БазаНаДиске, "СоздатьПодключение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Компонента(БазаНаДиске, "AddIn.OPI_SQLite.Main");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(БазаВПамяти, "СоздатьПодключение (im)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Компонента(БазаВПамяти, "AddIn.OPI_SQLite.Main");
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьПодключение(БазаНаДиске);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Закрытие, "ЗакрытьПодключение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Закрытие);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite");
|
||||
КонецПопытки
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -53,6 +53,7 @@
|
||||
Разделы.Вставить("VK" , 5);
|
||||
Разделы.Вставить("Viber" , 5);
|
||||
Разделы.Вставить("Twitter" , 4);
|
||||
Разделы.Вставить("SQLite" , 5);
|
||||
Разделы.Вставить("YandexDisk" , 5);
|
||||
Разделы.Вставить("GoogleWorkspace", 2);
|
||||
Разделы.Вставить("GoogleCalendar" , 5);
|
||||
@ -85,6 +86,7 @@
|
||||
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Viber" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("SQLite" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||
@ -130,6 +132,7 @@
|
||||
Метрика = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
SQLite = "SQLite";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@ -264,6 +267,7 @@
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСОбъектами" , "Работа с объектами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "TC_Клиент" , "TCP Клиент" , TCP);
|
||||
НовыйТест(ТаблицаТестов, "SQLL_ОсновныеМетоды" , "Основные методы" , SQLite);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
@ -2058,6 +2062,14 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_Компонента(Знач Результат, Знач ИмяТипа) Экспорт
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -2094,9 +2106,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_SQLite.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_SQLite.os
|
||||
// Lib: SQLite
|
||||
// CLI: sqlite
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
// Произвольный - Объект коннектора или структура с информацией об ошибке
|
||||
Функция СоздатьПодключение(Знач База = "") Экспорт
|
||||
|
||||
Если Строка(ТипЗнч(База)) = "AddIn.OPI_SQLite.Main" Тогда
|
||||
Если ЭтоКоннектор(База) Тогда
|
||||
Возврат База;
|
||||
КонецЕсли;
|
||||
|
||||
@ -72,6 +72,31 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Закрыть подключение !NOCLI
|
||||
// Явно закрывает переданное соединение
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект компоненты с открытым соединением - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат закрытия соединения
|
||||
Функция ЗакрытьПодключение(Знач Соединение) Экспорт
|
||||
|
||||
Если ЭтоКоннектор(Соединение) Тогда
|
||||
|
||||
Результат = Соединение.Close();
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Новый Структура("result,error", Ложь, "It's not a connection");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выполнить запрос SQL
|
||||
// Выполняет произвольный SQL запрос
|
||||
//
|
||||
@ -84,12 +109,14 @@
|
||||
// ТекстЗапроса - Строка - Текст запроса к базе - sql
|
||||
// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params
|
||||
// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force
|
||||
// Соединение - Строка - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса, Знач Параметры = "", Знач ФорсироватьРезультат = Ложь,
|
||||
Знач Соединение = "") Экспорт
|
||||
Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса
|
||||
, Знач Параметры = ""
|
||||
, Знач ФорсироватьРезультат = Ложь
|
||||
, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса);
|
||||
|
||||
@ -220,4 +247,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоКоннектор(Знач Значение)
|
||||
|
||||
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SQLite.Main";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -210,19 +210,35 @@
|
||||
#Область Процессоры
|
||||
|
||||
Функция СформироватьТекстSelect(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстInsert(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстUpdate(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстDelete(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстCreate(Знач Схема)
|
||||
@ -246,7 +262,9 @@
|
||||
|
||||
ОписанияКолонок = СтрСоединить(МассивОписанийКолонок, "," + Символы.ПС);
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, )
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ОписанияКолонок);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -255,7 +273,7 @@
|
||||
Процедура ПроверитьОбязательныеПоляСхемы(Схема, Знач Поля)
|
||||
|
||||
МассивОбязательныхПолей = СтрСоединить(Поля, ",");
|
||||
МассивОтсутствующих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(МассивОбязательныхПолей);
|
||||
МассивОтсутствующих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(Схема, МассивОбязательныхПолей);
|
||||
|
||||
Если ЗначениеЗаполнено(МассивОтсутствующих) Тогда
|
||||
ВызватьИсключение "Отсутствуют необходимые поля схемы: " + СтрСоединить(МассивОтсутствующих, ", ");
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -53,6 +53,7 @@
|
||||
Разделы.Вставить("VK" , 5);
|
||||
Разделы.Вставить("Viber" , 5);
|
||||
Разделы.Вставить("Twitter" , 4);
|
||||
Разделы.Вставить("SQLite" , 5);
|
||||
Разделы.Вставить("YandexDisk" , 5);
|
||||
Разделы.Вставить("GoogleWorkspace", 2);
|
||||
Разделы.Вставить("GoogleCalendar" , 5);
|
||||
@ -85,6 +86,7 @@
|
||||
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Viber" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("SQLite" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||
@ -130,6 +132,7 @@
|
||||
Метрика = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
SQLite = "SQLite";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@ -264,6 +267,7 @@
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСОбъектами" , "Работа с объектами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "TC_Клиент" , "TCP Клиент" , TCP);
|
||||
НовыйТест(ТаблицаТестов, "SQLL_ОсновныеМетоды" , "Основные методы" , SQLite);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
@ -2058,6 +2062,14 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_Компонента(Знач Результат, Знач ИмяТипа) Экспорт
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -2212,6 +2212,18 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
SQLite_СоздатьПодключение(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -16051,6 +16063,38 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
|
||||
Процедура SQLite_СоздатьПодключение(ПараметрыФункции)
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("sqlite");
|
||||
|
||||
БазаНаДиске = OPI_SQLite.СоздатьПодключение(ИВФ);
|
||||
БазаВПамяти = OPI_SQLite.СоздатьПодключение();
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(БазаНаДиске, "СоздатьПодключение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Компонента(БазаНаДиске, "AddIn.OPI_SQLite.Main");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(БазаВПамяти, "СоздатьПодключение (im)", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Компонента(БазаВПамяти, "AddIn.OPI_SQLite.Main");
|
||||
|
||||
Закрытие = OPI_SQLite.ЗакрытьПодключение(БазаНаДиске);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Закрытие, "ЗакрытьПодключение", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Закрытие);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite");
|
||||
КонецПопытки
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user