mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-04-07 07:10:01 +02:00
Main build (Jenkins)
This commit is contained in:
parent
1531bc9e67
commit
7fbf764be4
13
docs/ru/md/PostgreSQL/Orm/Add-records.mdx
vendored
13
docs/ru/md/PostgreSQL/Orm/Add-records.mdx
vendored
@ -93,16 +93,11 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
```json title="Результат"
|
||||
{
|
||||
"rollback": {
|
||||
"commit": {
|
||||
"result": true
|
||||
},
|
||||
"result": false,
|
||||
"rows": 0,
|
||||
"errors": [
|
||||
{
|
||||
"row": 1,
|
||||
"error": "Invalid value for DATA"
|
||||
}
|
||||
]
|
||||
"result": true,
|
||||
"rows": 1,
|
||||
"errors": []
|
||||
}
|
||||
```
|
||||
|
13126
service/dictionaries/en.json
vendored
13126
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
4
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
4
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@ -531,7 +531,9 @@ Function ProcessParameter(CurrentParameter)
|
||||
ElsIf CurrentType = Type("Structure")
|
||||
Or CurrentType = Type("Map") Then
|
||||
|
||||
For Each ParamElement In CurrentParameter Do
|
||||
CurrentParameter_ = OPI_Tools.CopyCollection(CurrentParameter);
|
||||
|
||||
For Each ParamElement In CurrentParameter_ Do
|
||||
|
||||
CurrentKey = Upper(ParamElement.Key);
|
||||
CurrentValue = ParamElement.Value;
|
||||
|
185
src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os
vendored
185
src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os
vendored
@ -2289,6 +2289,23 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure CLI_Postgres_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("SQL" , TestParameters);
|
||||
|
||||
CLI_PostgreSQL_GenerateConnectionString(TestParameters);
|
||||
CLI_PostgreSQL_ExecuteSQLQuery(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
@ -19402,6 +19419,174 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure CLI_PostgreSQL_GenerateConnectionString(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("addr" , Address);
|
||||
Options.Insert("db" , Base);
|
||||
Options.Insert("login", Login);
|
||||
Options.Insert("pass" , Password);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options);
|
||||
Result = ПолучитьСтрокуИзДвоичныхДанных(Result);
|
||||
|
||||
Result = StrReplace(Result, Password, "***");
|
||||
Result = StrReplace(Result, Address , "127.0.0.1");
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_String(Result);
|
||||
OPI_TestDataRetrieval.Check_True(StrStartsWith(Result, "postgresql"));
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure CLI_PostgreSQL_ExecuteSQLQuery(FunctionParameters)
|
||||
|
||||
Image = FunctionParameters["Picture"];
|
||||
TFN = GetTempFileName();
|
||||
CopyFile(Image, TFN);
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "test_data";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("addr" , Address);
|
||||
Options.Insert("db" , Base);
|
||||
Options.Insert("login", Login);
|
||||
Options.Insert("pass" , Password);
|
||||
|
||||
ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options, False);
|
||||
ConnectionString = ПолучитьСтрокуИзДвоичныхДанных(ConnectionString);
|
||||
Connection = OPI_PostgreSQL.CreateConnection(ConnectionString);
|
||||
|
||||
OPI_PostgreSQL.DeleteTable("users" , Connection);
|
||||
OPI_PostgreSQL.DeleteTable("test_data" , Connection);
|
||||
OPI_PostgreSQL.DeleteTable("test_table", Connection);
|
||||
|
||||
// CREATE
|
||||
|
||||
QueryText = "
|
||||
|CREATE TABLE test_table (
|
||||
|id SERIAL PRIMARY KEY,
|
||||
|name NAME,
|
||||
|age INT,
|
||||
|salary REAL,
|
||||
|is_active BOOL,
|
||||
|created_at DATE,
|
||||
|data BYTEA
|
||||
|);";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Create)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// INSERT with parameters
|
||||
|
||||
QueryText = "
|
||||
|INSERT INTO test_table (name, age, salary, is_active, created_at, data)
|
||||
|VALUES ($1, $2, $3, $4, $5, $6);";
|
||||
|
||||
ParameterArray = New Array;
|
||||
ParameterArray.Add(New Structure("NAME" , "Vitaly"));
|
||||
ParameterArray.Add(New Structure("INT" , 25));
|
||||
ParameterArray.Add(New Structure("REAL" , 1000.12));
|
||||
ParameterArray.Add(New Structure("BOOL" , True));
|
||||
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
|
||||
ParameterArray.Add(New Structure("BYTEA", TFN));
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("params", ParameterArray);
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Insert)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// SELECT (The result of this query is shown in the Result block)
|
||||
|
||||
QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
Blob = Result["data"][0]["data"]["BYTEA"]; // SKIP
|
||||
|
||||
Result["data"][0]["data"]["BYTEA"] = "Base64"; // SKIP
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
|
||||
|
||||
// DO + Transaction
|
||||
|
||||
QueryText = "DO $$
|
||||
|BEGIN
|
||||
| CREATE TABLE users (
|
||||
| id SMALLSERIAL,
|
||||
| name TEXT NOT NULL,
|
||||
| age INT NOT NULL
|
||||
| );
|
||||
| INSERT INTO users (name, age) VALUES ('Alice', 30);
|
||||
| INSERT INTO users (name, age) VALUES ('Bob', 25);
|
||||
| INSERT INTO users (name, age) VALUES ('Charlie', 35);
|
||||
| COMMIT;
|
||||
|END $$ LANGUAGE plpgsql;";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Transaction)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// SQL query from file
|
||||
|
||||
SQLFile = FunctionParameters["SQL"]; // Binary Data, URL or path to file
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , SQLFile);
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (file)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
Closing = OPI_PostgreSQL.CloseConnection(Connection);
|
||||
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection (query)", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
OPI_TestDataRetrieval.WriteLog(ErrorDescription(), "Error deleting a picture file", "PostgreSQL");
|
||||
EndTry;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
@ -531,7 +531,9 @@ Function ProcessParameter(CurrentParameter)
|
||||
ElsIf CurrentType = Type("Structure")
|
||||
Or CurrentType = Type("Map") Then
|
||||
|
||||
For Each ParamElement In CurrentParameter Do
|
||||
CurrentParameter_ = OPI_Tools.CopyCollection(CurrentParameter);
|
||||
|
||||
For Each ParamElement In CurrentParameter_ Do
|
||||
|
||||
CurrentKey = Upper(ParamElement.Key);
|
||||
CurrentValue = ParamElement.Value;
|
||||
|
185
src/en/OPI/src/CommonModules/OPI_TestsCLI/Module.bsl
vendored
185
src/en/OPI/src/CommonModules/OPI_TestsCLI/Module.bsl
vendored
@ -2289,6 +2289,23 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure CLI_Postgres_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("SQL" , TestParameters);
|
||||
|
||||
CLI_PostgreSQL_GenerateConnectionString(TestParameters);
|
||||
CLI_PostgreSQL_ExecuteSQLQuery(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
@ -19402,6 +19419,174 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure CLI_PostgreSQL_GenerateConnectionString(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("addr" , Address);
|
||||
Options.Insert("db" , Base);
|
||||
Options.Insert("login", Login);
|
||||
Options.Insert("pass" , Password);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options);
|
||||
Result = GetStringFromBinaryData(Result);
|
||||
|
||||
Result = StrReplace(Result, Password, "***");
|
||||
Result = StrReplace(Result, Address , "127.0.0.1");
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_String(Result);
|
||||
OPI_TestDataRetrieval.Check_True(StrStartsWith(Result, "postgresql"));
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure CLI_PostgreSQL_ExecuteSQLQuery(FunctionParameters)
|
||||
|
||||
Image = FunctionParameters["Picture"];
|
||||
TFN = GetTempFileName();
|
||||
FileCopy(Image, TFN);
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "test_data";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("addr" , Address);
|
||||
Options.Insert("db" , Base);
|
||||
Options.Insert("login", Login);
|
||||
Options.Insert("pass" , Password);
|
||||
|
||||
ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options, False);
|
||||
ConnectionString = GetStringFromBinaryData(ConnectionString);
|
||||
Connection = OPI_PostgreSQL.CreateConnection(ConnectionString);
|
||||
|
||||
OPI_PostgreSQL.DeleteTable("users" , Connection);
|
||||
OPI_PostgreSQL.DeleteTable("test_data" , Connection);
|
||||
OPI_PostgreSQL.DeleteTable("test_table", Connection);
|
||||
|
||||
// CREATE
|
||||
|
||||
QueryText = "
|
||||
|CREATE TABLE test_table (
|
||||
|id SERIAL PRIMARY KEY,
|
||||
|name NAME,
|
||||
|age INT,
|
||||
|salary REAL,
|
||||
|is_active BOOL,
|
||||
|created_at DATE,
|
||||
|data BYTEA
|
||||
|);";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Create)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// INSERT with parameters
|
||||
|
||||
QueryText = "
|
||||
|INSERT INTO test_table (name, age, salary, is_active, created_at, data)
|
||||
|VALUES ($1, $2, $3, $4, $5, $6);";
|
||||
|
||||
ParameterArray = New Array;
|
||||
ParameterArray.Add(New Structure("NAME" , "Vitaly"));
|
||||
ParameterArray.Add(New Structure("INT" , 25));
|
||||
ParameterArray.Add(New Structure("REAL" , 1000.12));
|
||||
ParameterArray.Add(New Structure("BOOL" , True));
|
||||
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
|
||||
ParameterArray.Add(New Structure("BYTEA", TFN));
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("params", ParameterArray);
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Insert)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// SELECT (The result of this query is shown in the Result block)
|
||||
|
||||
QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
Blob = Result["data"][0]["data"]["BYTEA"]; // SKIP
|
||||
|
||||
Result["data"][0]["data"]["BYTEA"] = "Base64"; // SKIP
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
|
||||
|
||||
// DO + Transaction
|
||||
|
||||
QueryText = "DO $$
|
||||
|BEGIN
|
||||
| CREATE TABLE users (
|
||||
| id SMALLSERIAL,
|
||||
| name TEXT NOT NULL,
|
||||
| age INT NOT NULL
|
||||
| );
|
||||
| INSERT INTO users (name, age) VALUES ('Alice', 30);
|
||||
| INSERT INTO users (name, age) VALUES ('Bob', 25);
|
||||
| INSERT INTO users (name, age) VALUES ('Charlie', 35);
|
||||
| COMMIT;
|
||||
|END $$ LANGUAGE plpgsql;";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , StrReplace(QueryText, Chars.LF, " "));
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options, False);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Transaction)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
// SQL query from file
|
||||
|
||||
SQLFile = FunctionParameters["SQL"]; // Binary Data, URL or path to file
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("sql" , SQLFile);
|
||||
Options.Insert("dbc" , ConnectionString);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (file)", "PostgreSQL"); // SKIP
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
|
||||
|
||||
Closing = OPI_PostgreSQL.CloseConnection(Connection);
|
||||
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection (query)", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
OPI_TestDataRetrieval.WriteLog(ErrorDescription(), "Error deleting a picture file", "PostgreSQL");
|
||||
EndTry;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
4
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
4
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@ -531,7 +531,9 @@
|
||||
ИначеЕсли ТекущийТип = Тип("Структура")
|
||||
Или ТекущийТип = Тип("Соответствие") Тогда
|
||||
|
||||
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
|
||||
ТекущийПараметр_ = OPI_Инструменты.КопироватьКоллекцию(ТекущийПараметр);
|
||||
|
||||
Для Каждого ЭлементПараметра Из ТекущийПараметр_ Цикл
|
||||
|
||||
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
|
||||
ТекущееЗначение = ЭлементПараметра.Значение;
|
||||
|
185
src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os
vendored
185
src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os
vendored
@ -2289,6 +2289,23 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область PostgreSQL
|
||||
|
||||
Процедура CLI_Postgres_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL" , ПараметрыТеста);
|
||||
|
||||
CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста);
|
||||
CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -19402,6 +19419,174 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область PostgreSQL
|
||||
|
||||
Процедура CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("addr" , Адрес);
|
||||
Опции.Вставить("db" , База);
|
||||
Опции.Вставить("login", Логин);
|
||||
Опции.Вставить("pass" , Пароль);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции);
|
||||
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат);
|
||||
|
||||
Результат = СтрЗаменить(Результат, Пароль, "***");
|
||||
Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СформироватьСтрокуПодключения", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Истина(СтрНачинаетсяС(Результат, "postgresql"));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции)
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
КопироватьФайл(Картинка, ИВФ);
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "test_data";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("addr" , Адрес);
|
||||
Опции.Вставить("db" , База);
|
||||
Опции.Вставить("login", Логин);
|
||||
Опции.Вставить("pass" , Пароль);
|
||||
|
||||
СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь);
|
||||
СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения);
|
||||
Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения);
|
||||
|
||||
OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_data" , Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение);
|
||||
|
||||
// CREATE
|
||||
|
||||
ТекстЗапроса = "
|
||||
|CREATE TABLE test_table (
|
||||
|id SERIAL PRIMARY KEY,
|
||||
|name NAME,
|
||||
|age INT,
|
||||
|salary REAL,
|
||||
|is_active BOOL,
|
||||
|created_at DATE,
|
||||
|data BYTEA
|
||||
|);";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " "));
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Create)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
// INSERT с параметрами
|
||||
|
||||
ТекстЗапроса = "
|
||||
|INSERT INTO test_table (name, age, salary, is_active, created_at, data)
|
||||
|VALUES ($1, $2, $3, $4, $5, $6);";
|
||||
|
||||
МассивПараметров = Новый Массив;
|
||||
МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly"));
|
||||
МассивПараметров.Добавить(Новый Структура("INT" , 25));
|
||||
МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12));
|
||||
МассивПараметров.Добавить(Новый Структура("BOOL" , Истина));
|
||||
МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату()));
|
||||
МассивПараметров.Добавить(Новый Структура("BYTEA", ИВФ));
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " "));
|
||||
Опции.Вставить("params", МассивПараметров);
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Insert)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
// SELECT (Результат этого запроса приведен в следующем блоке)
|
||||
|
||||
ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " "));
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь);
|
||||
|
||||
Blob = Результат["data"][0]["data"]["BYTEA"]; // SKIP
|
||||
|
||||
Результат["data"][0]["data"]["BYTEA"] = "Base64"; // SKIP
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP
|
||||
|
||||
// DO + Транзакция
|
||||
|
||||
ТекстЗапроса = "DO $$
|
||||
|BEGIN
|
||||
| CREATE TABLE users (
|
||||
| id SMALLSERIAL,
|
||||
| name TEXT NOT NULL,
|
||||
| age INT NOT NULL
|
||||
| );
|
||||
| INSERT INTO users (name, age) VALUES ('Alice', 30);
|
||||
| INSERT INTO users (name, age) VALUES ('Bob', 25);
|
||||
| INSERT INTO users (name, age) VALUES ('Charlie', 35);
|
||||
| COMMIT;
|
||||
|END $$ LANGUAGE plpgsql;";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " "));
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Transaction)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
// SQL запрос из файла
|
||||
|
||||
ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("sql" , ФайлSQL);
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (файл)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Соединение);
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗакрытьПодключение (запрос)", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -531,8 +531,8 @@
|
||||
ИначеЕсли ТекущийТип = Тип("Структура")
|
||||
Или ТекущийТип = Тип("Соответствие") Тогда
|
||||
|
||||
ТекущийПараметр_ = OPI_Инструменты.КопироватьКоллекцию(ТекущийПараметр);
|
||||
|
||||
ТекущийПараметр_ = OPI_Инструменты.КопироватьКоллекцию(ТекущийПараметр);
|
||||
|
||||
Для Каждого ЭлементПараметра Из ТекущийПараметр_ Цикл
|
||||
|
||||
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
|
||||
|
@ -19467,9 +19467,9 @@
|
||||
СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения);
|
||||
Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения);
|
||||
|
||||
OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_data", Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_data" , Соединение);
|
||||
OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение);
|
||||
|
||||
// CREATE
|
||||
|
||||
@ -19554,7 +19554,7 @@
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь);
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Transaction)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
@ -19567,7 +19567,7 @@
|
||||
Опции.Вставить("dbc" , СтрокаПодключения);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции);
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (файл)", "PostgreSQL"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
|
||||
|
||||
@ -19577,12 +19577,12 @@
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗакрытьПодключение (запрос)", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL");
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL");
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user