1
0
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:
Anton Titovets
2024-12-30 22:23:05 +03:00
parent 85a2aab117
commit 1b230cc341
10 changed files with 6064 additions and 6040 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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())) }

Binary file not shown.

Binary file not shown.

View File

@@ -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
// Транзакция

View File

@@ -2066,6 +2066,10 @@
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
КонецПроцедуры
Процедура Проверка_Равенство(Знач Значение1, Знач Значение2) Экспорт
ОжидаетЧто(Значение1).Равно(Значение2);
КонецПроцедуры
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).Равно(Истина);
КонецПроцедуры
@@ -2106,9 +2110,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@@ -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"]).Равно(Истина);
КонецПроцедуры

View File

@@ -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
// Транзакция