You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
PG: Нормализация параметров
This commit is contained in:
12993
service/dictionaries/en.json
vendored
12993
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -146,7 +146,7 @@ fn process_object(object: &Map<String, Value>) -> Result<Box<dyn ToSql + Sync>,
|
||||
Box::new(map) as Box<dyn ToSql + Sync>
|
||||
})
|
||||
.ok_or_else(|| "Invalid object for HSTORE".to_string()),
|
||||
"TIMESTAMP" | "TIMESTAMP WITH TIME ZONE" => value
|
||||
"TIMESTAMP" | "TIMESTAMP WITH TIME ZONE" | "TIMESTAMP_WITH_TIME_ZONE" => value
|
||||
.as_i64()
|
||||
.map(|v| {
|
||||
let duration = UNIX_EPOCH + std::time::Duration::from_millis(v as u64 * 1000);
|
||||
@@ -247,10 +247,7 @@ fn rows_to_json(rows: Vec<postgres::Row>) -> String {
|
||||
result.push(Value::Object(row_map));
|
||||
};
|
||||
|
||||
json!({
|
||||
"result": true,
|
||||
"data": result
|
||||
}).to_string()
|
||||
json!({ "result": true, "data": result }).to_string()
|
||||
}
|
||||
|
||||
fn format_json_error(error: &str) -> String {
|
||||
|
BIN
src/en/OInt/addins/OPI_PostgreSQL.zip
vendored
BIN
src/en/OInt/addins/OPI_PostgreSQL.zip
vendored
Binary file not shown.
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_PostgreSQL.zip
vendored
BIN
src/ru/OInt/addins/OPI_PostgreSQL.zip
vendored
Binary file not shown.
130
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
130
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -38,6 +38,7 @@
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
//@skip-check constructor-function-return-section
|
||||
//@skip-check doc-comment-collection-item-type
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
#Использовать "../../tools"
|
||||
@@ -195,7 +196,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
@@ -211,7 +212,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
@@ -227,7 +228,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
@@ -244,6 +245,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить типы колонок таблицы
|
||||
// Получает массив типов колонок таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив, Соответствие Из КлючИЗначение - Массив типов или информация об ошибке
|
||||
Функция ПолучитьТипыКолонокТаблицы(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
ИнформацияОТаблице = ПолучитьИнформациюОТаблице(Таблица, Соединение);
|
||||
|
||||
Если Не ИнформацияОТаблице["result"] Тогда
|
||||
Возврат ИнформацияОТаблице;
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов = Новый Массив;
|
||||
|
||||
Для Каждого Колонка Из ИнформацияОТаблице Цикл
|
||||
|
||||
ТекущийТип = Колонка["data_type"];
|
||||
ТекущийТип = Строка(вРег(ТекущийТип));
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, " ", "_");
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, """CHAR""", "OLDCHAR");
|
||||
|
||||
Если СтрНачинаетсяС(ТекущийТип, "CHAR") Тогда
|
||||
ТекущийТип = "CHAR";
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов.Добавить(ТекущийТип);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивТипов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать таблицу
|
||||
// Создает пустую таблицу в базе
|
||||
//
|
||||
@@ -253,7 +292,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_PostgreSQL, Таблица, СтруктураКолонок, Соединение);
|
||||
@@ -377,6 +416,49 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Нормализовать набор параметров
|
||||
// Преобразует массив значений параметров в массив структур описаний для передачи в запрос
|
||||
//
|
||||
// Параметры:
|
||||
// МассивЗначений - Массив Из Произвольный - Массив значений параметров запроса - values
|
||||
// МассивТипов - Массив Из Строка - Массив типов колонок. См. ПолучитьТипыКолонокТаблицы - types
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив Из Соответствие - Нормализованный набор параметров для запроса
|
||||
Функция НормализоватьНаборПараметров(Знач МассивЗначений, Знач МассивТипов) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивЗначений);
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивТипов);
|
||||
|
||||
СоответствиеТипов = ПолучитьСоответствиеТипов();
|
||||
ИтоговыйМассив = Новый Массив;
|
||||
ГраницаТипов = МассивТипов.ВГраница();
|
||||
|
||||
Для Н = 0 По МассивЗначений.ВГраница() Цикл
|
||||
|
||||
Если Н > ГраницаТипов Тогда
|
||||
Прервать;
|
||||
Конецесли;
|
||||
|
||||
ТекущийТип = вРег(МассивТипов[Н]);
|
||||
ТекущееЗначение = МассивЗначений[Н];
|
||||
ОписаниеТипа = СоответствиеТипов.Получить(ТекущийТип);
|
||||
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ТекущееЗначение = ОписаниеТипа.ПривестиЗначение(ТекущееЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ТекущееОписание = Новый Соответствие;
|
||||
ТекущееОписание.Вставить(ТекущийТип, ТекущееЗначение);
|
||||
|
||||
ИтоговыйМассив.Добавить(ТекущееОписание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ИтоговыйМассив;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра записей
|
||||
// Получает структуру шаблон для фильтрации записей в запросах ORM
|
||||
//
|
||||
@@ -505,4 +587,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСоответствиеТипов()
|
||||
|
||||
ОписаниеBool = Новый ОписаниеТипов("Булево");
|
||||
ОписаниеOldchar = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
|
||||
ОписаниеI = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, 0, ДопустимыйЗнак.Любой));
|
||||
ОписаниеU = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, 0, ДопустимыйЗнак.Неотрицательный));
|
||||
ОписаниеF = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, , ДопустимыйЗнак.Любой));
|
||||
ОписаниеString = Новый ОписаниеТипов("Строка");
|
||||
|
||||
СоответствиеТипов = Новый Соответствие();
|
||||
СоответствиеТипов.Вставить("BOOL" , ОписаниеBool);
|
||||
СоответствиеТипов.Вставить("""CHAR""" , ОписаниеOldchar);
|
||||
СоответствиеТипов.Вставить("OLDCHAR" , ОписаниеOldchar);
|
||||
СоответствиеТипов.Вставить("SMALLINT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("SMALLSERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("INT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("SERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("BIGINT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("BIGSERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP WITH TIME ZONE", ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP_WITH_TIME_ZONE", ОписаниеI);
|
||||
СоответствиеТипов.Вставить("OID" , ОписаниеU);
|
||||
СоответствиеТипов.Вставить("REAL" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("DOUBLE PRECISION" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("DOUBLE_PRECISION" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("VARCHAR" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("TEXT" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("CHAR" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("CITEXT" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("NAME" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LTREE" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LTXTQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("INET" , ОписаниеString);
|
||||
|
||||
Возврат СоответствиеТипов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
16
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
16
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
@@ -165,7 +165,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
@@ -188,7 +188,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_SQLite, Таблица, СтруктураКолонок, Соединение);
|
||||
@@ -209,7 +209,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_SQLite, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
@@ -232,7 +232,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьЗаписи(Знач Таблица
|
||||
, Знач Поля = "*"
|
||||
, Знач Фильтры = ""
|
||||
@@ -255,7 +255,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ОбновитьЗаписи(Знач Таблица, Знач СтруктураЗначений, Знач Фильтры = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_SQLite, Таблица, СтруктураЗначений, Фильтры, Соединение);
|
||||
@@ -272,7 +272,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение);
|
||||
@@ -288,7 +288,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение);
|
||||
@@ -304,7 +304,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение);
|
||||
|
@@ -17386,7 +17386,7 @@
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОТаблице", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -17407,7 +17407,7 @@
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Новый Структура("OLDCHAR" , "A"));
|
||||
СтруктураЗаписи.Вставить("char_field" , Новый Структура("OLDCHAR" , 1));
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
|
||||
|
@@ -2148,9 +2148,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -38,6 +38,7 @@
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
//@skip-check constructor-function-return-section
|
||||
//@skip-check doc-comment-collection-item-type
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
// #Использовать "../../tools"
|
||||
@@ -195,7 +196,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
@@ -211,7 +212,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
@@ -227,7 +228,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
@@ -244,6 +245,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить типы колонок таблицы
|
||||
// Получает массив типов колонок таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив, Соответствие Из КлючИЗначение - Массив типов или информация об ошибке
|
||||
Функция ПолучитьТипыКолонокТаблицы(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
ИнформацияОТаблице = ПолучитьИнформациюОТаблице(Таблица, Соединение);
|
||||
|
||||
Если Не ИнформацияОТаблице["result"] Тогда
|
||||
Возврат ИнформацияОТаблице;
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов = Новый Массив;
|
||||
|
||||
Для Каждого Колонка Из ИнформацияОТаблице Цикл
|
||||
|
||||
ТекущийТип = Колонка["data_type"];
|
||||
ТекущийТип = Строка(вРег(ТекущийТип));
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, " ", "_");
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, """CHAR""", "OLDCHAR");
|
||||
|
||||
Если СтрНачинаетсяС(ТекущийТип, "CHAR") Тогда
|
||||
ТекущийТип = "CHAR";
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов.Добавить(ТекущийТип);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивТипов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать таблицу
|
||||
// Создает пустую таблицу в базе
|
||||
//
|
||||
@@ -253,7 +292,7 @@
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Структура Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_PostgreSQL, Таблица, СтруктураКолонок, Соединение);
|
||||
@@ -377,6 +416,49 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Нормализовать набор параметров
|
||||
// Преобразует массив значений параметров в массив структур описаний для передачи в запрос
|
||||
//
|
||||
// Параметры:
|
||||
// МассивЗначений - Массив Из Произвольный - Массив значений параметров запроса - values
|
||||
// МассивТипов - Массив Из Строка - Массив типов колонок. См. ПолучитьТипыКолонокТаблицы - types
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив Из Соответствие - Нормализованный набор параметров для запроса
|
||||
Функция НормализоватьНаборПараметров(Знач МассивЗначений, Знач МассивТипов) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивЗначений);
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивТипов);
|
||||
|
||||
СоответствиеТипов = ПолучитьСоответствиеТипов();
|
||||
ИтоговыйМассив = Новый Массив;
|
||||
ГраницаТипов = МассивТипов.ВГраница();
|
||||
|
||||
Для Н = 0 По МассивЗначений.ВГраница() Цикл
|
||||
|
||||
Если Н > ГраницаТипов Тогда
|
||||
Прервать;
|
||||
Конецесли;
|
||||
|
||||
ТекущийТип = вРег(МассивТипов[Н]);
|
||||
ТекущееЗначение = МассивЗначений[Н];
|
||||
ОписаниеТипа = СоответствиеТипов.Получить(ТекущийТип);
|
||||
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ТекущееЗначение = ОписаниеТипа.ПривестиЗначение(ТекущееЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ТекущееОписание = Новый Соответствие;
|
||||
ТекущееОписание.Вставить(ТекущийТип, ТекущееЗначение);
|
||||
|
||||
ИтоговыйМассив.Добавить(ТекущееОписание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ИтоговыйМассив;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра записей
|
||||
// Получает структуру шаблон для фильтрации записей в запросах ORM
|
||||
//
|
||||
@@ -505,4 +587,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСоответствиеТипов()
|
||||
|
||||
ОписаниеBool = Новый ОписаниеТипов("Булево");
|
||||
ОписаниеOldchar = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
|
||||
ОписаниеI = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, 0, ДопустимыйЗнак.Любой));
|
||||
ОписаниеU = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, 0, ДопустимыйЗнак.Неотрицательный));
|
||||
ОписаниеF = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(, , ДопустимыйЗнак.Любой));
|
||||
ОписаниеString = Новый ОписаниеТипов("Строка");
|
||||
|
||||
СоответствиеТипов = Новый Соответствие();
|
||||
СоответствиеТипов.Вставить("BOOL" , ОписаниеBool);
|
||||
СоответствиеТипов.Вставить("""CHAR""" , ОписаниеOldchar);
|
||||
СоответствиеТипов.Вставить("OLDCHAR" , ОписаниеOldchar);
|
||||
СоответствиеТипов.Вставить("SMALLINT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("SMALLSERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("INT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("SERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("BIGINT" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("BIGSERIAL" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP" , ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP WITH TIME ZONE", ОписаниеI);
|
||||
СоответствиеТипов.Вставить("TIMESTAMP_WITH_TIME_ZONE", ОписаниеI);
|
||||
СоответствиеТипов.Вставить("OID" , ОписаниеU);
|
||||
СоответствиеТипов.Вставить("REAL" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("DOUBLE PRECISION" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("DOUBLE_PRECISION" , ОписаниеF);
|
||||
СоответствиеТипов.Вставить("VARCHAR" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("TEXT" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("CHAR" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("CITEXT" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("NAME" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LTREE" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LTXTQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("INET" , ОписаниеString);
|
||||
|
||||
Возврат СоответствиеТипов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -165,7 +165,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
@@ -188,7 +188,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_SQLite, Таблица, СтруктураКолонок, Соединение);
|
||||
@@ -209,7 +209,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_SQLite, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
@@ -232,7 +232,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ПолучитьЗаписи(Знач Таблица
|
||||
, Знач Поля = "*"
|
||||
, Знач Фильтры = ""
|
||||
@@ -255,7 +255,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ОбновитьЗаписи(Знач Таблица, Знач СтруктураЗначений, Знач Фильтры = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_SQLite, Таблица, СтруктураЗначений, Фильтры, Соединение);
|
||||
@@ -272,7 +272,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение);
|
||||
@@ -288,7 +288,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение);
|
||||
@@ -304,7 +304,7 @@
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения запроса
|
||||
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -17386,7 +17386,7 @@
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОТаблице", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -17407,7 +17407,7 @@
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Новый Структура("OLDCHAR" , "A"));
|
||||
СтруктураЗаписи.Вставить("char_field" , Новый Структура("OLDCHAR" , 1));
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user