1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-24 19:49:22 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-04-03 21:52:31 +03:00
parent f871f2346f
commit 111b5a582b
77 changed files with 9772 additions and 6931 deletions

View File

@@ -454,6 +454,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os "CLI_MYS_CommonMethods"
- name: ORM
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os "CLI_MYS_ORM"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3

View File

@@ -454,6 +454,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os "CLI_MYS_ОсновныеМетоды"
- name: ORM
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os "CLI_MYS_ORM"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3

4
ci/cli_ostesten vendored
View File

@@ -262,6 +262,10 @@ pipeline {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os" "CLI_MYS_CommonMethods"'
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os" "CLI_MYS_ORM"'
}
}
}

4
ci/cli_ostestru vendored
View File

@@ -262,6 +262,10 @@ pipeline {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os" "CLI_MYS_ОсновныеМетоды"'
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os" "CLI_MYS_ORM"'
}
}
}

4
ci/ostesten vendored
View File

@@ -262,6 +262,10 @@ pipeline {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_Tests.os" "MYS_CommonMethods"'
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_Tests.os" "MYS_ORM"'
}
}
}

4
ci/ostestru vendored
View File

@@ -262,6 +262,10 @@ pipeline {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os" "MYS_ОсновныеМетоды"'
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os" "MYS_ORM"'
}
}
}

5
docs/en/data/MySQL/AddRecords.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"Address": "127.0.0.1",
"Password": "12we...",
"Image": "https://api.athenaeum.digital/test_data/picture.jpg"
}

4
docs/en/data/MySQL/ClearTable.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

4
docs/en/data/MySQL/CreateTable.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

4
docs/en/data/MySQL/DeleteRecords.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

4
docs/en/data/MySQL/DeleteTable.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -1,5 +1,6 @@
{
"Image": "https://api.athenaeum.digital/test_data/picture.jpg",
"Address": "127.0.0.1",
"Password": "12we..."
"Password": "12we...",
"SQLFile": "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"
}

4
docs/en/data/MySQL/GetRecords.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

4
docs/en/data/MySQL/UpdateRecords.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

44
docs/en/examples/MySQL/AddRecords.txt vendored Normal file
View File

@@ -0,0 +1,44 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
RecordsArray = New Array;
Image = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
CurrentDate = OPI_Tools.GetCurrentDate();
RecordStructure = New Structure;
RecordStructure.Insert("char_field" , New Structure("TEXT" , "AAAAA"));
RecordStructure.Insert("varchar_field" , New Structure("TEXT" , "Some varchar"));
RecordStructure.Insert("tinytext_field" , New Structure("TEXT" , "Some tiny text"));
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("mediumtext_field", New Structure("TEXT" , "Some medium text"));
RecordStructure.Insert("longtext_field" , New Structure("TEXT" , "Some looooooong text"));
RecordStructure.Insert("tinyint_field" , New Structure("INT" , 127));
RecordStructure.Insert("smallint_field" , New Structure("INT" , -32767));
RecordStructure.Insert("mediumint_field" , New Structure("INT" , 8388607));
RecordStructure.Insert("int_field" , New Structure("INT" , -2147483647));
RecordStructure.Insert("uint_field" , New Structure("UINT" , 4294967295));
RecordStructure.Insert("bigint_field" , New Structure("INT" , 9223372036854775807));
RecordStructure.Insert("float_field" , New Structure("FLOAT" , 100.50));
RecordStructure.Insert("double_field" , New Structure("FLOAT" , 100.512123));
RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate));
RecordStructure.Insert("datetime_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("timestamp_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("mediumblob_field", New Structure("BYTES" , Image));
RecordStructure.Insert("set_field" , New Structure("TEXT" , "one"));
RecordsArray.Add(RecordStructure);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.AddRecords(Table, RecordsArray, True, ConnectionString);

14
docs/en/examples/MySQL/ClearTable.txt vendored Normal file
View File

@@ -0,0 +1,14 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.ClearTable(Table, ConnectionString);

View File

@@ -0,0 +1,14 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.CreateDatabase(Base, ConnectionString);

36
docs/en/examples/MySQL/CreateTable.txt vendored Normal file
View File

@@ -0,0 +1,36 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
ColoumnsStruct = New Structure;
ColoumnsStruct.Insert("char_field" , "CHAR(5)");
ColoumnsStruct.Insert("varchar_field" , "VARCHAR(255)");
ColoumnsStruct.Insert("tinytext_field" , "TINYTEXT");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("mediumtext_field", "MEDIUMTEXT");
ColoumnsStruct.Insert("longtext_field" , "LONGTEXT");
ColoumnsStruct.Insert("tinyint_field" , "TINYINT");
ColoumnsStruct.Insert("smallint_field" , "SMALLINT");
ColoumnsStruct.Insert("mediumint_field" , "MEDIUMINT");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("uint_field" , "INT UNSIGNED");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("float_field" , "FLOAT");
ColoumnsStruct.Insert("double_field" , "DOUBLE");
ColoumnsStruct.Insert("date_field" , "DATE");
ColoumnsStruct.Insert("time_field" , "TIME");
ColoumnsStruct.Insert("datetime_field" , "DATETIME");
ColoumnsStruct.Insert("timestamp_field" , "TIMESTAMP");
ColoumnsStruct.Insert("mediumblob_field", "MEDIUMBLOB");
ColoumnsStruct.Insert("set_field" , "SET('one','two','three')");
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.CreateTable(Table, ColoumnsStruct, ConnectionString);

View File

@@ -0,0 +1,14 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteDatabase(Base, ConnectionString);

View File

@@ -0,0 +1,33 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
FilterStructure.Insert("union", "AND");
Filters.Add(FilterStructure);
FilterStructure = New Structure;
FilterStructure.Insert("field", "ip_address");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1"));
FilterStructure.Insert("raw" , False);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteRecords(Table, Filters, ConnectionString);

14
docs/en/examples/MySQL/DeleteTable.txt vendored Normal file
View File

@@ -0,0 +1,14 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);

View File

@@ -50,4 +50,10 @@
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
// SQL query from file
SQLFile = "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"; // Binary Data, URL or path to file
Result = OPI_MySQL.ExecuteSQLQuery(SQLFile, , , Connection);
Closing = OPI_MySQL.CloseConnection(Connection);

52
docs/en/examples/MySQL/GetRecords.txt vendored Normal file
View File

@@ -0,0 +1,52 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// All records without filters
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
// Filter, selected fields, limit and sorting
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, "test_data", Login, Password);
Table = "test_data";
Fields = New Array;
Fields.Add("first_name");
Fields.Add("last_name");
Fields.Add("email");
Filters = New Array;
FilterStructure1 = New Structure;
FilterStructure1.Insert("field", "gender");
FilterStructure1.Insert("type" , "=");
FilterStructure1.Insert("value", "Male");
FilterStructure1.Insert("union", "AND");
FilterStructure1.Insert("raw" , False);
FilterStructure2 = New Structure;
FilterStructure2.Insert("field", "id");
FilterStructure2.Insert("type" , "BETWEEN");
FilterStructure2.Insert("value", "20 AND 50");
FilterStructure2.Insert("raw" , True);
Filters.Add(FilterStructure1);
Filters.Add(FilterStructure2);
Sort = New Structure("ip_address", "DESC");
Count = 5;
Result = OPI_MySQL.GetRecords(Table, Fields, Filters, Sort, Count, ConnectionString);

View File

@@ -0,0 +1 @@
 Result = OPI_MySQL.GetRecordsFilterStrucutre();

View File

@@ -0,0 +1,28 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
FieldsStructure = New Structure;
FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1"));
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
Filters.Add(FilterStructure);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.UpdateRecords(Table, FieldsStructure, FilterStructure, ConnectionString);

View File

@@ -87,6 +87,12 @@ Without specifying the `ForcifyResult` flag, result data is returned only for qu
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
// SQL query from file
SQLFile = "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"; // Binary Data, URL or path to file
Result = OPI_MySQL.ExecuteSQLQuery(SQLFile, , , Connection);
Closing = OPI_MySQL.CloseConnection(Connection);
```

View File

@@ -35,7 +35,50 @@ The list of available types is described on the initial page of the MySQL librar
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
RecordsArray = New Array;
Image = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
CurrentDate = OPI_Tools.GetCurrentDate();
RecordStructure = New Structure;
RecordStructure.Insert("char_field" , New Structure("TEXT" , "AAAAA"));
RecordStructure.Insert("varchar_field" , New Structure("TEXT" , "Some varchar"));
RecordStructure.Insert("tinytext_field" , New Structure("TEXT" , "Some tiny text"));
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("mediumtext_field", New Structure("TEXT" , "Some medium text"));
RecordStructure.Insert("longtext_field" , New Structure("TEXT" , "Some looooooong text"));
RecordStructure.Insert("tinyint_field" , New Structure("INT" , 127));
RecordStructure.Insert("smallint_field" , New Structure("INT" , -32767));
RecordStructure.Insert("mediumint_field" , New Structure("INT" , 8388607));
RecordStructure.Insert("int_field" , New Structure("INT" , -2147483647));
RecordStructure.Insert("uint_field" , New Structure("UINT" , 4294967295));
RecordStructure.Insert("bigint_field" , New Structure("INT" , 9223372036854775807));
RecordStructure.Insert("float_field" , New Structure("FLOAT" , 100.50));
RecordStructure.Insert("double_field" , New Structure("FLOAT" , 100.512123));
RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate));
RecordStructure.Insert("datetime_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("timestamp_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("mediumblob_field", New Structure("BYTES" , Image));
RecordStructure.Insert("set_field" , New Structure("TEXT" , "one"));
RecordsArray.Add(RecordStructure);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.AddRecords(Table, RecordsArray, True, ConnectionString);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.ClearTable(Table, ConnectionString);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.CreateDatabase(Base, ConnectionString);
```

View File

@@ -32,7 +32,42 @@ The list of available types is described on the initial page of the MySQL librar
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
ColoumnsStruct = New Structure;
ColoumnsStruct.Insert("char_field" , "CHAR(5)");
ColoumnsStruct.Insert("varchar_field" , "VARCHAR(255)");
ColoumnsStruct.Insert("tinytext_field" , "TINYTEXT");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("mediumtext_field", "MEDIUMTEXT");
ColoumnsStruct.Insert("longtext_field" , "LONGTEXT");
ColoumnsStruct.Insert("tinyint_field" , "TINYINT");
ColoumnsStruct.Insert("smallint_field" , "SMALLINT");
ColoumnsStruct.Insert("mediumint_field" , "MEDIUMINT");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("uint_field" , "INT UNSIGNED");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("float_field" , "FLOAT");
ColoumnsStruct.Insert("double_field" , "DOUBLE");
ColoumnsStruct.Insert("date_field" , "DATE");
ColoumnsStruct.Insert("time_field" , "TIME");
ColoumnsStruct.Insert("datetime_field" , "DATETIME");
ColoumnsStruct.Insert("timestamp_field" , "TIMESTAMP");
ColoumnsStruct.Insert("mediumblob_field", "MEDIUMBLOB");
ColoumnsStruct.Insert("set_field" , "SET('one','two','three')");
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteDatabase(Base, ConnectionString);
```

View File

@@ -28,7 +28,39 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
FilterStructure.Insert("union", "AND");
Filters.Add(FilterStructure);
FilterStructure = New Structure;
FilterStructure.Insert("field", "ip_address");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1"));
FilterStructure.Insert("raw" , False);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteRecords(Table, Filters, ConnectionString);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);
```

View File

@@ -31,7 +31,7 @@ In such a case, you must use `raw:true` to set the condition directly in the que
```bsl title="1C:Enterprise/OneScript code example"
Result = OPI_MySQL.GetRecordsFilterStrucutre();
```

View File

@@ -31,7 +31,58 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// All records without filters
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
// Filter, selected fields, limit and sorting
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, "test_data", Login, Password);
Table = "test_data";
Fields = New Array;
Fields.Add("first_name");
Fields.Add("last_name");
Fields.Add("email");
Filters = New Array;
FilterStructure1 = New Structure;
FilterStructure1.Insert("field", "gender");
FilterStructure1.Insert("type" , "=");
FilterStructure1.Insert("value", "Male");
FilterStructure1.Insert("union", "AND");
FilterStructure1.Insert("raw" , False);
FilterStructure2 = New Structure;
FilterStructure2.Insert("field", "id");
FilterStructure2.Insert("type" , "BETWEEN");
FilterStructure2.Insert("value", "20 AND 50");
FilterStructure2.Insert("raw" , True);
Filters.Add(FilterStructure1);
Filters.Add(FilterStructure2);
Sort = New Structure("ip_address", "DESC");
Count = 5;
Result = OPI_MySQL.GetRecords(Table, Fields, Filters, Sort, Count, ConnectionString);
```

View File

@@ -35,7 +35,34 @@ The list of available types is described on the initial page of the MySQL librar
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
FieldsStructure = New Structure;
FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1"));
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
Filters.Add(FilterStructure);
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.UpdateRecords(Table, FieldsStructure, FilterStructure, ConnectionString);
```

View File

@@ -1,5 +1,6 @@
{
"Картинка": "https://api.athenaeum.digital/test_data/picture.jpg",
"Адрес": "127.0.0.1",
"Пароль": "12we..."
"Пароль": "12we...",
"ФайлSQL": "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"
}

View File

@@ -0,0 +1,5 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we...",
"Картинка": "https://api.athenaeum.digital/test_data/picture.jpg"
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -50,4 +50,10 @@
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
// SQL запрос из файла
ФайлSQL = "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"; // Двоичные данные, URL или путь к файлу
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ФайлSQL, , , Соединение);
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);

View File

@@ -0,0 +1,44 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
МассивЗаписей = Новый Массив;
Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA"));
СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar"));
СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text"));
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text"));
СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text"));
СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127));
СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767));
СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607));
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647));
СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295));
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807));
СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50));
СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123));
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка));
СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one"));
МассивЗаписей.Добавить(СтруктураЗаписи);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);

View File

@@ -0,0 +1,28 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1"));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения);

View File

@@ -0,0 +1,14 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОчиститьТаблицу(Таблица, СтрокаПодключения);

View File

@@ -0,0 +1,52 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// Все записи без отборов
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
// Отборы, выбранные поля, количество и сортировка
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "test_data", Логин, Пароль);
Таблица = "test_data";
Поля = Новый Массив;
Поля.Добавить("first_name");
Поля.Добавить("last_name");
Поля.Добавить("email");
Фильтры = Новый Массив;
СтруктураФильтра1 = Новый Структура;
СтруктураФильтра1.Вставить("field", "gender");
СтруктураФильтра1.Вставить("type" , "=");
СтруктураФильтра1.Вставить("value", "Male");
СтруктураФильтра1.Вставить("union", "AND");
СтруктураФильтра1.Вставить("raw" , Ложь);
СтруктураФильтра2 = Новый Структура;
СтруктураФильтра2.Вставить("field", "id");
СтруктураФильтра2.Вставить("type" , "BETWEEN");
СтруктураФильтра2.Вставить("value", "20 AND 50");
СтруктураФильтра2.Вставить("raw" , Истина);
Фильтры.Добавить(СтруктураФильтра1);
Фильтры.Добавить(СтруктураФильтра2);
Сортировка = Новый Структура("ip_address", "DESC");
Количество = 5;
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, Поля, Фильтры, Сортировка, Количество, СтрокаПодключения);

View File

@@ -0,0 +1 @@
 Результат = OPI_MySQL.ПолучитьСтруктуруФильтраЗаписей();

View File

@@ -0,0 +1,14 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.СоздатьБазуДанных(База, СтрокаПодключения);

View File

@@ -0,0 +1,36 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("char_field" , "CHAR(5)");
СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)");
СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT");
СтруктураКолонок.Вставить("text_field" , "TEXT");
СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT");
СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT");
СтруктураКолонок.Вставить("tinyint_field" , "TINYINT");
СтруктураКолонок.Вставить("smallint_field" , "SMALLINT");
СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT");
СтруктураКолонок.Вставить("int_field" , "INT");
СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED");
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
СтруктураКолонок.Вставить("float_field" , "FLOAT");
СтруктураКолонок.Вставить("double_field" , "DOUBLE");
СтруктураКолонок.Вставить("date_field" , "DATE");
СтруктураКолонок.Вставить("time_field" , "TIME");
СтруктураКолонок.Вставить("datetime_field" , "DATETIME");
СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB");
СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')");
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);

View File

@@ -0,0 +1,14 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения);

View File

@@ -0,0 +1,33 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
СтруктураФильтра.Вставить("union", "AND");
Фильтры.Добавить(СтруктураФильтра);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "ip_address");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1"));
СтруктураФильтра.Вставить("raw" , Ложь);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьЗаписи(Таблица, Фильтры, СтрокаПодключения);

View File

@@ -0,0 +1,14 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения);

View File

@@ -87,6 +87,12 @@ import TabItem from '@theme/TabItem';
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
// SQL запрос из файла
ФайлSQL = "https://api.athenaeum.digital/test_data/TEST_DATA2.sql"; // Двоичные данные, URL или путь к файлу
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ФайлSQL, , , Соединение);
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);
```

View File

@@ -35,7 +35,50 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
МассивЗаписей = Новый Массив;
Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA"));
СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar"));
СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text"));
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text"));
СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text"));
СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127));
СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767));
СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607));
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647));
СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295));
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807));
СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50));
СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123));
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка));
СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one"));
МассивЗаписей.Добавить(СтруктураЗаписи);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОчиститьТаблицу(Таблица, СтрокаПодключения);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.СоздатьБазуДанных(База, СтрокаПодключения);
```

View File

@@ -32,7 +32,42 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("char_field" , "CHAR(5)");
СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)");
СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT");
СтруктураКолонок.Вставить("text_field" , "TEXT");
СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT");
СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT");
СтруктураКолонок.Вставить("tinyint_field" , "TINYINT");
СтруктураКолонок.Вставить("smallint_field" , "SMALLINT");
СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT");
СтруктураКолонок.Вставить("int_field" , "INT");
СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED");
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
СтруктураКолонок.Вставить("float_field" , "FLOAT");
СтруктураКолонок.Вставить("double_field" , "DOUBLE");
СтруктураКолонок.Вставить("date_field" , "DATE");
СтруктураКолонок.Вставить("time_field" , "TIME");
СтруктураКолонок.Вставить("datetime_field" , "DATETIME");
СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB");
СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')");
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения);
```

View File

@@ -28,7 +28,39 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
СтруктураФильтра.Вставить("union", "AND");
Фильтры.Добавить(СтруктураФильтра);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "ip_address");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1"));
СтруктураФильтра.Вставить("raw" , Ложь);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьЗаписи(Таблица, Фильтры, СтрокаПодключения);
```

View File

@@ -27,7 +27,20 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения);
```

View File

@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Результат = OPI_MySQL.ПолучитьСтруктуруФильтраЗаписей();
```

View File

@@ -31,7 +31,58 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// Все записи без отборов
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
// Отборы, выбранные поля, количество и сортировка
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "test_data", Логин, Пароль);
Таблица = "test_data";
Поля = Новый Массив;
Поля.Добавить("first_name");
Поля.Добавить("last_name");
Поля.Добавить("email");
Фильтры = Новый Массив;
СтруктураФильтра1 = Новый Структура;
СтруктураФильтра1.Вставить("field", "gender");
СтруктураФильтра1.Вставить("type" , "=");
СтруктураФильтра1.Вставить("value", "Male");
СтруктураФильтра1.Вставить("union", "AND");
СтруктураФильтра1.Вставить("raw" , Ложь);
СтруктураФильтра2 = Новый Структура;
СтруктураФильтра2.Вставить("field", "id");
СтруктураФильтра2.Вставить("type" , "BETWEEN");
СтруктураФильтра2.Вставить("value", "20 AND 50");
СтруктураФильтра2.Вставить("raw" , Истина);
Фильтры.Добавить(СтруктураФильтра1);
Фильтры.Добавить(СтруктураФильтра2);
Сортировка = Новый Структура("ip_address", "DESC");
Количество = 5;
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, Поля, Фильтры, Сортировка, Количество, СтрокаПодключения);
```

View File

@@ -35,7 +35,34 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1"));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения);
```

File diff suppressed because it is too large Load Diff

View File

@@ -2414,6 +2414,13 @@ Procedure MYS_ORM() Export
MySQL_CreateDatabase(TestParameters);
MySQL_CreateTable(TestParameters);
MySQL_AddRecords(TestParameters);
MySQL_GetRecords(TestParameters);
MySQL_UpdateRecords(TestParameters);
MySQL_DeleteRecords(TestParameters);
MySQL_ClearTable(TestParameters);
MySQL_DeleteTable(TestParameters);
MySQL_DeleteDatabase(TestParameters);
MySQL_GetRecordsFilterStrucutre(TestParameters);
EndProcedure
@@ -18086,8 +18093,7 @@ Procedure PostgreSQL_GetRecords(FunctionParameters)
Result = OPI_PostgreSQL.GetRecords(Table, , , , , ConnectionString);
If ValueIsFilled(Result["data"]) Then // SKIP
Result["data"][0]["bytea_field"]["BYTEA"] // SKIP
= Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
Result["data"][0]["bytea_field"]["BYTEA"] = Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
EndIf; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords", "PostgreSQL"); // SKIP
@@ -18701,6 +18707,7 @@ Procedure MySQL_ExecuteSQLQuery(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
OPI_MySQL.ExecuteSQLQuery("create table TEST_DATA (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Connection); // SKIP
// SQL query from file
@@ -18916,6 +18923,392 @@ Procedure MySQL_AddRecords(FunctionParameters)
EndProcedure
Procedure MySQL_GetRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// All records without filters
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
If ValueIsFilled(Result["data"]) Then // SKIP
Result["data"][0]["mediumblob_field"]["BYTES"] = Left(Result["data"][0]["mediumblob_field"]["BYTES"], 10) + "..."; // SKIP
EndIf; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// Filter, selected fields, limit and sorting
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, "test_data", Login, Password);
Table = "test_data";
Fields = New Array;
Fields.Add("first_name");
Fields.Add("last_name");
Fields.Add("email");
Filters = New Array;
FilterStructure1 = New Structure;
FilterStructure1.Insert("field", "gender");
FilterStructure1.Insert("type" , "=");
FilterStructure1.Insert("value", "Male");
FilterStructure1.Insert("union", "AND");
FilterStructure1.Insert("raw" , False);
FilterStructure2 = New Structure;
FilterStructure2.Insert("field", "id");
FilterStructure2.Insert("type" , "BETWEEN");
FilterStructure2.Insert("value", "20 AND 50");
FilterStructure2.Insert("raw" , True);
Filters.Add(FilterStructure1);
Filters.Add(FilterStructure2);
Sort = New Structure("ip_address", "DESC");
Count = 5;
Result = OPI_MySQL.GetRecords(Table, Fields, Filters, Sort, Count, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords (filters)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 5);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Table = "testtable";
Result = OPI_MySQL.GetRecords(Table, , , , , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"]);
EndProcedure
Procedure MySQL_UpdateRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
FieldsStructure = New Structure;
FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1"));
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
Filters.Add(FilterStructure);
Count = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString); // SKIP
OPI_TestDataRetrieval.WriteLog(Count, "UpdateRecords (amount)", "MySQL"); // SKIP
Count = Count["data"].Count(); // SKIP
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.UpdateRecords(Table, FieldsStructure, FilterStructure, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UpdateRecords", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Check = OPI_MySQL.GetRecords(Table, "['ip_address']", Filters, , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Check, "UpdateRecords (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"], Count);
For N = 0 To Check["data"].UBound() Do
OPI_TestDataRetrieval.Check_SQLiteFieldsValues(Check["data"][N], FieldsStructure);
EndDo;
Address = "api.athenaeum.digital";
Port = "3307";
FieldsStructure = New Structure;
FieldsStructure.Insert("varchar_field", New Structure("VARCHAR", "Another varchar"));
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "testbase1", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.UpdateRecords("testtable", FieldsStructure, , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "UpdateRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
FilterStructure.Insert("union", "AND");
Filters.Add(FilterStructure);
FilterStructure = New Structure;
FilterStructure.Insert("field", "ip_address");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1"));
FilterStructure.Insert("raw" , False);
Obtaining = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString); // SKIP
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteRecords(Table, Filters, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Obtaining, "DeleteRecords (get)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Count = Obtaining["data"].Count();
Residue = 100 - Count;
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], Residue);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "testbase1", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.DeleteRecords("testtable", , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteTable(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.DeleteTable(Table, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Base = "test_data";
Table = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable (test)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteDatabase(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteDatabase(Base, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Base = "testbase2";
Connection = OPI_MySQL.CreateConnection(ConnectionString);
OPI_TestDataRetrieval.WriteLog(Connection, "DeleteDatabase (open)", "MySQL");
OPI_TestDataRetrieval.Check_AddIn(Connection, "AddIn.OPI_MySQL.Main");
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (connect)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (error)", "MySQL");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
Closing = OPI_MySQL.CloseConnection(Connection);
OPI_TestDataRetrieval.WriteLog(Closing, "DeleteDatabase (close)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Closing);
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (connect error)", "MySQL");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Base = "testbase1";
Result = OPI_MySQL.DeleteDatabase(Base, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_ClearTable(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.ClearTable(Table, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.ClearTable(Table, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 0);
EndProcedure
Procedure MySQL_GetRecordsFilterStrucutre(FunctionParameters)
Result = OPI_MySQL.GetRecordsFilterStrucutre();
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetRecordsFilterStrucutre", "MySQL");
OPI_TestDataRetrieval.Check_Structure(Result);
Result = OPI_MySQL.GetRecordsFilterStrucutre(True);
OPI_TestDataRetrieval.WriteLog(Result, "GetRecordsFilterStrucutre (empty)", "MySQL");
For Each Element In Result Do
OPI_TestDataRetrieval.Check_Empty(Element.Value);
EndDo;
EndProcedure
#EndRegion
#Region GreenAPI

View File

@@ -2347,6 +2347,23 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure CLI_MYS_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("SQL2" , TestParameters);
CLI_MySQL_GenerateConnectionString(TestParameters);
CLI_MySQL_ExecuteSQLQuery(TestParameters);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure CLI_GAPI_Account() Export
@@ -20459,6 +20476,175 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure CLI_MySQL_GenerateConnectionString(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
Options = New Structure;
Options.Insert("addr" , Address);
Options.Insert("db" , Base);
Options.Insert("login", Login);
Options.Insert("pass" , Password);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options);
Result = ПолучитьСтрокуИзДвоичныхДанных(Result);
Result = StrReplace(Result, Password, "***");
Result = StrReplace(Result, Address , "127.0.0.1");
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "MySQL");
OPI_TestDataRetrieval.Check_String(Result);
EndProcedure
Procedure CLI_MySQL_ExecuteSQLQuery(FunctionParameters)
Image = FunctionParameters["Picture"];
TFN = GetTempFileName();
OPI_TypeConversion.GetBinaryData(Image);
Image.Write(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("mysql", "GenerateConnectionString", Options, False);
ConnectionString = ПолучитьСтрокуИзДвоичныхДанных(ConnectionString);
Options = New Structure();
Options.Insert("dbc" , ConnectionString);
Options.Insert("table", "users");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
Options.Insert("table", "test_data");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
Options.Insert("table", "test_table");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
// 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Create)", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Insert)", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
Blob = Result["data"][0]["data"]["BYTES"]; // SKIP
Result["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Transaction)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// SQL query from file
SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file
Options = New Structure;
Options.Insert("sql" , SQLFile);
Options.Insert("dbc" , ConnectionString);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (file)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
Try
DeleteFiles(TFN);
Except
OPI_TestDataRetrieval.WriteLogCLI(ErrorDescription(), "Error deleting a picture file", "MySQL");
EndTry;
EndProcedure
#EndRegion
#Region GreenAPI
Procedure CLI_GreenAPI_FormAccessParameters(FunctionParameters)

View File

@@ -2414,6 +2414,13 @@ Procedure MYS_ORM() Export
MySQL_CreateDatabase(TestParameters);
MySQL_CreateTable(TestParameters);
MySQL_AddRecords(TestParameters);
MySQL_GetRecords(TestParameters);
MySQL_UpdateRecords(TestParameters);
MySQL_DeleteRecords(TestParameters);
MySQL_ClearTable(TestParameters);
MySQL_DeleteTable(TestParameters);
MySQL_DeleteDatabase(TestParameters);
MySQL_GetRecordsFilterStrucutre(TestParameters);
EndProcedure
@@ -18086,8 +18093,7 @@ Procedure PostgreSQL_GetRecords(FunctionParameters)
Result = OPI_PostgreSQL.GetRecords(Table, , , , , ConnectionString);
If ValueIsFilled(Result["data"]) Then // SKIP
Result["data"][0]["bytea_field"]["BYTEA"] // SKIP
= Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
Result["data"][0]["bytea_field"]["BYTEA"] = Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
EndIf; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords", "PostgreSQL"); // SKIP
@@ -18701,6 +18707,7 @@ Procedure MySQL_ExecuteSQLQuery(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
OPI_MySQL.ExecuteSQLQuery("create table TEST_DATA (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Connection); // SKIP
// SQL query from file
@@ -18916,6 +18923,392 @@ Procedure MySQL_AddRecords(FunctionParameters)
EndProcedure
Procedure MySQL_GetRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// All records without filters
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
If ValueIsFilled(Result["data"]) Then // SKIP
Result["data"][0]["mediumblob_field"]["BYTES"] = Left(Result["data"][0]["mediumblob_field"]["BYTES"], 10) + "..."; // SKIP
EndIf; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// Filter, selected fields, limit and sorting
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, "test_data", Login, Password);
Table = "test_data";
Fields = New Array;
Fields.Add("first_name");
Fields.Add("last_name");
Fields.Add("email");
Filters = New Array;
FilterStructure1 = New Structure;
FilterStructure1.Insert("field", "gender");
FilterStructure1.Insert("type" , "=");
FilterStructure1.Insert("value", "Male");
FilterStructure1.Insert("union", "AND");
FilterStructure1.Insert("raw" , False);
FilterStructure2 = New Structure;
FilterStructure2.Insert("field", "id");
FilterStructure2.Insert("type" , "BETWEEN");
FilterStructure2.Insert("value", "20 AND 50");
FilterStructure2.Insert("raw" , True);
Filters.Add(FilterStructure1);
Filters.Add(FilterStructure2);
Sort = New Structure("ip_address", "DESC");
Count = 5;
Result = OPI_MySQL.GetRecords(Table, Fields, Filters, Sort, Count, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords (filters)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 5);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Table = "testtable";
Result = OPI_MySQL.GetRecords(Table, , , , , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "GetRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"]);
EndProcedure
Procedure MySQL_UpdateRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
FieldsStructure = New Structure;
FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1"));
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
Filters.Add(FilterStructure);
Count = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString); // SKIP
OPI_TestDataRetrieval.WriteLog(Count, "UpdateRecords (amount)", "MySQL"); // SKIP
Count = Count["data"].Count(); // SKIP
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.UpdateRecords(Table, FieldsStructure, FilterStructure, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UpdateRecords", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Check = OPI_MySQL.GetRecords(Table, "['ip_address']", Filters, , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Check, "UpdateRecords (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"], Count);
For N = 0 To Check["data"].UBound() Do
OPI_TestDataRetrieval.Check_SQLiteFieldsValues(Check["data"][N], FieldsStructure);
EndDo;
Address = "api.athenaeum.digital";
Port = "3307";
FieldsStructure = New Structure;
FieldsStructure.Insert("varchar_field", New Structure("VARCHAR", "Another varchar"));
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "testbase1", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.UpdateRecords("testtable", FieldsStructure, , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "UpdateRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "test_data";
Filters = New Array;
FilterStructure = New Structure;
FilterStructure.Insert("field", "gender");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "Male"));
FilterStructure.Insert("raw" , False);
FilterStructure.Insert("union", "AND");
Filters.Add(FilterStructure);
FilterStructure = New Structure;
FilterStructure.Insert("field", "ip_address");
FilterStructure.Insert("type" , "=");
FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1"));
FilterStructure.Insert("raw" , False);
Obtaining = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString); // SKIP
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteRecords(Table, Filters, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Obtaining, "DeleteRecords (get)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Count = Obtaining["data"].Count();
Residue = 100 - Count;
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], Residue);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "testbase1", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.DeleteRecords("testtable", , TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteRecords (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteTable(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.DeleteTable(Table, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Base = "test_data";
Table = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.DeleteTable(Table, ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteTable (test)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_DeleteDatabase(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Base = "testbase1";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.DeleteDatabase(Base, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Base = "testbase2";
Connection = OPI_MySQL.CreateConnection(ConnectionString);
OPI_TestDataRetrieval.WriteLog(Connection, "DeleteDatabase (open)", "MySQL");
OPI_TestDataRetrieval.Check_AddIn(Connection, "AddIn.OPI_MySQL.Main");
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (connect)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (error)", "MySQL");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
Closing = OPI_MySQL.CloseConnection(Connection);
OPI_TestDataRetrieval.WriteLog(Closing, "DeleteDatabase (close)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Closing);
Result = OPI_MySQL.DeleteDatabase(Base, Connection);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (connect error)", "MySQL");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, "", Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Base = "testbase1";
Result = OPI_MySQL.DeleteDatabase(Base, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "DeleteDatabase (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_ClearTable(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
// When using the connection string, a new connection is initialised,
// which will be closed after the function is executed.
// If several operations are performed, it is desirable to use one connection,
// previously created by the CreateConnection function()
Result = OPI_MySQL.ClearTable(Table, ConnectionString);
// END
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Address = "api.athenaeum.digital";
Port = "3307";
TLSConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password, Port);
TLSSettings = OPI_MySQL.GetTlsSettings(False);
Result = OPI_MySQL.ClearTable(Table, TLSConnectionString, TLSSettings);
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable (TLS)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_MySQL.GetRecords(Table, , , , , ConnectionString);
OPI_TestDataRetrieval.WriteLog(Result, "ClearTable (check)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 0);
EndProcedure
Procedure MySQL_GetRecordsFilterStrucutre(FunctionParameters)
Result = OPI_MySQL.GetRecordsFilterStrucutre();
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetRecordsFilterStrucutre", "MySQL");
OPI_TestDataRetrieval.Check_Structure(Result);
Result = OPI_MySQL.GetRecordsFilterStrucutre(True);
OPI_TestDataRetrieval.WriteLog(Result, "GetRecordsFilterStrucutre (empty)", "MySQL");
For Each Element In Result Do
OPI_TestDataRetrieval.Check_Empty(Element.Value);
EndDo;
EndProcedure
#EndRegion
#Region GreenAPI

View File

@@ -2347,6 +2347,23 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure CLI_MYS_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("SQL2" , TestParameters);
CLI_MySQL_GenerateConnectionString(TestParameters);
CLI_MySQL_ExecuteSQLQuery(TestParameters);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure CLI_GAPI_Account() Export
@@ -20459,6 +20476,175 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure CLI_MySQL_GenerateConnectionString(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
Options = New Structure;
Options.Insert("addr" , Address);
Options.Insert("db" , Base);
Options.Insert("login", Login);
Options.Insert("pass" , Password);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options);
Result = GetStringFromBinaryData(Result);
Result = StrReplace(Result, Password, "***");
Result = StrReplace(Result, Address , "127.0.0.1");
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "MySQL");
OPI_TestDataRetrieval.Check_String(Result);
EndProcedure
Procedure CLI_MySQL_ExecuteSQLQuery(FunctionParameters)
Image = FunctionParameters["Picture"];
TFN = GetTempFileName();
OPI_TypeConversion.GetBinaryData(Image);
Image.Write(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("mysql", "GenerateConnectionString", Options, False);
ConnectionString = GetStringFromBinaryData(ConnectionString);
Options = New Structure();
Options.Insert("dbc" , ConnectionString);
Options.Insert("table", "users");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
Options.Insert("table", "test_data");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
Options.Insert("table", "test_table");
OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options, False);
// 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Create)", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Insert)", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
Blob = Result["data"][0]["data"]["BYTES"]; // SKIP
Result["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery", "MySQL"); // 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("mysql", "ExecuteSQLQuery", Options, False);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (Transaction)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// SQL query from file
SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file
Options = New Structure;
Options.Insert("sql" , SQLFile);
Options.Insert("dbc" , ConnectionString);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "ExecuteSQLQuery (file)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
Try
DeleteFiles(TFN);
Except
OPI_TestDataRetrieval.WriteLogCLI(ErrorDescription(), "Error deleting a picture file", "MySQL");
EndTry;
EndProcedure
#EndRegion
#Region GreenAPI
Procedure CLI_GreenAPI_FormAccessParameters(FunctionParameters)

View File

@@ -2414,6 +2414,13 @@
MySQL_СоздатьБазуДанных(ПараметрыТеста);
MySQL_СоздатьТаблицу(ПараметрыТеста);
MySQL_ДобавитьЗаписи(ПараметрыТеста);
MySQL_ПолучитьЗаписи(ПараметрыТеста);
MySQL_ОбновитьЗаписи(ПараметрыТеста);
MySQL_УдалитьЗаписи(ПараметрыТеста);
MySQL_ОчиститьТаблицу(ПараметрыТеста);
MySQL_УдалитьТаблицу(ПараметрыТеста);
MySQL_УдалитьБазуДанных(ПараметрыТеста);
MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
КонецПроцедуры
@@ -18086,12 +18093,11 @@
Результат = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP
Результат["data"][0]["bytea_field"]["BYTEA"] // SKIP
= Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP
КонецЕсли; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи", "PostgreSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// Отборы, выбранные поля, количество и сортировка
@@ -18701,6 +18707,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL", "MySQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP
OPI_MySQL.ВыполнитьЗапросSQL("create table TEST_DATA (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Соединение); // SKIP
// SQL запрос из файла
@@ -18916,6 +18923,392 @@
КонецПроцедуры
Процедура MySQL_ПолучитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// Все записи без отборов
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP
Результат["data"][0]["mediumblob_field"]["BYTES"] = Лев(Результат["data"][0]["mediumblob_field"]["BYTES"], 10) + "..."; // SKIP
КонецЕсли; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи", "MySQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// Отборы, выбранные поля, количество и сортировка
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "test_data", Логин, Пароль);
Таблица = "test_data";
Поля = Новый Массив;
Поля.Добавить("first_name");
Поля.Добавить("last_name");
Поля.Добавить("email");
Фильтры = Новый Массив;
СтруктураФильтра1 = Новый Структура;
СтруктураФильтра1.Вставить("field", "gender");
СтруктураФильтра1.Вставить("type" , "=");
СтруктураФильтра1.Вставить("value", "Male");
СтруктураФильтра1.Вставить("union", "AND");
СтруктураФильтра1.Вставить("raw" , Ложь);
СтруктураФильтра2 = Новый Структура;
СтруктураФильтра2.Вставить("field", "id");
СтруктураФильтра2.Вставить("type" , "BETWEEN");
СтруктураФильтра2.Вставить("value", "20 AND 50");
СтруктураФильтра2.Вставить("raw" , Истина);
Фильтры.Добавить(СтруктураФильтра1);
Фильтры.Добавить(СтруктураФильтра2);
Сортировка = Новый Структура("ip_address", "DESC");
Количество = 5;
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, Поля, Фильтры, Сортировка, Количество, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи (отборы)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5);
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
Таблица = "testtable";
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"]);
КонецПроцедуры
Процедура MySQL_ОбновитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1"));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
Количество = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Количество, "ОбновитьЗаписи (количество)", "MySQL"); // SKIP
Количество = Количество["data"].Количество(); // SKIP
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Проверка = OPI_MySQL.ПолучитьЗаписи(Таблица, "['ip_address']", Фильтры, , , СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ОбновитьЗаписи (проверка)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество);
Для Н = 0 По Проверка["data"].ВГраница() Цикл
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей);
КонецЦикла;
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("varchar_field", Новый Структура("VARCHAR", "Another varchar"));
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "testbase1", Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
Результат = OPI_MySQL.ОбновитьЗаписи("testtable", СтруктураПолей, , СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MySQL_УдалитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
СтруктураФильтра.Вставить("union", "AND");
Фильтры.Добавить(СтруктураФильтра);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "ip_address");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1"));
СтруктураФильтра.Вставить("raw" , Ложь);
Получение = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения); // SKIP
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьЗаписи(Таблица, Фильтры, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Получение, "УдалитьЗаписи (получение)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Количество = Получение["data"].Количество();
Остаток = 100 - Количество;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (проверка)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток);
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "testbase1", Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
Результат = OPI_MySQL.УдалитьЗаписи("testtable", , СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MySQL_УдалитьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
Результат = OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
База = "test_data";
Таблица = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу (тест)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MySQL_УдалитьБазуДанных(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
База = "testbase2";
Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Подключение, "УдалитьБазуДанных (открытие)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Подключение, "AddIn.OPI_MySQL.Main");
Результат = OPI_MySQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (подключение)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MySQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (ошибка)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Закрытие = OPI_MySQL.ЗакрытьСоединение(Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Закрытие, "УдалитьБазуДанных (закрытие)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Закрытие);
Результат = OPI_MySQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (ошибка подключения)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, "", Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
База = "testbase1";
Результат = OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MySQL_ОчиститьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MySQL.ОчиститьТаблицу(Таблица, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Адрес = "api.athenaeum.digital";
Порт = "3307";
СтрокаПодключенияTLS = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль, Порт);
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTls(Ложь);
Результат = OPI_MySQL.ОчиститьТаблицу(Таблица, СтрокаПодключенияTLS, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу (TLS)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MySQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу (проверка)", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0);
КонецПроцедуры
Процедура MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции)
Результат = OPI_MySQL.ПолучитьСтруктуруФильтраЗаписей();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_MySQL.ПолучитьСтруктуруФильтраЗаписей(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "MySQL");
Для Каждого Элемент Из Результат Цикл
OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область GreenAPI

View File

@@ -2347,6 +2347,23 @@
#КонецОбласти
#Область MySQL
Процедура CLI_MYS_ОсновныеМетоды() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста);
CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыТеста);
CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#Область GreenAPI
Процедура CLI_GAPI_Аккаунт() Экспорт
@@ -20459,6 +20476,175 @@
#КонецОбласти
#Область MySQL
Процедура CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "";
Опции = Новый Структура;
Опции.Вставить("addr" , Адрес);
Опции.Вставить("db" , База);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции);
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат);
Результат = СтрЗаменить(Результат, Пароль, "***");
Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СформироватьСтрокуПодключения", "MySQL");
OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат);
КонецПроцедуры
Процедура CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыФункции)
Картинка = ПараметрыФункции["Picture"];
ИВФ = ПолучитьИмяВременногоФайла();
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
Картинка.Записать(ИВФ);
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
Опции = Новый Структура;
Опции.Вставить("addr" , Адрес);
Опции.Вставить("db" , База);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь);
СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения);
Опции = Новый Структура();
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("table", "users");
OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь);
Опции.Вставить("table", "test_data");
OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь);
Опции.Вставить("table", "test_table");
OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь);
// 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("mysql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "MySQL"); // 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("mysql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "MySQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// SELECT (Результат этого запроса приведен в следующем блоке)
ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;";
Опции = Новый Структура;
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " "));
Опции.Вставить("dbc" , СтрокаПодключения);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь);
Blob = Результат["data"][0]["data"]["BYTES"]; // SKIP
Результат["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "MySQL"); // 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("mysql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Transaction)", "MySQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// SQL запрос из файла
ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу
Опции = Новый Структура;
Опции.Вставить("sql" , ФайлSQL);
Опции.Вставить("dbc" , СтрокаПодключения);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "MySQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
Попытка
УдалитьФайлы(ИВФ);
Исключение
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "MySQL");
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#Область GreenAPI
Процедура CLI_GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции)