Skip to content

Commit 037bf7f

Browse files
authored
Merge pull request #88 from nixel2007/develop
Sync
2 parents 229bd51 + 5171503 commit 037bf7f

File tree

9 files changed

+568
-33
lines changed

9 files changed

+568
-33
lines changed

.github/workflows/main.yml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ jobs:
1616
os: [ubuntu-latest, windows-latest, macos-latest]
1717
oscript_version: ['1.8.3', 'stable']
1818
steps:
19-
- uses: actions/checkout@v3
19+
- uses: actions/checkout@v4
2020

2121
- name: Setup Onescript Action
22-
uses: otymko/setup-onescript@v1.1
22+
uses: otymko/setup-onescript@v1.4
2323
with:
2424
version: ${{ matrix.oscript_version }}
2525

@@ -28,22 +28,26 @@ jobs:
2828
opm install opm@1.0.2
2929
opm install -l --dev
3030
31+
- name: Prepare macOS env
32+
if: matrix.os == 'macos-latest'
33+
run: |
34+
echo "SIGN_QEMU_BINARY=1" >> "$GITHUB_ENV"
35+
3136
- name: Install docker
32-
if: matrix.os != 'windows-latest'
33-
uses: crazy-max/ghaction-setup-docker@v1
37+
uses: crazy-max/ghaction-setup-docker@v3
3438
timeout-minutes: 12
3539

3640
- name: Setup PostgreSQL
37-
if: matrix.os != 'windows-latest'
41+
shell: bash
3842
run: |
39-
docker run --rm --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USERNAME=postgres -e POSTGRES_DB=postgres -e POSTGRES_HOST_AUTH_METHOD=password --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 postgres
43+
docker run --rm --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USERNAME=postgres -e POSTGRES_DB=postgres -e POSTGRES_HOST_AUTH_METHOD=password --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 satrapu/postgresql
4044
docker ps
4145
while [ "`docker inspect -f {{.State.Health.Status}} postgres`" != "healthy" ]; do docker ps && sleep 2; done
4246
docker ps
4347
4448
- name: Run tests
4549
env:
46-
TESTRUNNER_RUN_POSTGRES_TESTS: "${{ matrix.os != 'windows-latest' }}"
50+
TESTRUNNER_RUN_POSTGRES_TESTS: true
4751
TESTRUNNER_RUN_SQLITE_TESTS: "${{ matrix.os == 'windows-latest' }}"
4852
run: |
4953
oscript ./tasks/test.os

.github/workflows/qa.yml

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ jobs:
99
runs-on: ubuntu-latest
1010

1111
steps:
12-
- uses: actions/checkout@v3
12+
- uses: actions/checkout@v4
1313
with:
1414
# Disabling shallow clone is recommended for improving relevancy of reporting
1515
fetch-depth: 0
1616

1717
- name: Setup Onescript Action
18-
uses: otymko/setup-onescript@v1.1
18+
uses: otymko/setup-onescript@v1.4
1919
with:
2020
version: "1.8.3"
2121

@@ -25,7 +25,7 @@ jobs:
2525
opm install -l --dev
2626
2727
- name: Install docker
28-
uses: crazy-max/ghaction-setup-docker@v1
28+
uses: crazy-max/ghaction-setup-docker@v3
2929
timeout-minutes: 12
3030

3131
- name: Setup PostgreSQL
@@ -50,28 +50,30 @@ jobs:
5050
run: |
5151
oscript ./tasks/coverage.os
5252
53-
- name: SonarCloud Scan on push
54-
if: github.repository == 'nixel2007/entity' && github.event_name == 'push'
55-
uses: nixel2007/sonarcloud-github-action@v1.5
53+
- name: Setup sonarqube
54+
uses: warchant/setup-sonar-scanner@v8
55+
56+
# Анализ проекта в SonarQube (ветка)
57+
- name: Анализ в SonarQube (branch)
58+
if: github.event_name == 'push'
5659
env:
5760
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5861
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
59-
with:
60-
args: >
61-
-Dsonar.host.url=https://sonar.openbsl.ru
62-
-Dsonar.branch.name=${{ env.BRANCH_NAME }}
63-
-Dsonar.projectVersion=${{ steps.extract_version.outputs.version }}
64-
65-
- name: SonarCloud Scan on PR
66-
if: github.repository == 'nixel2007/entity' && github.event_name == 'pull_request'
67-
uses: nixel2007/sonarcloud-github-action@v1.5
62+
run: sonar-scanner
63+
-Dsonar.host.url=https://sonar.openbsl.ru
64+
-Dsonar.branch.name=${{ env.BRANCH_NAME }}
65+
-Dsonar.projectVersion=${{ steps.extract_version.outputs.version }}
66+
67+
# Анализ проекта в SonarQube (PR)
68+
# https://docs.sonarqube.org/latest/analysis/pull-request/
69+
- name: Анализ в SonarQube (pull-request)
70+
if: github.event_name == 'pull_request'
6871
env:
6972
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7073
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
71-
with:
72-
args: >
73-
-Dsonar.host.url=https://sonar.openbsl.ru
74-
-Dsonar.pullrequest.key=${{ github.event.pull_request.number }}
75-
-Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
76-
-Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
77-
-Dsonar.scm.revision=${{ github.event.pull_request.head.sha }}
74+
run: sonar-scanner
75+
-Dsonar.host.url=https://sonar.openbsl.ru
76+
-Dsonar.pullrequest.key=${{ github.event.pull_request.number }}
77+
-Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
78+
-Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
79+
-Dsonar.scm.revision=${{ github.event.pull_request.head.sha }}

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ jobs:
2323
steps:
2424
# Загрузка проекта
2525
- name: Актуализация
26-
uses: actions/checkout@v3
26+
uses: actions/checkout@v4
2727

2828
# Установка OneScript конкретной версии
2929
- name: Установка OneScript
30-
uses: otymko/setup-onescript@v1.1
30+
uses: otymko/setup-onescript@v1.4
3131
with:
3232
version: ${{ matrix.oscript_version }}
3333

@@ -41,7 +41,7 @@ jobs:
4141
run: opm build .
4242

4343
- name: Заливка артефактов
44-
uses: actions/upload-artifact@v3
44+
uses: actions/upload-artifact@v4
4545
with:
4646
name: package.zip
4747
path: ./${{ env.PACKAGE_MASK }}

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
* <a href="#library-structure-connector-sqlite">КоннекторSQLite</a>
4646
* <a href="#library-structure-connector-postgresql">КоннекторPostgreSQL</a>
4747
* <a href="#library-structure-connector-json">КоннекторJSON</a>
48+
* <a href="#library-structure-connector-inmemory">КоннекторInMemory</a>
4849
* <a href="#versioning-strategy">Версионирование и обратная совместимость</a>
4950

5051
<a id="entity-example" />
@@ -522,6 +523,16 @@
522523

523524
Все операциями по записи и удалению сущностей одного типа проводятся **синхронно**, блокируя файл таблицы целиком. Для контроля над синхронным доступом используется библиотека [semaphore](https://github.com/nixel2007/semaphore).
524525

526+
<a id="library-structure-connector-inmemory" />
527+
528+
### КоннекторInMemory
529+
530+
В состав библиотеки входит референсная реализация интерфейса коннектора в виде упрощенного коннектора к виртуальной базе данных в памяти. База данных состоит из соответствия, где ключ - имя таблицы модели данных, значение таблицы.
531+
532+
В качестве строки соединения произвольная строка, которая будет являться разделителем данных.
533+
534+
Коннектор поддерживает все CRUD-операции над сущностями, простой и сложный поиск, но не поддерживает работу с транзакциями. При вызове операций по работе с транзакциями будут выданы исключения.
535+
525536
<a id="versioning-strategy" />
526537

527538
## Версионирование и обратная совместимость

lib.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<class name="ОбъектМодели" file="src/Классы/ОбъектМодели.os"/>
1010
<class name="ЭлементОтбора" file="src/Классы/ЭлементОтбора.os"/>
1111
<class name="ХранилищеСущностей" file="src/Классы/ХранилищеСущностей.os"/>
12+
<class name="КоннекторInMemory" file="src/Классы/КоннекторInMemory.os"/>
1213
<module name="ТипыКолонок" file="src/Модули/ТипыКолонок.os"/>
1314
<module name="ТипыПодчиненныхТаблиц" file="src/Модули/ТипыПодчиненныхТаблиц.os"/>
1415
<module name="ВидСравнения" file="src/Модули/ВидСравнения.os"/>

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55
// BSLLS:CodeOutOfRegion-off
66
Описание.Имя("entity")
7-
.Версия("2.3.5.0")
7+
.Версия("2.3.6.0")
88
.Автор("Nikita Gryzlov")
99
.АдресАвтора("nixel2007@gmail.com")
1010
.Описание("entity")
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
Перем КешиТаблиц;
3+
4+
Функция КешТаблиц(СтрокаПодключения = "default") Экспорт
5+
Результат = КешиТаблиц.Получить(СтрокаПодключения);
6+
7+
Если Результат = Неопределено Тогда
8+
Результат = Новый Соответствие();
9+
КешиТаблиц.Вставить(СтрокаПодключения, Результат);
10+
КонецЕсли;
11+
12+
Возврат Результат;
13+
14+
КонецФункции
15+
16+
Процедура Очистить(СтрокаПодключения = "default") Экспорт
17+
КешиТаблиц.Вставить(СтрокаПодключения, Новый Соответствие());
18+
КонецПроцедуры
19+
20+
Процедура Инициализация()
21+
КешиТаблиц = Новый Соответствие();
22+
КонецПроцедуры
23+
24+
Инициализация();

0 commit comments

Comments
 (0)