You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
SQLite: Blob fix
This commit is contained in:
12048
service/dictionaries/en.json
vendored
12048
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -155,9 +155,11 @@ fn process_blobs(json_array: &mut Vec<Value>) -> ParamsFromIter<Vec<SqlValue>> {
|
||||
|
||||
if let Some(Value::String(blob_str)) = obj.get("blob") {
|
||||
|
||||
match general_purpose::STANDARD.decode(blob_str) {
|
||||
let cleaned_base64 = blob_str.replace(&['\n', '\r', ' '][..], "");
|
||||
|
||||
match general_purpose::STANDARD.decode(cleaned_base64) {
|
||||
Ok(decoded_blob) => result.push(SqlValue::Blob(decoded_blob)),
|
||||
Err(_) => result.push(SqlValue::Blob([].to_vec()))
|
||||
Err(e) => result.push(SqlValue::Blob(e.to_string().into_bytes()))
|
||||
}
|
||||
} else { result.push(SqlValue::Blob([].to_vec())) }
|
||||
|
||||
|
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.
17
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
17
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2217,6 +2217,7 @@
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
|
||||
SQLite_ОткрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ЗакрытьСоединение(ПараметрыТеста);
|
||||
@@ -16122,6 +16123,9 @@
|
||||
Процедура SQLite_ВыполнитьЗапросSQL(ПараметрыФункции)
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("sqlite");
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ);
|
||||
|
||||
@@ -16153,12 +16157,12 @@
|
||||
|VALUES (?1, ?2, ?3, ?4, ?5, ?6);";
|
||||
|
||||
МассивПараметров = Новый Массив;
|
||||
МассивПараметров.Добавить("Vitaly"); // TEXT
|
||||
МассивПараметров.Добавить(25); // INTEGER
|
||||
МассивПараметров.Добавить(1000.12); // REAL
|
||||
МассивПараметров.Добавить(Истина); // BOOL
|
||||
МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME
|
||||
МассивПараметров.Добавить(ПолучитьДвоичныеДанныеИзСтроки("Hello world")); // BLOB
|
||||
МассивПараметров.Добавить("Vitaly"); // TEXT
|
||||
МассивПараметров.Добавить(25); // INTEGER
|
||||
МассивПараметров.Добавить(1000.12); // REAL
|
||||
МассивПараметров.Добавить(Истина); // BOOL
|
||||
МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME
|
||||
МассивПараметров.Добавить(Картинка); // BLOB
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);
|
||||
|
||||
@@ -16173,6 +16177,7 @@
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Select)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Результат["data"][0]["data"]["blob"]).Размер(), Картинка.Размер()); // SKIP
|
||||
|
||||
// Транзакция
|
||||
|
||||
|
@@ -2066,6 +2066,10 @@
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_Равенство(Знач Значение1, Знач Значение2) Экспорт
|
||||
ОжидаетЧто(Значение1).Равно(Значение2);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
КонецПроцедуры
|
||||
@@ -2106,9 +2110,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -2066,6 +2066,10 @@
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_Равенство(Знач Значение1, Знач Значение2) Экспорт
|
||||
ОжидаетЧто(Значение1).Равно(Значение2);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
КонецПроцедуры
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -2217,6 +2217,7 @@
|
||||
Процедура SQLL_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
|
||||
SQLite_ОткрытьСоединение(ПараметрыТеста);
|
||||
SQLite_ЗакрытьСоединение(ПараметрыТеста);
|
||||
@@ -16122,6 +16123,9 @@
|
||||
Процедура SQLite_ВыполнитьЗапросSQL(ПараметрыФункции)
|
||||
|
||||
ИВФ = ПолучитьИмяВременногоФайла("sqlite");
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ);
|
||||
|
||||
@@ -16153,12 +16157,12 @@
|
||||
|VALUES (?1, ?2, ?3, ?4, ?5, ?6);";
|
||||
|
||||
МассивПараметров = Новый Массив;
|
||||
МассивПараметров.Добавить("Vitaly"); // TEXT
|
||||
МассивПараметров.Добавить(25); // INTEGER
|
||||
МассивПараметров.Добавить(1000.12); // REAL
|
||||
МассивПараметров.Добавить(Истина); // BOOL
|
||||
МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME
|
||||
МассивПараметров.Добавить(ПолучитьДвоичныеДанныеИзСтроки("Hello world")); // BLOB
|
||||
МассивПараметров.Добавить("Vitaly"); // TEXT
|
||||
МассивПараметров.Добавить(25); // INTEGER
|
||||
МассивПараметров.Добавить(1000.12); // REAL
|
||||
МассивПараметров.Добавить(Истина); // BOOL
|
||||
МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME
|
||||
МассивПараметров.Добавить(Картинка); // BLOB
|
||||
|
||||
Результат = OPI_SQLite.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);
|
||||
|
||||
@@ -16173,6 +16177,7 @@
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Select)", "SQLite"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Результат["data"][0]["data"]["blob"]).Размер(), Картинка.Размер()); // SKIP
|
||||
|
||||
// Транзакция
|
||||
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user