mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-03-17 21:08:03 +02:00
Main build (Jenkins)
This commit is contained in:
parent
e608573455
commit
5523d267b9
62
.github/workflows/oint_test_full_ru.yml
vendored
62
.github/workflows/oint_test_full_ru.yml
vendored
@ -374,6 +374,48 @@ jobs:
|
||||
path: ./data.json
|
||||
|
||||
|
||||
Testing-PostgreSQL:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Decode, Build]
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- uses: otymko/setup-onescript@v1.4
|
||||
with:
|
||||
version: 1.9.1
|
||||
|
||||
- name: Получить тестовые данные из кэша
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
key: test-data
|
||||
path: ./data.json
|
||||
|
||||
- name: Установить asserts и 1testrunner
|
||||
run: |
|
||||
opm install asserts
|
||||
opm install 1testrunner
|
||||
|
||||
- name: Установить OInt
|
||||
run: |
|
||||
TEMP_DEB="$(mktemp)" &&
|
||||
wget -O "$TEMP_DEB" 'https://api.athenaeum.digital/tc/job/Release/lastSuccessfulBuild/artifact/1.18.1/oint_1.18.1_all_ru.deb' &&
|
||||
sudo dpkg -i "$TEMP_DEB"
|
||||
rm -f "$TEMP_DEB"
|
||||
|
||||
|
||||
|
||||
- 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_Postgres_ORM"
|
||||
|
||||
- name: Записать логи
|
||||
if: ${{ cancelled() }} == false
|
||||
uses: actions/cache/save@v3
|
||||
with:
|
||||
key: logs-PostgreSQL
|
||||
path: ./docs/ru/results/PostgreSQL
|
||||
|
||||
|
||||
Testing-SQLite:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Decode, Build]
|
||||
@ -1407,7 +1449,7 @@ jobs:
|
||||
|
||||
Encode:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-SQLite,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika,Testing-S3,Testing-TCP]
|
||||
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-PostgreSQL,Testing-SQLite,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika,Testing-S3,Testing-TCP]
|
||||
if: ${{ always() }}
|
||||
permissions:
|
||||
contents: write
|
||||
@ -1499,6 +1541,22 @@ jobs:
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-Twitter"
|
||||
|
||||
- name: Получить логи PostgreSQL
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
key: logs-PostgreSQL
|
||||
path: ./docs/ru/results/PostgreSQL
|
||||
|
||||
|
||||
- name: Очистка логов PostgreSQL
|
||||
run: |
|
||||
curl -L \
|
||||
-X DELETE \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-PostgreSQL"
|
||||
|
||||
- name: Получить логи SQLite
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
@ -1799,7 +1857,7 @@ jobs:
|
||||
|
||||
Clear-Cache:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-SQLite, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Testing-S3, Testing-TCP, Encode]
|
||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-PostgreSQL, Testing-SQLite, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Testing-S3, Testing-TCP, Encode]
|
||||
if: ${{ always() }}
|
||||
steps:
|
||||
- name: Очистка основного кэша
|
||||
|
11
ci/cli_ostestru
vendored
11
ci/cli_ostestru
vendored
@ -239,6 +239,17 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-PostgreSQL') {
|
||||
steps {
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os" "CLI_Postgres_ORM"'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-SQLite') {
|
||||
steps {
|
||||
|
||||
|
104
ci/clitesten
vendored
104
ci/clitesten
vendored
@ -76,6 +76,11 @@ pipeline {
|
||||
test_ozon()
|
||||
}
|
||||
}
|
||||
stage('sqlite'){
|
||||
steps{
|
||||
test_sqlite()
|
||||
}
|
||||
}
|
||||
stage('s3'){
|
||||
steps{
|
||||
test_s3()
|
||||
@ -86,11 +91,6 @@ pipeline {
|
||||
test_slack()
|
||||
}
|
||||
}
|
||||
stage('sqlite'){
|
||||
steps{
|
||||
test_sqlite()
|
||||
}
|
||||
}
|
||||
stage('tcp'){
|
||||
steps{
|
||||
test_tcp()
|
||||
@ -1745,6 +1745,52 @@ def test_ozon(){
|
||||
}
|
||||
|
||||
|
||||
def test_sqlite(){
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ExecuteSQLQuery --sql "test" --params "test" --force "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetTableInformation --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite CreateTable --table "test" --cols "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite AddRecords --table "test" --rows "test" --trn "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetRecords --table "test" --fields "test" --filter "test" --order "test" --limit "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite UpdateRecords --table "test" --values "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite DeletePosts --table "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite DeleteTable --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ClearTable --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetRecordsFilterStrucutre --empty "test" --debug --test '
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
def test_s3(){
|
||||
|
||||
|
||||
@ -2033,52 +2079,6 @@ def test_slack(){
|
||||
}
|
||||
|
||||
|
||||
def test_sqlite(){
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ExecuteSQLQuery --sql "test" --params "test" --force "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetTableInformation --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite CreateTable --table "test" --cols "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite AddRecords --table "test" --rows "test" --trn "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetRecords --table "test" --fields "test" --filter "test" --order "test" --limit "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite UpdateRecords --table "test" --values "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite DeletePosts --table "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite DeleteTable --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ClearTable --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetRecordsFilterStrucutre --empty "test" --debug --test '
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
def test_tcp(){
|
||||
|
||||
|
||||
@ -2885,9 +2885,9 @@ test_mongodb()
|
||||
test_neocities()
|
||||
test_notion()
|
||||
test_ozon()
|
||||
test_sqlite()
|
||||
test_s3()
|
||||
test_slack()
|
||||
test_sqlite()
|
||||
test_tcp()
|
||||
test_telegram()
|
||||
test_twitter()
|
||||
|
104
ci/clitestru
vendored
104
ci/clitestru
vendored
@ -76,6 +76,11 @@ pipeline {
|
||||
test_ozon()
|
||||
}
|
||||
}
|
||||
stage('sqlite'){
|
||||
steps{
|
||||
test_sqlite()
|
||||
}
|
||||
}
|
||||
stage('s3'){
|
||||
steps{
|
||||
test_s3()
|
||||
@ -86,11 +91,6 @@ pipeline {
|
||||
test_slack()
|
||||
}
|
||||
}
|
||||
stage('sqlite'){
|
||||
steps{
|
||||
test_sqlite()
|
||||
}
|
||||
}
|
||||
stage('tcp'){
|
||||
steps{
|
||||
test_tcp()
|
||||
@ -1745,6 +1745,52 @@ def test_ozon(){
|
||||
}
|
||||
|
||||
|
||||
def test_sqlite(){
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ВыполнитьЗапросSQL --sql "test" --params "test" --force "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьИнформациюОТаблице --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite СоздатьТаблицу --table "test" --cols "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ДобавитьЗаписи --table "test" --rows "test" --trn "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьЗаписи --table "test" --fields "test" --filter "test" --order "test" --limit "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ОбновитьЗаписи --table "test" --values "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite УдалитьЗаписи --table "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite УдалитьТаблицу --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ОчиститьТаблицу --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьСтруктуруФильтраЗаписей --empty "test" --debug --test '
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
def test_s3(){
|
||||
|
||||
|
||||
@ -2033,52 +2079,6 @@ def test_slack(){
|
||||
}
|
||||
|
||||
|
||||
def test_sqlite(){
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ВыполнитьЗапросSQL --sql "test" --params "test" --force "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьИнформациюОТаблице --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite СоздатьТаблицу --table "test" --cols "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ДобавитьЗаписи --table "test" --rows "test" --trn "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьЗаписи --table "test" --fields "test" --filter "test" --order "test" --limit "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ОбновитьЗаписи --table "test" --values "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite УдалитьЗаписи --table "test" --filter "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite УдалитьТаблицу --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ОчиститьТаблицу --table "test" --db "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьСтруктуруФильтраЗаписей --empty "test" --debug --test '
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
def test_tcp(){
|
||||
|
||||
|
||||
@ -2885,9 +2885,9 @@ test_mongodb()
|
||||
test_neocities()
|
||||
test_notion()
|
||||
test_ozon()
|
||||
test_sqlite()
|
||||
test_s3()
|
||||
test_slack()
|
||||
test_sqlite()
|
||||
test_tcp()
|
||||
test_telegram()
|
||||
test_twitter()
|
||||
|
11
ci/ostestru
vendored
11
ci/ostestru
vendored
@ -239,6 +239,17 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-PostgreSQL') {
|
||||
steps {
|
||||
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os" "Postgres_ORM"'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-SQLite') {
|
||||
steps {
|
||||
|
||||
|
5
docs/en/data/PostgreSQL/AddRecords.json
vendored
Normal file
5
docs/en/data/PostgreSQL/AddRecords.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"Address": "93.125.42.204",
|
||||
"Password": "12we...",
|
||||
"Image": "https://api.athenaeum.digital/test_data/picture.jpg"
|
||||
}
|
4
docs/en/data/PostgreSQL/CreateDatabase.json
vendored
Normal file
4
docs/en/data/PostgreSQL/CreateDatabase.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Address": "93.125.42.204",
|
||||
"Password": "12we..."
|
||||
}
|
4
docs/en/data/PostgreSQL/CreateTable.json
vendored
Normal file
4
docs/en/data/PostgreSQL/CreateTable.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Address": "93.125.42.204",
|
||||
"Password": "12we..."
|
||||
}
|
4
docs/en/data/PostgreSQL/DropDatabase.json
vendored
Normal file
4
docs/en/data/PostgreSQL/DropDatabase.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Address": "93.125.42.204",
|
||||
"Password": "12we..."
|
||||
}
|
33
docs/en/examples/PostgreSQL/AddRecords.txt
vendored
Normal file
33
docs/en/examples/PostgreSQL/AddRecords.txt
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
Image = "https://api.athenaeum.digital/test_data/picture.jpg";
|
||||
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
|
||||
|
||||
Char = New Map;
|
||||
Char.Insert("""char""", 1);
|
||||
|
||||
DP = New Map;
|
||||
DP.Insert("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
RecordStructure = New Structure;
|
||||
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
|
||||
RecordStructure.Insert("char_field" , Char);
|
||||
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
|
||||
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
|
||||
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
|
||||
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
|
||||
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
|
||||
RecordStructure.Insert("dp_field" , DP);
|
||||
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
|
||||
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
|
||||
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP", 1739207915));
|
||||
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
|
||||
|
||||
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
|
10
docs/en/examples/PostgreSQL/CreateDatabase.txt
vendored
Normal file
10
docs/en/examples/PostgreSQL/CreateDatabase.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
|
24
docs/en/examples/PostgreSQL/CreateTable.txt
vendored
Normal file
24
docs/en/examples/PostgreSQL/CreateTable.txt
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("bool_field" , "BOOL");
|
||||
ColoumnsStruct.Insert("char_field" , """char""");
|
||||
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
|
||||
ColoumnsStruct.Insert("int_field" , "INT");
|
||||
ColoumnsStruct.Insert("oid_field" , "OID");
|
||||
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
|
||||
ColoumnsStruct.Insert("real_field" , "REAL");
|
||||
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
|
||||
ColoumnsStruct.Insert("text_field" , "TEXT");
|
||||
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
|
||||
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
|
||||
ColoumnsStruct.Insert("ip_field" , "INET");
|
||||
|
||||
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
|
10
docs/en/examples/PostgreSQL/DropDatabase.txt
vendored
Normal file
10
docs/en/examples/PostgreSQL/DropDatabase.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.DropDatabase(Base, ConnectionString);
|
38
docs/en/md/SQLite/Common-methods/Generate-connection-string.mdx
vendored
Normal file
38
docs/en/md/SQLite/Common-methods/Generate-connection-string.mdx
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Generate connection string
|
||||
Forms a connection string from the passed data
|
||||
|
||||
|
||||
|
||||
`Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "5432") Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Address | --addr | String | ✔ | IP address or domain name of the server |
|
||||
| Base | --db | String | ✔ | Name of the database to connect |
|
||||
| Login | --login | String | ✔ | Postgres user login |
|
||||
| Password | --pass | String | ✖ | Postgres user password |
|
||||
| Port | --port | String | ✖ | Connection port |
|
||||
|
||||
|
||||
Returns: String - PostgreSQL database connection string
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
44
docs/en/md/SQLite/Orm/Create-database.mdx
vendored
Normal file
44
docs/en/md/SQLite/Orm/Create-database.mdx
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Create database
|
||||
Creates a database with the specified name
|
||||
|
||||
|
||||
|
||||
`Function CreateDatabase(Val Base, Val Connection = "") Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Base | --base | String | ✔ | Database name |
|
||||
| Connection | --dbc | String, Arbitrary | ✖ | Connection or connection string |
|
||||
|
||||
|
||||
Returns: Structure Of KeyAndValue, String - Result of query execution
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
44
docs/en/md/SQLite/Orm/Drop-database.mdx
vendored
Normal file
44
docs/en/md/SQLite/Orm/Drop-database.mdx
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Drop database
|
||||
Deletes the database
|
||||
|
||||
|
||||
|
||||
`Function DropDatabase(Val Base, Val Connection = "") Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Base | --base | String | ✔ | Database name |
|
||||
| Connection | --dbc | String, Arbitrary | ✖ | Connection or connection string |
|
||||
|
||||
|
||||
Returns: Structure Of KeyAndValue, String - Result of query execution
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Address = "93.125.42.204";
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.DropDatabase(Base, ConnectionString);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
5
docs/ru/data/PostgreSQL/ДобавитьЗаписи.json
vendored
Normal file
5
docs/ru/data/PostgreSQL/ДобавитьЗаписи.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"Адрес": "93.125.42.204",
|
||||
"Пароль": "12we...",
|
||||
"Картинка": "https://api.athenaeum.digital/test_data/picture.jpg"
|
||||
}
|
4
docs/ru/data/PostgreSQL/СоздатьБазуДанных.json
vendored
Normal file
4
docs/ru/data/PostgreSQL/СоздатьБазуДанных.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Адрес": "93.125.42.204",
|
||||
"Пароль": "12we..."
|
||||
}
|
4
docs/ru/data/PostgreSQL/СоздатьТаблицу.json
vendored
Normal file
4
docs/ru/data/PostgreSQL/СоздатьТаблицу.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Адрес": "93.125.42.204",
|
||||
"Пароль": "12we..."
|
||||
}
|
4
docs/ru/data/PostgreSQL/УдалитьБазуДанных.json
vendored
Normal file
4
docs/ru/data/PostgreSQL/УдалитьБазуДанных.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Адрес": "93.125.42.204",
|
||||
"Пароль": "12we..."
|
||||
}
|
33
docs/ru/examples/PostgreSQL/ДобавитьЗаписи.txt
vendored
Normal file
33
docs/ru/examples/PostgreSQL/ДобавитьЗаписи.txt
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
Char = Новый Соответствие;
|
||||
Char.Вставить("""char""", 1);
|
||||
|
||||
DP = Новый Соответствие;
|
||||
DP.Вставить("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Char);
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
|
||||
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
|
||||
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
|
||||
СтруктураЗаписи.Вставить("dp_field" , DP);
|
||||
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
|
||||
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка));
|
||||
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP", 1739207915));
|
||||
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1"));
|
||||
|
||||
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
|
10
docs/ru/examples/PostgreSQL/СоздатьБазуДанных.txt
vendored
Normal file
10
docs/ru/examples/PostgreSQL/СоздатьБазуДанных.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
24
docs/ru/examples/PostgreSQL/СоздатьТаблицу.txt
vendored
Normal file
24
docs/ru/examples/PostgreSQL/СоздатьТаблицу.txt
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("bool_field" , "BOOL");
|
||||
СтруктураКолонок.Вставить("char_field" , """char""");
|
||||
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
|
||||
СтруктураКолонок.Вставить("int_field" , "INT");
|
||||
СтруктураКолонок.Вставить("oid_field" , "OID");
|
||||
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
|
||||
СтруктураКолонок.Вставить("real_field" , "REAL");
|
||||
СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION");
|
||||
СтруктураКолонок.Вставить("text_field" , "TEXT");
|
||||
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
|
||||
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
|
||||
СтруктураКолонок.Вставить("ip_field" , "INET");
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
10
docs/ru/examples/PostgreSQL/УдалитьБазуДанных.txt
vendored
Normal file
10
docs/ru/examples/PostgreSQL/УдалитьБазуДанных.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
38
docs/ru/md/SQLite/Common-methods/Generate-connection-string.mdx
vendored
Normal file
38
docs/ru/md/SQLite/Common-methods/Generate-connection-string.mdx
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Сформировать строку подключения
|
||||
Формирует строку подключения из переданных данных
|
||||
|
||||
|
||||
|
||||
`Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "5432") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Адрес | --addr | Строка | ✔ | IP адрес или доменное имя сервера |
|
||||
| База | --db | Строка | ✔ | Имя базы данных для подключения |
|
||||
| Логин | --login | Строка | ✔ | Логин пользователя postgres |
|
||||
| Пароль | --pass | Строка | ✖ | Пароль пользователя postgres |
|
||||
| Порт | --port | Строка | ✖ | Порт подключения |
|
||||
|
||||
|
||||
Возвращаемое значение: Строка - Строка подключения к базе PostgreSQL
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
44
docs/ru/md/SQLite/Orm/Create-database.mdx
vendored
Normal file
44
docs/ru/md/SQLite/Orm/Create-database.mdx
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Создать базу данных
|
||||
Создает базу данных с указанным именем
|
||||
|
||||
|
||||
|
||||
`Функция СоздатьБазуДанных(Знач База, Знач Соединение = "") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| База | --base | Строка | ✔ | Имя базы |
|
||||
| Соединение | --dbc | Строка, Произвольный | ✖ | Соединение или строка подключения |
|
||||
|
||||
|
||||
Возвращаемое значение: Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
44
docs/ru/md/SQLite/Orm/Drop-database.mdx
vendored
Normal file
44
docs/ru/md/SQLite/Orm/Drop-database.mdx
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Удалить базу данных
|
||||
Удаляет базу данных
|
||||
|
||||
|
||||
|
||||
`Функция УдалитьБазуДанных(Знач База, Знач Соединение = "") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| База | --base | Строка | ✔ | Имя базы |
|
||||
| Соединение | --dbc | Строка, Произвольный | ✖ | Соединение или строка подключения |
|
||||
|
||||
|
||||
Возвращаемое значение: Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Адрес = "93.125.42.204";
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
12428
service/dictionaries/en.json
vendored
12428
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
483
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
Normal file
483
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
Normal file
@ -0,0 +1,483 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os
|
||||
// Lib: SQLite
|
||||
// CLI: sqlite
|
||||
|
||||
// MIT License
|
||||
|
||||
// Copyright (c) 2023 Anton Tsitavets
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// BSLLS:Typo-off
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:LineLength-off
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
//@skip-check module-structure-method-in-regions
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
//@skip-check constructor-function-return-section
|
||||
|
||||
// Uncomment if OneScript is executed
|
||||
#Use "../../tools"
|
||||
|
||||
#Region Public
|
||||
|
||||
#Region CommonMethods
|
||||
|
||||
// Create Connection !NOCLI
|
||||
// Creates a connection to the specified base
|
||||
//
|
||||
// Parameters:
|
||||
// ConnectionString - String - Connection string. See GenerateConnectionString - sting
|
||||
//
|
||||
// Returns:
|
||||
// Arbitrary - Connector object or structure with error information
|
||||
Function CreateConnection(Val ConnectionString = "") Export
|
||||
|
||||
If IsConnector(ConnectionString) Then
|
||||
Return ConnectionString;
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionString);
|
||||
OPI_Tools.RestoreEscapeSequences(ConnectionString);
|
||||
|
||||
Connector = AttachAddInOnServer("OPI_PostgreSQL");
|
||||
|
||||
Connector.ConnectionString = ConnectionString;
|
||||
|
||||
Result = Connector.Connect();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Return ?(Result["result"], Connector, Result);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Close connection !NOCLI
|
||||
// Explicitly closes the passed connection
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - AddIn object with open connection - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of connection termination
|
||||
Function CloseConnection(Val Connection) Export
|
||||
|
||||
If IsConnector(Connection) Then
|
||||
|
||||
Result = Connection.Close();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Else
|
||||
|
||||
Result = New Structure("result,error", False, "It's not a connection");
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Is connector !NOCLI
|
||||
// Checks that the value is an object of a SQLite AddIn
|
||||
//
|
||||
// Parameters:
|
||||
// Value - Arbitrary - Value to check - value
|
||||
//
|
||||
// Returns:
|
||||
// Boolean - Is connector
|
||||
Function IsConnector(Val Value) Export
|
||||
|
||||
Return String(TypeOf(Value)) = "AddIn.OPI_PostgreSQL.Main";
|
||||
|
||||
EndFunction
|
||||
|
||||
// Execute SQL query
|
||||
// Executes an arbitrary SQL query
|
||||
//
|
||||
// Note
|
||||
// Available parameter types: String, Number, Date, Boolean, BinaryData.^^
|
||||
// Binary data can also be passed as a `{'blob':File path}` structure. Binary data (BLOB) values are returned^^
|
||||
// as `{'blob':Base64 string}`
|
||||
// Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword^^
|
||||
// For other queries, `result:true` or `false` with error text is returned
|
||||
//
|
||||
// Parameters:
|
||||
// QueryText - String - Database query text - sql
|
||||
// Parameters - Array Of Arbitrary - Array of positional parameters of the request - params
|
||||
// ForceResult - Boolean - Includes an attempt to retrieve the result, even for nonSELECT queries - force
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of query execution
|
||||
Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Parameters = ""
|
||||
, Val ForceResult = False
|
||||
, Val Connection = "") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(QueryText);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
Connector = CreateConnection(Connection);
|
||||
|
||||
If TypeOf(Connector) <> Type("AddIn.OPI_PostgreSQL.Main") Then
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Generate connection string
|
||||
// Forms a connection string from the passed data
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - IP address or domain name of the server - addr
|
||||
// Base - String - Name of the database to connect - db
|
||||
// Login - String - Postgres user login - login
|
||||
// Password - String - Postgres user password - pass
|
||||
// Port - String - Connection port - port
|
||||
//
|
||||
// Returns:
|
||||
// String - PostgreSQL database connection string
|
||||
Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "5432") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(Address);
|
||||
OPI_TypeConversion.GetLine(Login);
|
||||
OPI_TypeConversion.GetLine(Base);
|
||||
OPI_TypeConversion.GetLine(Port);
|
||||
OPI_TypeConversion.GetLine(Password);
|
||||
|
||||
Port = ?(ValueIsFilled(Port), ":" + Port, Port);
|
||||
Password = ?(ValueIsFilled(Password), ":" + Password, Password);
|
||||
|
||||
StringTemplate = "postgresql://%1%2@%3%4/%5";
|
||||
ConnectionString = StrTemplate(StringTemplate, Login, Password, Address, Port, Base);
|
||||
|
||||
Return ConnectionString;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region ORM
|
||||
|
||||
// Create database
|
||||
// Creates a database with the specified name
|
||||
//
|
||||
// Parameters:
|
||||
// Base - String - Database name - base
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function CreateDatabase(Val Base, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.CreateDatabase(OPI_PostgreSQL, Base, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Drop database
|
||||
// Deletes the database
|
||||
//
|
||||
// Parameters:
|
||||
// Base - String - Database name - base
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DropDatabase(Val Base, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DropDatabase(OPI_PostgreSQL, Base, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Create table
|
||||
// Creates an empty table in the database
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// ColoumnsStruct - Structure Of KeyAndValue - Column structure: Key > Name, Value > Data type - cols
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.CreateTable(OPI_PostgreSQL, Table, ColoumnsStruct, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Add rows
|
||||
// Adds new rows to the table
|
||||
//
|
||||
// Note
|
||||
// Binary data can also be transferred as a structure `{'blob':File path}`
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// DataArray - Array of Structure - An array of string data structures: Key > field, Value > field value - rows
|
||||
// Transaction - Boolean - True > adding records to transactions with rollback on error - trn
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.AddRecords(OPI_PostgreSQL, Table, DataArray, Transaction, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get records
|
||||
// Gets records from the selected table
|
||||
//
|
||||
// Note
|
||||
// Values of the Binary data type (BLOB) are returned as `{'blob':Base64 string}`
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Fields - Array Of String - Fields for selection - fields
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Sort - Structure Of KeyAndValue - Sorting: Key > field name, Value > direction (ASC, DESC) - order
|
||||
// Count - Number - Limiting the number of received strings - limit
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function GetRecords(Val Table
|
||||
, Val Fields = "*"
|
||||
, Val Filters = ""
|
||||
, Val Sort = ""
|
||||
, Val Count = ""
|
||||
, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.GetRecords(OPI_PostgreSQL, Table, Fields, Filters, Sort, Count, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Update records
|
||||
// Updates the value of records by selected criteria
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// ValueStructure - Structure Of KeyAndValue - Values structure: Key > field, Value > field value - values
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.UpdateRecords(OPI_PostgreSQL, Table, ValueStructure, Filters, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Delete records
|
||||
// Deletes records from the table
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DeletePosts(Val Table, Val Filters = "", Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeletePosts(OPI_PostgreSQL, Table, Filters, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Delete table
|
||||
// Deletes a table from the database
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DeleteTable(Val Table, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeleteTable(OPI_PostgreSQL, Table, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Clear table
|
||||
// Clears the database table
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function ClearTable(Val Table, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeletePosts(OPI_PostgreSQL, Table, , Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get records filter strucutre
|
||||
// Gets the template structure for filtering records in ORM queries
|
||||
//
|
||||
// Note
|
||||
// The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`.^^
|
||||
// For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 `^^
|
||||
// where `?1 = "10 AND 20,"' which would cause an error.
|
||||
// In such a case, you must use `raw:true` to set the condition directly in the query text
|
||||
//
|
||||
// Parameters:
|
||||
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Record filter element
|
||||
Function GetRecordsFilterStrucutre(Val Clear = False) Export
|
||||
|
||||
Return OPI_SQLQueries.GetRecordsFilterStrucutre(Clear);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function ConnectorName() Export
|
||||
Return "OPI_PostgreSQL";
|
||||
EndFunction
|
||||
|
||||
Function GetFeatures() Export
|
||||
|
||||
Features = New Structure;
|
||||
Features.Insert("ParameterNumeration", True);
|
||||
Features.Insert("ParameterMarker" , "$");
|
||||
|
||||
Return Features;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
|
||||
Function AttachAddInOnServer(Val AddInName, Val Class = "Main")
|
||||
|
||||
If OPI_Tools.IsOneScript() Then
|
||||
TemplateName = OPI_Tools.AddInsFolderOS() + AddInName + ".zip";
|
||||
Else
|
||||
TemplateName = "CommonTemplate." + AddInName;
|
||||
EndIf;
|
||||
|
||||
AttachAddIn(TemplateName, AddInName, AddInType.Native);
|
||||
|
||||
AddIn = New ("AddIn." + AddInName + "." + Class);
|
||||
Return AddIn;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetArray(Parameters);
|
||||
|
||||
For N = 0 To Parameters.UBound() Do
|
||||
|
||||
CurrentParameter = Parameters[N];
|
||||
|
||||
If TypeOf(CurrentParameter) = Type("BinaryData") Then
|
||||
|
||||
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
|
||||
|
||||
ElsIf OPI_Tools.CollectionFieldExist(CurrentParameter, "BYTEA") Then
|
||||
|
||||
CurrentParameter = ProcessBlobStructure(CurrentParameter);
|
||||
|
||||
ElsIf TypeOf(CurrentParameter) = Type("Date") Then
|
||||
|
||||
CurrentParameter = Format(CurrentParameter, "DF='yyyy-MM-dd HH:MM:ss");
|
||||
|
||||
ElsIf TypeOf(CurrentParameter) = Type("Structure") Or TypeOf(CurrentParameter) = Type("Map") Then
|
||||
|
||||
Continue;
|
||||
|
||||
Else
|
||||
|
||||
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
|
||||
OPI_TypeConversion.GetLine(CurrentParameter);
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Parameters[N] = CurrentParameter;
|
||||
|
||||
EndDo;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessBlobStructure(Val Value)
|
||||
|
||||
DataValue = Value["BYTEA"];
|
||||
|
||||
If TypeOf(DataValue) = Type("BinaryData") Then
|
||||
Value = New Structure("BYTEA", Base64String(DataValue));
|
||||
Else
|
||||
|
||||
DataFile = New File(String(DataValue));
|
||||
|
||||
If DataFile.Exist() Then
|
||||
|
||||
CurrentData = New BinaryData(String(DataValue));
|
||||
Value = New Structure("BYTEA", Base64String(CurrentData));
|
||||
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Value;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
10
src/en/OInt/core/Modules/OPI_SQLite.os
vendored
10
src/en/OInt/core/Modules/OPI_SQLite.os
vendored
@ -342,6 +342,16 @@ Function ConnectorName() Export
|
||||
Return "OPI_SQLite";
|
||||
EndFunction
|
||||
|
||||
Function GetFeatures() Export
|
||||
|
||||
Features = New Structure;
|
||||
Features.Insert("ParameterNumeration", True);
|
||||
Features.Insert("ParameterMarker" , "?");
|
||||
|
||||
Return Features;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
|
1
src/en/OInt/lib.config
vendored
1
src/en/OInt/lib.config
vendored
@ -10,6 +10,7 @@
|
||||
<module name="OPI_Neocities" file="core/Modules/OPI_Neocities.os"/>
|
||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||
<module name="OPI_Ozon" file="core/Modules/OPI_Ozon.os"/>
|
||||
<module name="OPI_PostgreSQL" file="core/Modules/OPI_PostgreSQL.os"/>
|
||||
<module name="OPI_S3" file="core/Modules/OPI_S3.os"/>
|
||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||
<module name="OPI_SQLite" file="core/Modules/OPI_SQLite.os"/>
|
||||
|
141
src/en/OInt/tests/Modules/internal/OPI_Tests.os
vendored
141
src/en/OInt/tests/Modules/internal/OPI_Tests.os
vendored
@ -2311,6 +2311,24 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure Postgres_ORM() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
|
||||
|
||||
PostgreSQL_CreateDatabase(TestParameters);
|
||||
PostgreSQL_CreateTable(TestParameters);
|
||||
PostgreSQL_AddRecords(TestParameters);
|
||||
PostgreSQL_DropDatabase(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
@ -17274,6 +17292,129 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure PostgreSQL_CreateDatabase(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
|
||||
|
||||
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateDatabase", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_DropDatabase(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.DropDatabase(Base, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "DropDatabase", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_CreateTable(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("bool_field" , "BOOL");
|
||||
ColoumnsStruct.Insert("char_field" , """char""");
|
||||
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
|
||||
ColoumnsStruct.Insert("int_field" , "INT");
|
||||
ColoumnsStruct.Insert("oid_field" , "OID");
|
||||
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
|
||||
ColoumnsStruct.Insert("real_field" , "REAL");
|
||||
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
|
||||
ColoumnsStruct.Insert("text_field" , "TEXT");
|
||||
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
|
||||
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
|
||||
ColoumnsStruct.Insert("ip_field" , "INET");
|
||||
|
||||
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateTable", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_AddRecords(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
Image = FunctionParameters["Picture"];
|
||||
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
|
||||
|
||||
Char = New Map;
|
||||
Char.Insert("""char""", 1);
|
||||
|
||||
DP = New Map;
|
||||
DP.Insert("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
RecordStructure = New Structure;
|
||||
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
|
||||
RecordStructure.Insert("char_field" , Char);
|
||||
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
|
||||
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
|
||||
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
|
||||
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
|
||||
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
|
||||
RecordStructure.Insert("dp_field" , DP);
|
||||
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
|
||||
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
|
||||
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP", 1739207915));
|
||||
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
|
||||
|
||||
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "AddRecords", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
144
src/en/OInt/tools/Modules/OPI_SQLQueries.os
vendored
144
src/en/OInt/tools/Modules/OPI_SQLQueries.os
vendored
@ -44,6 +44,32 @@
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function CreateDatabase(Val Module, Val Base, Val Connection = "") Export
|
||||
|
||||
Scheme = NewSQLScheme("CREATEDATABASE");
|
||||
|
||||
SetBaseName(Scheme, Base);
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
Result = Module.ExecuteSQLQuery(Request, , , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function DropDatabase(Val Module, Val Base, Val Connection = "") Export
|
||||
|
||||
Scheme = NewSQLScheme("DROPDATABASE");
|
||||
|
||||
SetBaseName(Scheme, Base);
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
Result = Module.ExecuteSQLQuery(Request, , , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function CreateTable(Val Module, Val Table, Val ColoumnsStruct, Val Connection = "") Export
|
||||
|
||||
ErrorText = "The column structure is not a valid key-value structure";
|
||||
@ -207,7 +233,7 @@ EndFunction
|
||||
|
||||
#Region Scheme
|
||||
|
||||
Function NewSQLScheme(Val Action)
|
||||
Function NewSQLScheme(Val Action, Val Features = Undefined)
|
||||
|
||||
OPI_TypeConversion.GetLine(Action);
|
||||
|
||||
@ -219,7 +245,7 @@ Function NewSQLScheme(Val Action)
|
||||
|
||||
ElsIf Action = "INSERT" Then
|
||||
|
||||
Scheme = EmptySchemeInsert();
|
||||
Scheme = EmptySchemeInsert(Features);
|
||||
|
||||
ElsIf Action = "UPDATE" Then
|
||||
|
||||
@ -240,6 +266,15 @@ Function NewSQLScheme(Val Action)
|
||||
ElsIf Action = "TRUNCATE" Then
|
||||
|
||||
Scheme = EmptySchemeTruncate();
|
||||
|
||||
ElsIf Action = "CREATEDATABASE" Then
|
||||
|
||||
Scheme = EmptySchemeCreateDatabase();
|
||||
|
||||
ElsIf Action = "DROPDATABASE" Then
|
||||
|
||||
Scheme = EmptySchemeDropDatabase();
|
||||
|
||||
Else
|
||||
|
||||
Scheme = New Structure;
|
||||
@ -265,12 +300,17 @@ Function EmptySchemeSelect()
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeInsert()
|
||||
Function EmptySchemeInsert(Val Features)
|
||||
|
||||
Scheme = New Structure("type", "INSERT");
|
||||
|
||||
ParameterNumeration = ?(ValueIsFilled(Features), Features["ParameterNumeration"], False);
|
||||
ParameterMarker = ?(ValueIsFilled(Features), Features["ParameterMarker"] , "?");
|
||||
|
||||
Scheme.Insert("table", "");
|
||||
Scheme.Insert("set" , New Array);
|
||||
Scheme.Insert("nump" , ParameterNumeration);
|
||||
Scheme.Insert("markp", ParameterMarker);
|
||||
|
||||
Return Scheme;
|
||||
|
||||
@ -332,6 +372,26 @@ Function EmptySchemeTruncate()
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeCreateDatabase();
|
||||
|
||||
Scheme = New Structure("type", "CREATEDATABASE");
|
||||
|
||||
Scheme.Insert("database" , "");
|
||||
|
||||
Return Scheme;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeDropDatabase();
|
||||
|
||||
Scheme = New Structure("type", "DROPDATABASE");
|
||||
|
||||
Scheme.Insert("database" , "");
|
||||
|
||||
Return Scheme;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Processors
|
||||
@ -377,6 +437,13 @@ Function FormSQLText(Val Scheme)
|
||||
|
||||
QueryText = FormTextTruncate(Scheme);
|
||||
|
||||
ElsIf SchemeType = "CREATEDATABASE" Then
|
||||
|
||||
QueryText = FormTextCreateDatabase(Scheme);
|
||||
|
||||
ElsIf SchemeType = "DROPDATABASE" Then
|
||||
|
||||
QueryText = FormTextDropDatabase(Scheme);
|
||||
Else
|
||||
|
||||
QueryText = "";
|
||||
@ -412,15 +479,25 @@ Function FormTextInsert(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "table,set");
|
||||
|
||||
Table = Scheme["table"];
|
||||
Fields = Scheme["set"];
|
||||
Table = Scheme["table"];
|
||||
Fields = Scheme["set"];
|
||||
Numeration = Scheme["nump"];
|
||||
Marker = Scheme["markp"];
|
||||
|
||||
SQLTemplate = "INSERT INTO %1 (%2) VALUES (%3)";
|
||||
|
||||
Parameters = New Array;
|
||||
|
||||
For N = 1 To Fields.Count() Do
|
||||
Parameters.Add("?" + OPI_Tools.NumberToString(N));
|
||||
|
||||
CurrentMarker = Marker;
|
||||
|
||||
If Numeration Then
|
||||
CurrentMarker = CurrentMarker + OPI_Tools.NumberToString(N);
|
||||
EndIf;
|
||||
|
||||
Parameters.Add(CurrentMarker);
|
||||
|
||||
EndDo;
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate
|
||||
@ -530,6 +607,34 @@ Function FormTextTruncate(Val Scheme)
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormTextCreateDatabase(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "database");
|
||||
|
||||
Base = Scheme["database"];
|
||||
|
||||
SQLTemplate = "CREATE DATABASE %1";
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate, Base);
|
||||
|
||||
Return TextSQL;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormTextDropDatabase(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "database");
|
||||
|
||||
Base = Scheme["database"];
|
||||
|
||||
SQLTemplate = "DROP DATABASE %1";
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate, Base);
|
||||
|
||||
Return TextSQL;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Auxiliary
|
||||
@ -634,7 +739,9 @@ Function AddRow(Val Module, Val Table, Val Record, Val Connection)
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT");
|
||||
Features = Module.GetFeatures();
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Features);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
@ -751,9 +858,10 @@ Function CreateConnectionInsideModule(Val Connector, Val Base)
|
||||
OPI_TypeConversion.GetLine(Base);
|
||||
OPI_Tools.RestoreEscapeSequences(Base);
|
||||
|
||||
Connector = AttachAddInOnServer("OPI_SQLite");
|
||||
FieldName = GetPrimaryFieldName(Connector);
|
||||
Connector = AttachAddInOnServer(Connector);
|
||||
|
||||
Connector.Database = Base;
|
||||
Connector[FieldName] = Base;
|
||||
|
||||
Result = Connector.Connect();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
@ -784,6 +892,16 @@ Function AttachAddInOnServer(Val AddInName, Val Class = "Main")
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetPrimaryFieldName(Val Connector)
|
||||
|
||||
If Connector = "OPI_SQLite" Then
|
||||
Return "Database";
|
||||
Else
|
||||
Return "ConnectionString";
|
||||
EndIf;
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray)
|
||||
|
||||
ErrorText = "Incorrect data set for updating";
|
||||
@ -930,6 +1048,14 @@ Procedure SetTableName(Scheme, Val Name)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetBaseName(Scheme, Val Name)
|
||||
|
||||
OPI_TypeConversion.GetLine(Name);
|
||||
|
||||
Scheme.Insert("database", Name);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetLimit(Scheme, Val Count)
|
||||
|
||||
OPI_TypeConversion.GetNumber(Count);
|
||||
|
@ -53,6 +53,7 @@ Function GetTestingSectionMapping() Export
|
||||
Sections.Insert("VK" , 5);
|
||||
Sections.Insert("Viber" , 5);
|
||||
Sections.Insert("Twitter" , 4);
|
||||
Sections.Insert("PostgreSQL" , 5);
|
||||
Sections.Insert("SQLite" , 5);
|
||||
Sections.Insert("YandexDisk" , 5);
|
||||
Sections.Insert("GoogleWorkspace", 2);
|
||||
@ -86,6 +87,7 @@ Function GetTestingSectionMappingGA() Export
|
||||
Sections.Insert("VK" , StandardDependencies);
|
||||
Sections.Insert("Viber" , StandardDependencies);
|
||||
Sections.Insert("Twitter" , StandardDependencies);
|
||||
Sections.Insert("PostgreSQL" , StandardDependencies);
|
||||
Sections.Insert("SQLite" , StandardDependencies);
|
||||
Sections.Insert("YandexDisk" , StandardDependencies);
|
||||
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
||||
@ -133,6 +135,7 @@ Function GetTestTable() Export
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
SQLite = "SQLite";
|
||||
Postgres = "PostgreSQL";
|
||||
|
||||
TestTable = New ValueTable;
|
||||
TestTable.Columns.Add("Method");
|
||||
@ -270,6 +273,7 @@ Function GetTestTable() Export
|
||||
NewTest(TestTable, "TC_Client" , "TCP Client" , TCP);
|
||||
NewTest(TestTable, "SQLL_CommonMethods" , "Common methods" , SQLite);
|
||||
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
|
||||
NewTest(TestTable, "Postgres_ORM" , "ORM" , Postgres);
|
||||
|
||||
Return TestTable;
|
||||
|
||||
@ -2386,15 +2390,7 @@ Procedure WriteCLICall(Val Library, Val Method, Val Options)
|
||||
EndIf;
|
||||
|
||||
CurrentOption = FormOption(Option.Value, Option.Key);
|
||||
|
||||
If Library = "bitrix24"
|
||||
And Option.Key = "url" Then
|
||||
|
||||
CurrentOption = ?(StrFind(CurrentOption, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, CurrentOption);
|
||||
|
||||
EndIf;
|
||||
ProcessSpecialOptionsSecrets(Library, Option.Key, CurrentOption);
|
||||
|
||||
OptionsArray.Add(CurrentOption);
|
||||
|
||||
@ -2427,4 +2423,26 @@ Procedure WriteCLICall(Val Library, Val Method, Val Options)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ProcessSpecialOptionsSecrets(Val Library, Val Option, Value)
|
||||
|
||||
If Library = "bitrix24"
|
||||
And Option = "url" Then
|
||||
|
||||
Value = ?(StrFind(Value, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, Value);
|
||||
|
||||
Return;
|
||||
|
||||
EndIf;
|
||||
|
||||
If Library = "postgres"
|
||||
And Option = "conn" Then
|
||||
|
||||
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
483
src/en/OPI/src/CommonModules/OPI_PostgreSQL/Module.bsl
vendored
Normal file
483
src/en/OPI/src/CommonModules/OPI_PostgreSQL/Module.bsl
vendored
Normal file
@ -0,0 +1,483 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os
|
||||
// Lib: SQLite
|
||||
// CLI: sqlite
|
||||
|
||||
// MIT License
|
||||
|
||||
// Copyright (c) 2023 Anton Tsitavets
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// BSLLS:Typo-off
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:LineLength-off
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
//@skip-check module-structure-method-in-regions
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
//@skip-check constructor-function-return-section
|
||||
|
||||
// Uncomment if OneScript is executed
|
||||
// #Use "../../tools"
|
||||
|
||||
#Region Public
|
||||
|
||||
#Region CommonMethods
|
||||
|
||||
// Create Connection !NOCLI
|
||||
// Creates a connection to the specified base
|
||||
//
|
||||
// Parameters:
|
||||
// ConnectionString - String - Connection string. See GenerateConnectionString - sting
|
||||
//
|
||||
// Returns:
|
||||
// Arbitrary - Connector object or structure with error information
|
||||
Function CreateConnection(Val ConnectionString = "") Export
|
||||
|
||||
If IsConnector(ConnectionString) Then
|
||||
Return ConnectionString;
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionString);
|
||||
OPI_Tools.RestoreEscapeSequences(ConnectionString);
|
||||
|
||||
Connector = AttachAddInOnServer("OPI_PostgreSQL");
|
||||
|
||||
Connector.ConnectionString = ConnectionString;
|
||||
|
||||
Result = Connector.Connect();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Return ?(Result["result"], Connector, Result);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Close connection !NOCLI
|
||||
// Explicitly closes the passed connection
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - AddIn object with open connection - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of connection termination
|
||||
Function CloseConnection(Val Connection) Export
|
||||
|
||||
If IsConnector(Connection) Then
|
||||
|
||||
Result = Connection.Close();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Else
|
||||
|
||||
Result = New Structure("result,error", False, "It's not a connection");
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Is connector !NOCLI
|
||||
// Checks that the value is an object of a SQLite AddIn
|
||||
//
|
||||
// Parameters:
|
||||
// Value - Arbitrary - Value to check - value
|
||||
//
|
||||
// Returns:
|
||||
// Boolean - Is connector
|
||||
Function IsConnector(Val Value) Export
|
||||
|
||||
Return String(TypeOf(Value)) = "AddIn.OPI_PostgreSQL.Main";
|
||||
|
||||
EndFunction
|
||||
|
||||
// Execute SQL query
|
||||
// Executes an arbitrary SQL query
|
||||
//
|
||||
// Note
|
||||
// Available parameter types: String, Number, Date, Boolean, BinaryData.^^
|
||||
// Binary data can also be passed as a `{'blob':File path}` structure. Binary data (BLOB) values are returned^^
|
||||
// as `{'blob':Base64 string}`
|
||||
// Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword^^
|
||||
// For other queries, `result:true` or `false` with error text is returned
|
||||
//
|
||||
// Parameters:
|
||||
// QueryText - String - Database query text - sql
|
||||
// Parameters - Array Of Arbitrary - Array of positional parameters of the request - params
|
||||
// ForceResult - Boolean - Includes an attempt to retrieve the result, even for nonSELECT queries - force
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of query execution
|
||||
Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Parameters = ""
|
||||
, Val ForceResult = False
|
||||
, Val Connection = "") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(QueryText);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
Connector = CreateConnection(Connection);
|
||||
|
||||
If TypeOf(Connector) <> Type("AddIn.OPI_PostgreSQL.Main") Then
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Generate connection string
|
||||
// Forms a connection string from the passed data
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - IP address or domain name of the server - addr
|
||||
// Base - String - Name of the database to connect - db
|
||||
// Login - String - Postgres user login - login
|
||||
// Password - String - Postgres user password - pass
|
||||
// Port - String - Connection port - port
|
||||
//
|
||||
// Returns:
|
||||
// String - PostgreSQL database connection string
|
||||
Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "5432") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(Address);
|
||||
OPI_TypeConversion.GetLine(Login);
|
||||
OPI_TypeConversion.GetLine(Base);
|
||||
OPI_TypeConversion.GetLine(Port);
|
||||
OPI_TypeConversion.GetLine(Password);
|
||||
|
||||
Port = ?(ValueIsFilled(Port), ":" + Port, Port);
|
||||
Password = ?(ValueIsFilled(Password), ":" + Password, Password);
|
||||
|
||||
StringTemplate = "postgresql://%1%2@%3%4/%5";
|
||||
ConnectionString = StrTemplate(StringTemplate, Login, Password, Address, Port, Base);
|
||||
|
||||
Return ConnectionString;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region ORM
|
||||
|
||||
// Create database
|
||||
// Creates a database with the specified name
|
||||
//
|
||||
// Parameters:
|
||||
// Base - String - Database name - base
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function CreateDatabase(Val Base, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.CreateDatabase(OPI_PostgreSQL, Base, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Drop database
|
||||
// Deletes the database
|
||||
//
|
||||
// Parameters:
|
||||
// Base - String - Database name - base
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DropDatabase(Val Base, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DropDatabase(OPI_PostgreSQL, Base, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Create table
|
||||
// Creates an empty table in the database
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// ColoumnsStruct - Structure Of KeyAndValue - Column structure: Key > Name, Value > Data type - cols
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.CreateTable(OPI_PostgreSQL, Table, ColoumnsStruct, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Add rows
|
||||
// Adds new rows to the table
|
||||
//
|
||||
// Note
|
||||
// Binary data can also be transferred as a structure `{'blob':File path}`
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// DataArray - Array of Structure - An array of string data structures: Key > field, Value > field value - rows
|
||||
// Transaction - Boolean - True > adding records to transactions with rollback on error - trn
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.AddRecords(OPI_PostgreSQL, Table, DataArray, Transaction, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get records
|
||||
// Gets records from the selected table
|
||||
//
|
||||
// Note
|
||||
// Values of the Binary data type (BLOB) are returned as `{'blob':Base64 string}`
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Fields - Array Of String - Fields for selection - fields
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Sort - Structure Of KeyAndValue - Sorting: Key > field name, Value > direction (ASC, DESC) - order
|
||||
// Count - Number - Limiting the number of received strings - limit
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function GetRecords(Val Table
|
||||
, Val Fields = "*"
|
||||
, Val Filters = ""
|
||||
, Val Sort = ""
|
||||
, Val Count = ""
|
||||
, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.GetRecords(OPI_PostgreSQL, Table, Fields, Filters, Sort, Count, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Update records
|
||||
// Updates the value of records by selected criteria
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// ValueStructure - Structure Of KeyAndValue - Values structure: Key > field, Value > field value - values
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.UpdateRecords(OPI_PostgreSQL, Table, ValueStructure, Filters, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Delete records
|
||||
// Deletes records from the table
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DeletePosts(Val Table, Val Filters = "", Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeletePosts(OPI_PostgreSQL, Table, Filters, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Delete table
|
||||
// Deletes a table from the database
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function DeleteTable(Val Table, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeleteTable(OPI_PostgreSQL, Table, Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Clear table
|
||||
// Clears the database table
|
||||
//
|
||||
// Parameters:
|
||||
// Table - String - Table name - table
|
||||
// Connection - String, Arbitrary - Connection or connection string - dbc
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue, String - Result of query execution
|
||||
Function ClearTable(Val Table, Val Connection = "") Export
|
||||
|
||||
Result = OPI_SQLQueries.DeletePosts(OPI_PostgreSQL, Table, , Connection);
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get records filter strucutre
|
||||
// Gets the template structure for filtering records in ORM queries
|
||||
//
|
||||
// Note
|
||||
// The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`.^^
|
||||
// For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 `^^
|
||||
// where `?1 = "10 AND 20,"' which would cause an error.
|
||||
// In such a case, you must use `raw:true` to set the condition directly in the query text
|
||||
//
|
||||
// Parameters:
|
||||
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Record filter element
|
||||
Function GetRecordsFilterStrucutre(Val Clear = False) Export
|
||||
|
||||
Return OPI_SQLQueries.GetRecordsFilterStrucutre(Clear);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function ConnectorName() Export
|
||||
Return "OPI_PostgreSQL";
|
||||
EndFunction
|
||||
|
||||
Function GetFeatures() Export
|
||||
|
||||
Features = New Structure;
|
||||
Features.Insert("ParameterNumeration", True);
|
||||
Features.Insert("ParameterMarker" , "$");
|
||||
|
||||
Return Features;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
|
||||
Function AttachAddInOnServer(Val AddInName, Val Class = "Main")
|
||||
|
||||
If OPI_Tools.IsOneScript() Then
|
||||
TemplateName = OPI_Tools.AddInsFolderOS() + AddInName + ".zip";
|
||||
Else
|
||||
TemplateName = "CommonTemplate." + AddInName;
|
||||
EndIf;
|
||||
|
||||
AttachAddIn(TemplateName, AddInName, AddInType.Native);
|
||||
|
||||
AddIn = New ("AddIn." + AddInName + "." + Class);
|
||||
Return AddIn;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetArray(Parameters);
|
||||
|
||||
For N = 0 To Parameters.UBound() Do
|
||||
|
||||
CurrentParameter = Parameters[N];
|
||||
|
||||
If TypeOf(CurrentParameter) = Type("BinaryData") Then
|
||||
|
||||
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
|
||||
|
||||
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
|
||||
|
||||
CurrentParameter = ProcessBlobStructure(CurrentParameter);
|
||||
|
||||
ElsIf TypeOf(CurrentParameter) = Type("Date") Then
|
||||
|
||||
CurrentParameter = Format(CurrentParameter, "DF='yyyy-MM-dd HH:MM:ss");
|
||||
|
||||
ElsIf TypeOf(CurrentParameter) = Type("Structure") Or TypeOf(CurrentParameter) = Type("Map") Then
|
||||
|
||||
Continue;
|
||||
|
||||
Else
|
||||
|
||||
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
|
||||
OPI_TypeConversion.GetLine(CurrentParameter);
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Parameters[N] = CurrentParameter;
|
||||
|
||||
EndDo;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessBlobStructure(Val Value)
|
||||
|
||||
DataValue = Value["BYTEA"];
|
||||
|
||||
If TypeOf(DataValue) = Type("BinaryData") Then
|
||||
Value = New Structure("BYTEA", Base64String(DataValue));
|
||||
Else
|
||||
|
||||
DataFile = New File(String(DataValue));
|
||||
|
||||
If DataFile.Exists() Then
|
||||
|
||||
CurrentData = New BinaryData(String(DataValue));
|
||||
Value = New Structure("BYTEA", Base64String(CurrentData));
|
||||
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Value;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
11
src/en/OPI/src/CommonModules/OPI_PostgreSQL/OPI_PostgreSQL.mdo
vendored
Normal file
11
src/en/OPI/src/CommonModules/OPI_PostgreSQL/OPI_PostgreSQL.mdo
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="80366dfb-0340-4cbf-b9b5-18489bd1643f">
|
||||
<name>OPI_PostgreSQL</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Postgre SQL (OpenIntegrations)</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -44,6 +44,32 @@
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function CreateDatabase(Val Module, Val Base, Val Connection = "") Export
|
||||
|
||||
Scheme = NewSQLScheme("CREATEDATABASE");
|
||||
|
||||
SetBaseName(Scheme, Base);
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
Result = Module.ExecuteSQLQuery(Request, , , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function DropDatabase(Val Module, Val Base, Val Connection = "") Export
|
||||
|
||||
Scheme = NewSQLScheme("DROPDATABASE");
|
||||
|
||||
SetBaseName(Scheme, Base);
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
Result = Module.ExecuteSQLQuery(Request, , , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function CreateTable(Val Module, Val Table, Val ColoumnsStruct, Val Connection = "") Export
|
||||
|
||||
ErrorText = "The column structure is not a valid key-value structure";
|
||||
@ -207,7 +233,7 @@ EndFunction
|
||||
|
||||
#Region Scheme
|
||||
|
||||
Function NewSQLScheme(Val Action)
|
||||
Function NewSQLScheme(Val Action, Val Features = Undefined)
|
||||
|
||||
OPI_TypeConversion.GetLine(Action);
|
||||
|
||||
@ -219,7 +245,7 @@ Function NewSQLScheme(Val Action)
|
||||
|
||||
ElsIf Action = "INSERT" Then
|
||||
|
||||
Scheme = EmptySchemeInsert();
|
||||
Scheme = EmptySchemeInsert(Features);
|
||||
|
||||
ElsIf Action = "UPDATE" Then
|
||||
|
||||
@ -240,6 +266,15 @@ Function NewSQLScheme(Val Action)
|
||||
ElsIf Action = "TRUNCATE" Then
|
||||
|
||||
Scheme = EmptySchemeTruncate();
|
||||
|
||||
ElsIf Action = "CREATEDATABASE" Then
|
||||
|
||||
Scheme = EmptySchemeCreateDatabase();
|
||||
|
||||
ElsIf Action = "DROPDATABASE" Then
|
||||
|
||||
Scheme = EmptySchemeDropDatabase();
|
||||
|
||||
Else
|
||||
|
||||
Scheme = New Structure;
|
||||
@ -265,12 +300,17 @@ Function EmptySchemeSelect()
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeInsert()
|
||||
Function EmptySchemeInsert(Val Features)
|
||||
|
||||
Scheme = New Structure("type", "INSERT");
|
||||
|
||||
ParameterNumeration = ?(ValueIsFilled(Features), Features["ParameterNumeration"], False);
|
||||
ParameterMarker = ?(ValueIsFilled(Features), Features["ParameterMarker"] , "?");
|
||||
|
||||
Scheme.Insert("table", "");
|
||||
Scheme.Insert("set" , New Array);
|
||||
Scheme.Insert("nump" , ParameterNumeration);
|
||||
Scheme.Insert("markp", ParameterMarker);
|
||||
|
||||
Return Scheme;
|
||||
|
||||
@ -332,6 +372,26 @@ Function EmptySchemeTruncate()
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeCreateDatabase();
|
||||
|
||||
Scheme = New Structure("type", "CREATEDATABASE");
|
||||
|
||||
Scheme.Insert("database" , "");
|
||||
|
||||
Return Scheme;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function EmptySchemeDropDatabase();
|
||||
|
||||
Scheme = New Structure("type", "DROPDATABASE");
|
||||
|
||||
Scheme.Insert("database" , "");
|
||||
|
||||
Return Scheme;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Processors
|
||||
@ -377,6 +437,13 @@ Function FormSQLText(Val Scheme)
|
||||
|
||||
QueryText = FormTextTruncate(Scheme);
|
||||
|
||||
ElsIf SchemeType = "CREATEDATABASE" Then
|
||||
|
||||
QueryText = FormTextCreateDatabase(Scheme);
|
||||
|
||||
ElsIf SchemeType = "DROPDATABASE" Then
|
||||
|
||||
QueryText = FormTextDropDatabase(Scheme);
|
||||
Else
|
||||
|
||||
QueryText = "";
|
||||
@ -412,15 +479,25 @@ Function FormTextInsert(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "table,set");
|
||||
|
||||
Table = Scheme["table"];
|
||||
Fields = Scheme["set"];
|
||||
Table = Scheme["table"];
|
||||
Fields = Scheme["set"];
|
||||
Numeration = Scheme["nump"];
|
||||
Marker = Scheme["markp"];
|
||||
|
||||
SQLTemplate = "INSERT INTO %1 (%2) VALUES (%3)";
|
||||
|
||||
Parameters = New Array;
|
||||
|
||||
For N = 1 To Fields.Count() Do
|
||||
Parameters.Add("?" + OPI_Tools.NumberToString(N));
|
||||
|
||||
CurrentMarker = Marker;
|
||||
|
||||
If Numeration Then
|
||||
CurrentMarker = CurrentMarker + OPI_Tools.NumberToString(N);
|
||||
EndIf;
|
||||
|
||||
Parameters.Add(CurrentMarker);
|
||||
|
||||
EndDo;
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate
|
||||
@ -530,6 +607,34 @@ Function FormTextTruncate(Val Scheme)
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormTextCreateDatabase(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "database");
|
||||
|
||||
Base = Scheme["database"];
|
||||
|
||||
SQLTemplate = "CREATE DATABASE %1";
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate, Base);
|
||||
|
||||
Return TextSQL;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormTextDropDatabase(Val Scheme)
|
||||
|
||||
CheckSchemeRequiredFields(Scheme, "database");
|
||||
|
||||
Base = Scheme["database"];
|
||||
|
||||
SQLTemplate = "DROP DATABASE %1";
|
||||
|
||||
TextSQL = StrTemplate(SQLTemplate, Base);
|
||||
|
||||
Return TextSQL;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Auxiliary
|
||||
@ -634,7 +739,9 @@ Function AddRow(Val Module, Val Table, Val Record, Val Connection)
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT");
|
||||
Features = Module.GetFeatures();
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Features);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
@ -751,9 +858,10 @@ Function CreateConnectionInsideModule(Val Connector, Val Base)
|
||||
OPI_TypeConversion.GetLine(Base);
|
||||
OPI_Tools.RestoreEscapeSequences(Base);
|
||||
|
||||
Connector = AttachAddInOnServer("OPI_SQLite");
|
||||
FieldName = GetPrimaryFieldName(Connector);
|
||||
Connector = AttachAddInOnServer(Connector);
|
||||
|
||||
Connector.Database = Base;
|
||||
Connector[FieldName] = Base;
|
||||
|
||||
Result = Connector.Connect();
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
@ -784,6 +892,16 @@ Function AttachAddInOnServer(Val AddInName, Val Class = "Main")
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetPrimaryFieldName(Val Connector)
|
||||
|
||||
If Connector = "OPI_SQLite" Then
|
||||
Return "Database";
|
||||
Else
|
||||
Return "ConnectionString";
|
||||
EndIf;
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray)
|
||||
|
||||
ErrorText = "Incorrect data set for updating";
|
||||
@ -930,6 +1048,14 @@ Procedure SetTableName(Scheme, Val Name)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetBaseName(Scheme, Val Name)
|
||||
|
||||
OPI_TypeConversion.GetLine(Name);
|
||||
|
||||
Scheme.Insert("database", Name);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetLimit(Scheme, Val Count)
|
||||
|
||||
OPI_TypeConversion.GetNumber(Count);
|
||||
|
@ -342,6 +342,16 @@ Function ConnectorName() Export
|
||||
Return "OPI_SQLite";
|
||||
EndFunction
|
||||
|
||||
Function GetFeatures() Export
|
||||
|
||||
Features = New Structure;
|
||||
Features.Insert("ParameterNumeration", True);
|
||||
Features.Insert("ParameterMarker" , "?");
|
||||
|
||||
Return Features;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
|
@ -53,6 +53,7 @@ Function GetTestingSectionMapping() Export
|
||||
Sections.Insert("VK" , 5);
|
||||
Sections.Insert("Viber" , 5);
|
||||
Sections.Insert("Twitter" , 4);
|
||||
Sections.Insert("PostgreSQL" , 5);
|
||||
Sections.Insert("SQLite" , 5);
|
||||
Sections.Insert("YandexDisk" , 5);
|
||||
Sections.Insert("GoogleWorkspace", 2);
|
||||
@ -86,6 +87,7 @@ Function GetTestingSectionMappingGA() Export
|
||||
Sections.Insert("VK" , StandardDependencies);
|
||||
Sections.Insert("Viber" , StandardDependencies);
|
||||
Sections.Insert("Twitter" , StandardDependencies);
|
||||
Sections.Insert("PostgreSQL" , StandardDependencies);
|
||||
Sections.Insert("SQLite" , StandardDependencies);
|
||||
Sections.Insert("YandexDisk" , StandardDependencies);
|
||||
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
||||
@ -133,6 +135,7 @@ Function GetTestTable() Export
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
SQLite = "SQLite";
|
||||
Postgres = "PostgreSQL";
|
||||
|
||||
TestTable = New ValueTable;
|
||||
TestTable.Columns.Add("Method");
|
||||
@ -270,6 +273,7 @@ Function GetTestTable() Export
|
||||
NewTest(TestTable, "TC_Client" , "TCP Client" , TCP);
|
||||
NewTest(TestTable, "SQLL_CommonMethods" , "Common methods" , SQLite);
|
||||
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
|
||||
NewTest(TestTable, "Postgres_ORM" , "ORM" , Postgres);
|
||||
|
||||
Return TestTable;
|
||||
|
||||
@ -2386,15 +2390,7 @@ Procedure WriteCLICall(Val Library, Val Method, Val Options)
|
||||
EndIf;
|
||||
|
||||
CurrentOption = FormOption(Option.Value, Option.Key);
|
||||
|
||||
If Library = "bitrix24"
|
||||
And Option.Key = "url" Then
|
||||
|
||||
CurrentOption = ?(StrFind(CurrentOption, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, CurrentOption);
|
||||
|
||||
EndIf;
|
||||
ProcessSpecialOptionsSecrets(Library, Option.Key, CurrentOption);
|
||||
|
||||
OptionsArray.Add(CurrentOption);
|
||||
|
||||
@ -2427,4 +2423,26 @@ Procedure WriteCLICall(Val Library, Val Method, Val Options)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ProcessSpecialOptionsSecrets(Val Library, Val Option, Value)
|
||||
|
||||
If Library = "bitrix24"
|
||||
And Option = "url" Then
|
||||
|
||||
Value = ?(StrFind(Value, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, Value);
|
||||
|
||||
Return;
|
||||
|
||||
EndIf;
|
||||
|
||||
If Library = "postgres"
|
||||
And Option = "conn" Then
|
||||
|
||||
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
141
src/en/OPI/src/CommonModules/OPI_Tests/Module.bsl
vendored
141
src/en/OPI/src/CommonModules/OPI_Tests/Module.bsl
vendored
@ -2311,6 +2311,24 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure Postgres_ORM() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
|
||||
|
||||
PostgreSQL_CreateDatabase(TestParameters);
|
||||
PostgreSQL_CreateTable(TestParameters);
|
||||
PostgreSQL_AddRecords(TestParameters);
|
||||
PostgreSQL_DropDatabase(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
@ -17274,6 +17292,129 @@ EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region PostgreSQL
|
||||
|
||||
Procedure PostgreSQL_CreateDatabase(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
|
||||
|
||||
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateDatabase", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_DropDatabase(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "postgres";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Base = "testbase1";
|
||||
|
||||
Result = OPI_PostgreSQL.DropDatabase(Base, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "DropDatabase", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_CreateTable(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("bool_field" , "BOOL");
|
||||
ColoumnsStruct.Insert("char_field" , """char""");
|
||||
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
|
||||
ColoumnsStruct.Insert("int_field" , "INT");
|
||||
ColoumnsStruct.Insert("oid_field" , "OID");
|
||||
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
|
||||
ColoumnsStruct.Insert("real_field" , "REAL");
|
||||
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
|
||||
ColoumnsStruct.Insert("text_field" , "TEXT");
|
||||
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
|
||||
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
|
||||
ColoumnsStruct.Insert("ip_field" , "INET");
|
||||
|
||||
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateTable", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure PostgreSQL_AddRecords(FunctionParameters)
|
||||
|
||||
Address = FunctionParameters["PG_IP"];
|
||||
Login = "bayselonarrend";
|
||||
Password = FunctionParameters["PG_Password"];
|
||||
Base = "testbase1";
|
||||
|
||||
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
|
||||
|
||||
Table = "testtable";
|
||||
|
||||
Image = FunctionParameters["Picture"];
|
||||
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
|
||||
|
||||
Char = New Map;
|
||||
Char.Insert("""char""", 1);
|
||||
|
||||
DP = New Map;
|
||||
DP.Insert("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
RecordStructure = New Structure;
|
||||
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
|
||||
RecordStructure.Insert("char_field" , Char);
|
||||
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
|
||||
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
|
||||
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
|
||||
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
|
||||
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
|
||||
RecordStructure.Insert("dp_field" , DP);
|
||||
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
|
||||
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
|
||||
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP", 1739207915));
|
||||
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
|
||||
|
||||
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "AddRecords", "PostgreSQL");
|
||||
OPI_TestDataRetrieval.Check_ResultTrue(Result);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
@ -53,6 +53,7 @@
|
||||
<commonModules>CommonModule.OPI_Neocities</commonModules>
|
||||
<commonModules>CommonModule.OPI_Notion</commonModules>
|
||||
<commonModules>CommonModule.OPI_Ozon</commonModules>
|
||||
<commonModules>CommonModule.OPI_PostgreSQL</commonModules>
|
||||
<commonModules>CommonModule.OPI_Slack</commonModules>
|
||||
<commonModules>CommonModule.OPI_SQLite</commonModules>
|
||||
<commonModules>CommonModule.OPI_S3</commonModules>
|
||||
|
1
src/en/cli/data/Classes/СоставБиблиотеки.os
vendored
1
src/en/cli/data/Classes/СоставБиблиотеки.os
vendored
@ -19,6 +19,7 @@
|
||||
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
|
||||
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
|
||||
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");
|
||||
СоответствиеКомандМодулей.Вставить("sqlite", "OPI_PostgreSQL");
|
||||
СоответствиеКомандМодулей.Вставить("s3", "OPI_S3");
|
||||
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
|
||||
СоответствиеКомандМодулей.Вставить("sqlite", "OPI_SQLite");
|
||||
|
102
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
102
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@ -155,32 +155,32 @@
|
||||
|
||||
// Сформировать строку подключения
|
||||
// Формирует строку подключения из переданных данных
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - IP адрес или доменное имя сервера - addr
|
||||
// База - Строка - Имя базы данных для подключения - db
|
||||
// Логин - Строка - Логин пользователя postgres - login
|
||||
// Пароль - Строка - Пароль пользователя postgres - pass
|
||||
// Порт - Строка - Порт подключения - port
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Строка подключения к базе PostgreSQL
|
||||
Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "5432") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
|
||||
|
||||
Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт);
|
||||
Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль);
|
||||
|
||||
ШаблонСтроки = "postgresql://%1%2@%3%4/%5";
|
||||
СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База);
|
||||
|
||||
Возврат СтрокаПодключения;
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
|
||||
|
||||
Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт);
|
||||
Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль);
|
||||
|
||||
ШаблонСтроки = "postgresql://%1%2@%3%4/%5";
|
||||
СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База);
|
||||
|
||||
Возврат СтрокаПодключения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -189,7 +189,7 @@
|
||||
|
||||
// Создать базу данных
|
||||
// Создает базу данных с указанным именем
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// База - Строка - Имя базы - base
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
@ -197,15 +197,15 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция СоздатьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазу(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить базу данных
|
||||
// Удаляет базу данных
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// База - Строка - Имя базы - base
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
@ -213,10 +213,10 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция УдалитьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазу(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать таблицу
|
||||
@ -383,13 +383,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОсобенности() Экспорт
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "$");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "$");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -436,11 +436,11 @@
|
||||
ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'");
|
||||
|
||||
ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Структура") Или ТипЗнч(ТекущийПараметр) = Тип("Соответствие") Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
Иначе
|
||||
|
||||
|
||||
Продолжить;
|
||||
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
@ -460,21 +460,21 @@
|
||||
Функция ОбработатьСтруктуруBlob(Знач Значение)
|
||||
|
||||
ЗначениеДанных = Значение["BYTEA"];
|
||||
|
||||
Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ЗначениеДанных));
|
||||
Иначе
|
||||
|
||||
ФайлДанных = Новый Файл(Строка(ЗначениеДанных));
|
||||
|
||||
Если ФайлДанных.Существует() Тогда
|
||||
Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ЗначениеДанных));
|
||||
Иначе
|
||||
|
||||
ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных));
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ТекущиеДанные));
|
||||
ФайлДанных = Новый Файл(Строка(ЗначениеДанных));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
Если ФайлДанных.Существует() Тогда
|
||||
|
||||
ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных));
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ТекущиеДанные));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
|
14
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
14
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
@ -343,13 +343,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОсобенности() Экспорт
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "?");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "?");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
226
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
226
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@ -2315,16 +2315,16 @@
|
||||
|
||||
Процедура Postgres_ORM() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
|
||||
PostgreSQL_СоздатьБазуДанных(ПараметрыТеста);
|
||||
PostgreSQL_СоздатьТаблицу(ПараметрыТеста);
|
||||
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
|
||||
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
|
||||
PostgreSQL_СоздатьБазуДанных(ПараметрыТеста);
|
||||
PostgreSQL_СоздатьТаблицу(ПараметрыТеста);
|
||||
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
|
||||
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@ -17295,124 +17295,124 @@
|
||||
#Область PostgreSQL
|
||||
|
||||
Процедура PostgreSQL_СоздатьБазуДанных(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазуДанных", "PostgreSQL");
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазуДанных", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_УдалитьБазуДанных(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "PostgreSQL");
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_СоздатьТаблицу(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("bool_field", "BOOL");
|
||||
СтруктураКолонок.Вставить("char_field", """char""");
|
||||
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
|
||||
СтруктураКолонок.Вставить("int_field", "INT");
|
||||
СтруктураКолонок.Вставить("oid_field", "OID");
|
||||
СтруктураКолонок.Вставить("bigint_field", "BIGINT");
|
||||
СтруктураКолонок.Вставить("real_field", "REAL");
|
||||
СтруктураКолонок.Вставить("dp_field", "DOUBLE PRECISION");
|
||||
СтруктураКолонок.Вставить("text_field", "TEXT");
|
||||
СтруктураКолонок.Вставить("bytea_field", "BYTEA");
|
||||
СтруктураКолонок.Вставить("ts_field", "TIMESTAMP");
|
||||
СтруктураКолонок.Вставить("ip_field", "INET");
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу", "PostgreSQL");
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("bool_field" , "BOOL");
|
||||
СтруктураКолонок.Вставить("char_field" , """char""");
|
||||
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
|
||||
СтруктураКолонок.Вставить("int_field" , "INT");
|
||||
СтруктураКолонок.Вставить("oid_field" , "OID");
|
||||
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
|
||||
СтруктураКолонок.Вставить("real_field" , "REAL");
|
||||
СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION");
|
||||
СтруктураКолонок.Вставить("text_field" , "TEXT");
|
||||
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
|
||||
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
|
||||
СтруктураКолонок.Вставить("ip_field" , "INET");
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_ДобавитьЗаписи(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
Char = Новый Соответствие;
|
||||
Char.Вставить("""char""", 1);
|
||||
|
||||
DP = Новый Соответствие;
|
||||
DP.Вставить("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL", Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Char);
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT", 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT", 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID", 24576));
|
||||
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT", 9999999));
|
||||
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL", 15.2));
|
||||
СтруктураЗаписи.Вставить("dp_field" , DP);
|
||||
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT", "Some text"));
|
||||
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA", Картинка));
|
||||
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP", 1739207915));
|
||||
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET", "127.0.0.1"));
|
||||
|
||||
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
Char = Новый Соответствие;
|
||||
Char.Вставить("""char""", 1);
|
||||
|
||||
DP = Новый Соответствие;
|
||||
DP.Вставить("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Char);
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
|
||||
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
|
||||
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
|
||||
СтруктураЗаписи.Вставить("dp_field" , DP);
|
||||
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
|
||||
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка));
|
||||
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP", 1739207915));
|
||||
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1"));
|
||||
|
||||
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
182
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
182
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
@ -44,30 +44,30 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция СоздатьБазу(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("CREATEDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Функция СоздатьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("CREATEDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьБазу(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROPDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Функция УдалитьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROPDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТаблицу(Знач Модуль, Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
@ -266,15 +266,15 @@
|
||||
ИначеЕсли Действие = "TRUNCATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаTruncate();
|
||||
|
||||
|
||||
ИначеЕсли Действие = "CREATEDATABASE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreateDatabase();
|
||||
|
||||
|
||||
Схема = ПустаяСхемаCreateDatabase();
|
||||
|
||||
ИначеЕсли Действие = "DROPDATABASE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDropDatabase();
|
||||
|
||||
|
||||
Схема = ПустаяСхемаDropDatabase();
|
||||
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
@ -303,14 +303,14 @@
|
||||
Функция ПустаяСхемаInsert(Знач Особенности)
|
||||
|
||||
Схема = Новый Структура("type", "INSERT");
|
||||
|
||||
НумерацияПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["НумерацияПараметров"], Ложь);
|
||||
МаркерПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["МаркерПараметров"] , "?");
|
||||
|
||||
НумерацияПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["НумерацияПараметров"], Ложь);
|
||||
МаркерПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["МаркерПараметров"] , "?");
|
||||
|
||||
Схема.Вставить("table", "");
|
||||
Схема.Вставить("set" , Новый Массив);
|
||||
Схема.Вставить("nump" , НумерацияПараметров);
|
||||
Схема.Вставить("markp", МаркерПараметров);
|
||||
Схема.Вставить("nump" , НумерацияПараметров);
|
||||
Схема.Вставить("markp", МаркерПараметров);
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
@ -373,23 +373,23 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаCreateDatabase();
|
||||
|
||||
|
||||
Схема = Новый Структура("type", "CREATEDATABASE");
|
||||
|
||||
Схема.Вставить("database" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаDropDatabase();
|
||||
|
||||
|
||||
Схема = Новый Структура("type", "DROPDATABASE");
|
||||
|
||||
Схема.Вставить("database" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -436,14 +436,14 @@
|
||||
ИначеЕсли ТипСхемы = "TRUNCATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстTruncate(Схема);
|
||||
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATEDATABASE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreateDatabase(Схема);
|
||||
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreateDatabase(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DROPDATABASE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDropDatabase(Схема);
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDropDatabase(Схема);
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
@ -479,25 +479,25 @@
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,set");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Нумерация = Схема["nump"];
|
||||
Маркер = Схема["markp"];
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Нумерация = Схема["nump"];
|
||||
Маркер = Схема["markp"];
|
||||
|
||||
ШаблонSQL = "INSERT INTO %1 (%2) VALUES (%3)";
|
||||
|
||||
Параметры = Новый Массив;
|
||||
|
||||
Для Н = 1 По Поля.Количество() Цикл
|
||||
|
||||
ТекущийМаркер = Маркер;
|
||||
|
||||
Если Нумерация Тогда
|
||||
ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Для Н = 1 По Поля.Количество() Цикл
|
||||
|
||||
ТекущийМаркер = Маркер;
|
||||
|
||||
Если Нумерация Тогда
|
||||
ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н);
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.Добавить(ТекущийМаркер);
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL
|
||||
@ -608,31 +608,31 @@
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстCreateDatabase(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "CREATE DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "CREATE DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстDropDatabase(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "DROP DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "DROP DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -739,8 +739,8 @@
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Особенности = Модуль.ПолучитьОсобенности();
|
||||
|
||||
Особенности = Модуль.ПолучитьОсобенности();
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT", Особенности);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
@ -858,7 +858,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_Инструменты.ВернутьУправляющиеПоследовательности(База);
|
||||
|
||||
ИмяПоля = ПолучитьИмяОсновногоПоля(Коннектор);
|
||||
ИмяПоля = ПолучитьИмяОсновногоПоля(Коннектор);
|
||||
Коннектор = ПодключитьКомпонентуНаСервере(Коннектор);
|
||||
|
||||
Коннектор[ИмяПоля] = База;
|
||||
@ -893,13 +893,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИмяОсновногоПоля(Знач Коннектор)
|
||||
|
||||
Если Коннектор = "OPI_SQLite" Тогда
|
||||
Возврат "Database";
|
||||
Иначе
|
||||
Возврат "ConnectionString";
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Коннектор = "OPI_SQLite" Тогда
|
||||
Возврат "Database";
|
||||
Иначе
|
||||
Возврат "ConnectionString";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
@ -1049,11 +1049,11 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьИмяБазы(Схема, Знач Имя)
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
|
||||
Схема.Вставить("database", Имя);
|
||||
|
||||
Схема.Вставить("database", Имя);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьЛимит(Схема, Знач Количество)
|
||||
|
@ -2148,9 +2148,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
@ -2390,7 +2390,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ТекущаяОпция = ОформитьОпцию(Опция.Значение, Опция.Ключ);
|
||||
ОбработатьОсобенныеСекретыОпций(Библиотека, Опция.Ключ, ТекущаяОпция);
|
||||
ОбработатьОсобенныеСекретыОпций(Библиотека, Опция.Ключ, ТекущаяОпция);
|
||||
|
||||
МассивОпций.Добавить(ТекущаяОпция);
|
||||
|
||||
@ -2424,25 +2424,25 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьОсобенныеСекретыОпций(Знач Библиотека, Знач Опция, Значение)
|
||||
|
||||
|
||||
Если Библиотека = "bitrix24"
|
||||
И Опция = "url" Тогда
|
||||
|
||||
Значение = ?(СтрНайти(Значение, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, Значение);
|
||||
|
||||
Возврат;
|
||||
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Библиотека = "postgres"
|
||||
И Опция = "conn" Тогда
|
||||
|
||||
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
И Опция = "conn" Тогда
|
||||
|
||||
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os
|
||||
// Lib: SQLite
|
||||
// CLI: sqlite
|
||||
|
||||
@ -155,32 +155,32 @@
|
||||
|
||||
// Сформировать строку подключения
|
||||
// Формирует строку подключения из переданных данных
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - IP адрес или доменное имя сервера - addr
|
||||
// База - Строка - Имя базы данных для подключения - db
|
||||
// Логин - Строка - Логин пользователя postgres - login
|
||||
// Пароль - Строка - Пароль пользователя postgres - pass
|
||||
// Порт - Строка - Порт подключения - port
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Строка подключения к базе PostgreSQL
|
||||
Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "5432") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
|
||||
|
||||
Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт);
|
||||
Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль);
|
||||
|
||||
ШаблонСтроки = "postgresql://%1%2@%3%4/%5";
|
||||
СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База);
|
||||
|
||||
Возврат СтрокаПодключения;
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
|
||||
|
||||
Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт);
|
||||
Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль);
|
||||
|
||||
ШаблонСтроки = "postgresql://%1%2@%3%4/%5";
|
||||
СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База);
|
||||
|
||||
Возврат СтрокаПодключения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -189,7 +189,7 @@
|
||||
|
||||
// Создать базу данных
|
||||
// Создает базу данных с указанным именем
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// База - Строка - Имя базы - base
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
@ -197,15 +197,15 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция СоздатьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить базу данных
|
||||
// Удаляет базу данных
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// База - Строка - Имя базы - base
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
@ -213,10 +213,10 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция УдалитьБазуДанных(Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать таблицу
|
||||
@ -383,13 +383,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОсобенности() Экспорт
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "$");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "$");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -436,11 +436,11 @@
|
||||
ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'");
|
||||
|
||||
ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Структура") Или ТипЗнч(ТекущийПараметр) = Тип("Соответствие") Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
Иначе
|
||||
|
||||
|
||||
Продолжить;
|
||||
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
@ -460,21 +460,21 @@
|
||||
Функция ОбработатьСтруктуруBlob(Знач Значение)
|
||||
|
||||
ЗначениеДанных = Значение["BYTEA"];
|
||||
|
||||
Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ЗначениеДанных));
|
||||
Иначе
|
||||
|
||||
ФайлДанных = Новый Файл(Строка(ЗначениеДанных));
|
||||
|
||||
Если ФайлДанных.Существует() Тогда
|
||||
Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ЗначениеДанных));
|
||||
Иначе
|
||||
|
||||
ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных));
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ТекущиеДанные));
|
||||
ФайлДанных = Новый Файл(Строка(ЗначениеДанных));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
Если ФайлДанных.Существует() Тогда
|
||||
|
||||
ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных));
|
||||
Значение = Новый Структура("BYTEA", Base64Строка(ТекущиеДанные));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_SQLite.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_SQLite.os
|
||||
// Lib: SQLite
|
||||
// CLI: sqlite
|
||||
|
||||
@ -343,13 +343,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОсобенности() Экспорт
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "?");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
|
||||
Особенности = Новый Структура;
|
||||
Особенности.Вставить("НумерацияПараметров", Истина);
|
||||
Особенности.Вставить("МаркерПараметров" , "?");
|
||||
|
||||
Возврат Особенности;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -45,29 +45,29 @@
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция СоздатьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("CREATEDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Схема = ПустаяСхемаSQL("CREATEDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROPDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROPDATABASE");
|
||||
|
||||
УстановитьИмяБазы(Схема, База);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТаблицу(Знач Модуль, Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
|
||||
@ -266,15 +266,15 @@
|
||||
ИначеЕсли Действие = "TRUNCATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаTruncate();
|
||||
|
||||
|
||||
ИначеЕсли Действие = "CREATEDATABASE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreateDatabase();
|
||||
|
||||
|
||||
Схема = ПустаяСхемаCreateDatabase();
|
||||
|
||||
ИначеЕсли Действие = "DROPDATABASE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDropDatabase();
|
||||
|
||||
|
||||
Схема = ПустаяСхемаDropDatabase();
|
||||
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
@ -303,14 +303,14 @@
|
||||
Функция ПустаяСхемаInsert(Знач Особенности)
|
||||
|
||||
Схема = Новый Структура("type", "INSERT");
|
||||
|
||||
НумерацияПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["НумерацияПараметров"], Ложь);
|
||||
МаркерПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["МаркерПараметров"] , "?");
|
||||
|
||||
НумерацияПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["НумерацияПараметров"], Ложь);
|
||||
МаркерПараметров = ?(ЗначениеЗаполнено(Особенности), Особенности["МаркерПараметров"] , "?");
|
||||
|
||||
Схема.Вставить("table", "");
|
||||
Схема.Вставить("set" , Новый Массив);
|
||||
Схема.Вставить("nump" , НумерацияПараметров);
|
||||
Схема.Вставить("markp", МаркерПараметров);
|
||||
Схема.Вставить("nump" , НумерацияПараметров);
|
||||
Схема.Вставить("markp", МаркерПараметров);
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
@ -373,23 +373,23 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаCreateDatabase();
|
||||
|
||||
|
||||
Схема = Новый Структура("type", "CREATEDATABASE");
|
||||
|
||||
Схема.Вставить("database" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаDropDatabase();
|
||||
|
||||
|
||||
Схема = Новый Структура("type", "DROPDATABASE");
|
||||
|
||||
Схема.Вставить("database" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -436,14 +436,14 @@
|
||||
ИначеЕсли ТипСхемы = "TRUNCATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстTruncate(Схема);
|
||||
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATEDATABASE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreateDatabase(Схема);
|
||||
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreateDatabase(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DROPDATABASE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDropDatabase(Схема);
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDropDatabase(Схема);
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
@ -479,25 +479,25 @@
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,set");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Нумерация = Схема["nump"];
|
||||
Маркер = Схема["markp"];
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Нумерация = Схема["nump"];
|
||||
Маркер = Схема["markp"];
|
||||
|
||||
ШаблонSQL = "INSERT INTO %1 (%2) VALUES (%3)";
|
||||
|
||||
Параметры = Новый Массив;
|
||||
|
||||
Для Н = 1 По Поля.Количество() Цикл
|
||||
|
||||
ТекущийМаркер = Маркер;
|
||||
|
||||
Если Нумерация Тогда
|
||||
ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Для Н = 1 По Поля.Количество() Цикл
|
||||
|
||||
ТекущийМаркер = Маркер;
|
||||
|
||||
Если Нумерация Тогда
|
||||
ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н);
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.Добавить(ТекущийМаркер);
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL
|
||||
@ -608,31 +608,31 @@
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстCreateDatabase(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "CREATE DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "CREATE DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстDropDatabase(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "DROP DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "database");
|
||||
|
||||
База = Схема["database"];
|
||||
|
||||
ШаблонSQL = "DROP DATABASE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, База);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -739,8 +739,8 @@
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Особенности = Модуль.ПолучитьОсобенности();
|
||||
|
||||
Особенности = Модуль.ПолучитьОсобенности();
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT", Особенности);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
@ -858,7 +858,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_Инструменты.ВернутьУправляющиеПоследовательности(База);
|
||||
|
||||
ИмяПоля = ПолучитьИмяОсновногоПоля(Коннектор);
|
||||
ИмяПоля = ПолучитьИмяОсновногоПоля(Коннектор);
|
||||
Коннектор = ПодключитьКомпонентуНаСервере(Коннектор);
|
||||
|
||||
Коннектор[ИмяПоля] = База;
|
||||
@ -893,13 +893,13 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИмяОсновногоПоля(Знач Коннектор)
|
||||
|
||||
Если Коннектор = "OPI_SQLite" Тогда
|
||||
Возврат "Database";
|
||||
Иначе
|
||||
Возврат "ConnectionString";
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Коннектор = "OPI_SQLite" Тогда
|
||||
Возврат "Database";
|
||||
Иначе
|
||||
Возврат "ConnectionString";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
@ -1049,11 +1049,11 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьИмяБазы(Схема, Знач Имя)
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
|
||||
Схема.Вставить("database", Имя);
|
||||
|
||||
Схема.Вставить("database", Имя);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьЛимит(Схема, Знач Количество)
|
||||
|
@ -2390,7 +2390,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ТекущаяОпция = ОформитьОпцию(Опция.Значение, Опция.Ключ);
|
||||
ОбработатьОсобенныеСекретыОпций(Библиотека, Опция.Ключ, ТекущаяОпция);
|
||||
ОбработатьОсобенныеСекретыОпций(Библиотека, Опция.Ключ, ТекущаяОпция);
|
||||
|
||||
МассивОпций.Добавить(ТекущаяОпция);
|
||||
|
||||
@ -2424,25 +2424,25 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьОсобенныеСекретыОпций(Знач Библиотека, Знач Опция, Значение)
|
||||
|
||||
|
||||
Если Библиотека = "bitrix24"
|
||||
И Опция = "url" Тогда
|
||||
|
||||
Значение = ?(СтрНайти(Значение, "rest") > 0
|
||||
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
|
||||
, Значение);
|
||||
|
||||
Возврат;
|
||||
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Библиотека = "postgres"
|
||||
И Опция = "conn" Тогда
|
||||
|
||||
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
И Опция = "conn" Тогда
|
||||
|
||||
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
228
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
228
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -2315,16 +2315,16 @@
|
||||
|
||||
Процедура Postgres_ORM() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста);
|
||||
|
||||
PostgreSQL_СоздатьБазуДанных(ПараметрыТеста);
|
||||
PostgreSQL_СоздатьТаблицу(ПараметрыТеста);
|
||||
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
|
||||
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
|
||||
PostgreSQL_СоздатьБазуДанных(ПараметрыТеста);
|
||||
PostgreSQL_СоздатьТаблицу(ПараметрыТеста);
|
||||
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
|
||||
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@ -17295,124 +17295,124 @@
|
||||
#Область PostgreSQL
|
||||
|
||||
Процедура PostgreSQL_СоздатьБазуДанных(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазуДанных", "PostgreSQL");
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазуДанных", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_УдалитьБазуДанных(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "PostgreSQL");
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "postgres";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_СоздатьТаблицу(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("bool_field", "BOOL");
|
||||
СтруктураКолонок.Вставить("char_field", """char""");
|
||||
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
|
||||
СтруктураКолонок.Вставить("int_field", "INT");
|
||||
СтруктураКолонок.Вставить("oid_field", "OID");
|
||||
СтруктураКолонок.Вставить("bigint_field", "BIGINT");
|
||||
СтруктураКолонок.Вставить("real_field", "REAL");
|
||||
СтруктураКолонок.Вставить("dp_field", "DOUBLE PRECISION");
|
||||
СтруктураКолонок.Вставить("text_field", "TEXT");
|
||||
СтруктураКолонок.Вставить("bytea_field", "BYTEA");
|
||||
СтруктураКолонок.Вставить("ts_field", "TIMESTAMP");
|
||||
СтруктураКолонок.Вставить("ip_field", "INET");
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу", "PostgreSQL");
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("bool_field" , "BOOL");
|
||||
СтруктураКолонок.Вставить("char_field" , """char""");
|
||||
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
|
||||
СтруктураКолонок.Вставить("int_field" , "INT");
|
||||
СтруктураКолонок.Вставить("oid_field" , "OID");
|
||||
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
|
||||
СтруктураКолонок.Вставить("real_field" , "REAL");
|
||||
СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION");
|
||||
СтруктураКолонок.Вставить("text_field" , "TEXT");
|
||||
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
|
||||
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
|
||||
СтруктураКолонок.Вставить("ip_field" , "INET");
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_ДобавитьЗаписи(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "testbase1";
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
Char = Новый Соответствие;
|
||||
Char.Вставить("""char""", 1);
|
||||
|
||||
DP = Новый Соответствие;
|
||||
DP.Вставить("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL", Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Char);
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT", 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT", 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID", 24576));
|
||||
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT", 9999999));
|
||||
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL", 15.2));
|
||||
СтруктураЗаписи.Вставить("dp_field" , DP);
|
||||
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT", "Some text"));
|
||||
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA", Картинка));
|
||||
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP", 1739207915));
|
||||
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET", "127.0.0.1"));
|
||||
|
||||
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
|
||||
Char = Новый Соответствие;
|
||||
Char.Вставить("""char""", 1);
|
||||
|
||||
DP = Новый Соответствие;
|
||||
DP.Вставить("DOUBLE PRECISION", 1.0000000000000002);
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
|
||||
СтруктураЗаписи.Вставить("char_field" , Char);
|
||||
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
|
||||
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
|
||||
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
|
||||
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
|
||||
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
|
||||
СтруктураЗаписи.Вставить("dp_field" , DP);
|
||||
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
|
||||
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка));
|
||||
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP", 1739207915));
|
||||
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1"));
|
||||
|
||||
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -19,6 +19,7 @@
|
||||
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
|
||||
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
|
||||
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");
|
||||
СоответствиеКомандМодулей.Вставить("sqlite", "OPI_PostgreSQL");
|
||||
СоответствиеКомандМодулей.Вставить("s3", "OPI_S3");
|
||||
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
|
||||
СоответствиеКомандМодулей.Вставить("sqlite", "OPI_SQLite");
|
||||
|
Loading…
x
Reference in New Issue
Block a user