Skip to content

Commit 83ee504

Browse files
authored
Merge pull request #68 from nixel2007/develop
Sync
2 parents 99fcb93 + 3991425 commit 83ee504

File tree

9 files changed

+245
-53
lines changed

9 files changed

+245
-53
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
os: [ubuntu-latest, windows-latest, macos-latest]
17-
oscript_version: ['1.2.0', 'dev', 'stable']
17+
oscript_version: ['1.8.3', 'stable']
1818

1919
steps:
20-
- uses: actions/checkout@v2
20+
- uses: actions/checkout@v3
2121

2222
- name: Setup Onescript Action
2323
uses: otymko/setup-onescript@v1.1

.github/workflows/qa.yml

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

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

1717
- name: Setup Onescript Action
1818
uses: otymko/setup-onescript@v1.1
1919
with:
20-
version: dev
20+
version: "1.8.3"
2121

2222
- name: Install dependencies
2323
run: |
@@ -48,7 +48,7 @@ jobs:
4848
4949
- name: SonarCloud Scan on push
5050
if: github.repository == 'nixel2007/entity' && github.event_name == 'push'
51-
uses: nixel2007/sonarcloud-github-action@v1.4
51+
uses: nixel2007/sonarcloud-github-action@v1.5
5252
env:
5353
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5454
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
@@ -60,7 +60,7 @@ jobs:
6060
6161
- name: SonarCloud Scan on PR
6262
if: github.repository == 'nixel2007/entity' && github.event_name == 'pull_request'
63-
uses: nixel2007/sonarcloud-github-action@v1.4
63+
uses: nixel2007/sonarcloud-github-action@v1.5
6464
env:
6565
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6666
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

.github/workflows/release.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# MIT License
2+
# Copyright (C) 2020 Tymko Oleg <olegtymko@yandex.ru> and contributors
3+
# All rights reserved.
4+
5+
name: Подготовка релиза и публикация в хабе
6+
# Только события создания и изменения релиза
7+
on:
8+
release:
9+
types: [published, edited]
10+
11+
env:
12+
PACKAGE_MASK: entity-*.ospx
13+
14+
jobs:
15+
build:
16+
runs-on: ${{ matrix.os }}
17+
strategy:
18+
fail-fast: false
19+
matrix:
20+
os: [ubuntu-latest]
21+
oscript_version: ['1.8.3']
22+
23+
steps:
24+
# Загрузка проекта
25+
- name: Актуализация
26+
uses: actions/checkout@v2
27+
28+
# Установка OneScript конкретной версии
29+
- name: Установка OneScript
30+
uses: otymko/setup-onescript@v1.1
31+
with:
32+
version: ${{ matrix.oscript_version }}
33+
34+
# Установка зависимостей пакета
35+
- name: Установка зависимостей
36+
run: |
37+
opm install opm
38+
opm install
39+
40+
- name: Сборка пакета
41+
run: opm build .
42+
43+
- name: Заливка артефактов
44+
uses: actions/upload-artifact@v2
45+
with:
46+
name: package.zip
47+
path: ./${{ env.PACKAGE_MASK }}
48+
49+
#- name: Заливка в релиз
50+
# uses: AButler/upload-release-assets@v2.0.2
51+
# with:
52+
# files: ./${{ env.PACKAGE_MASK }}
53+
# repo-token: ${{ secrets.GITHUB_TOKEN }}
54+
55+
- name: Публикация в hub.oscript.io
56+
shell: bash
57+
run: opm push -f ./${{ env.PACKAGE_MASK }} --token ${{ secrets.PUSH_TOKEN }} -c stable

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ tests-reports/
66
.sonar/
77
.idea/
88
out/
9+
tests/jsondatabase
910
oscript_modules/

packagedef

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
//
55
// BSLLS:CodeOutOfRegion-off
66
Описание.Имя("entity")
7-
.Версия("2.3.3.1")
7+
.Версия("2.3.4.0")
88
.Автор("Nikita Gryzlov")
99
.АдресАвтора("nixel2007@gmail.com")
1010
.Описание("entity")
11-
.ВерсияСреды("1.2.0")
11+
.ВерсияСреды("1.8.3")
1212
.ВключитьФайл("src")
1313
.ВключитьФайл("tests")
1414
.ВключитьФайл("lib.config")
@@ -20,9 +20,9 @@
2020
.ЗависитОт("fs", "1.0.0")
2121
.ЗависитОт("logos", "1.2.1")
2222
.ЗависитОт("json", "1.1.1")
23-
.ЗависитОт("decorator", "1.2.0")
23+
.ЗависитОт("decorator", "1.5.1")
2424
.ЗависитОт("reflector", "0.6.1")
25-
.ЗависитОт("semaphore", "1.0.1")
25+
.ЗависитОт("semaphore", "1.1.0")
2626
.ЗависитОт("sql", "1.1.1.2")
2727
.ЗависитОт("strings", "0.5.0")
2828
.РазработкаЗависитОт("1bdd")

src/internal/Модули/АктивнаяЗапись.os

Lines changed: 54 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,53 +11,65 @@
1111

1212
Функция СоздатьИзМенеджера(ОбъектМодели, МенеджерСущностей) Экспорт
1313
Сущность = Новый(ОбъектМодели.ТипСущности());
14-
15-
Декоратор = Новый КонструкторДекоратора(Сущность)
16-
.ДобавитьИмпортПоИмени("decorator")
17-
.ДобавитьПриватноеПоле("_МенеджерСущностей", МенеджерСущностей)
18-
.ДобавитьПриватноеПоле("_ОбъектМодели", ОбъектМодели)
19-
.ДобавитьМетод(
20-
"Прочитать",
21-
"_ТипСущности = ОбработкаДекоратора.ИсходныйТип(ЭтотОбъект);
22-
|_ДанныеСущности = _МенеджерСущностей.ПолучитьОдно(
23-
| _ТипСущности,
24-
| _ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект)
25-
|);
26-
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"
27-
)
28-
.ДобавитьМетод(
29-
"Сохранить",
30-
"_МенеджерСущностей.Сохранить(ЭтотОбъект);"
31-
)
32-
.ДобавитьМетод(
33-
"Удалить",
34-
"_МенеджерСущностей.Удалить(ЭтотОбъект);"
35-
)
36-
.Построить();
37-
14+
15+
Декоратор = Новый ПостроительДекоратора(Сущность)
16+
.Импорт(Новый Импорт("decorator"))
17+
18+
.Поле(Новый Поле("_МенеджерСущностей")
19+
.ЗначениеПоУмолчанию(МенеджерСущностей))
20+
21+
.Поле(Новый Поле("_ОбъектМодели")
22+
.ЗначениеПоУмолчанию(ОбъектМодели))
23+
24+
.Метод(Новый Метод("Прочитать")
25+
.Публичный()
26+
.ТелоМетода("_ТипСущности = ОбработкаДекоратора.ИсходныйТип(ЭтотОбъект);
27+
|_ДанныеСущности = _МенеджерСущностей.ПолучитьОдно(
28+
| _ТипСущности,
29+
| _ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект)
30+
|);
31+
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"))
32+
33+
34+
.Метод(Новый Метод("Сохранить")
35+
.Публичный()
36+
.ТелоМетода("_МенеджерСущностей.Сохранить(ЭтотОбъект);"))
37+
38+
.Метод(Новый Метод("Удалить")
39+
.Публичный()
40+
.ТелоМетода("_МенеджерСущностей.Удалить(ЭтотОбъект);"))
41+
42+
.Построить();
43+
3844
Возврат Декоратор;
3945
КонецФункции
4046

4147
Функция СоздатьИзХранилища(ОбъектМодели, ХранилищеСущностей) Экспорт
4248
Сущность = Новый(ОбъектМодели.ТипСущности());
43-
44-
Декоратор = Новый КонструкторДекоратора(Сущность)
45-
.ДобавитьИмпортПоИмени("decorator")
46-
.ДобавитьПриватноеПоле("_ХранилищеСущностей", ХранилищеСущностей)
47-
.ДобавитьПриватноеПоле("_ОбъектМодели", ОбъектМодели)
48-
.ДобавитьМетод(
49-
"Прочитать",
50-
"_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
51-
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"
52-
)
53-
.ДобавитьМетод(
54-
"Сохранить",
55-
"_ХранилищеСущностей.Сохранить(ЭтотОбъект);"
56-
)
57-
.ДобавитьМетод(
58-
"Удалить",
59-
"_ХранилищеСущностей.Удалить(ЭтотОбъект);"
60-
)
49+
50+
Декоратор = Новый ПостроительДекоратора(Сущность)
51+
.Импорт(Новый Импорт("decorator"))
52+
53+
.Поле(Новый Поле("_ХранилищеСущностей")
54+
.ЗначениеПоУмолчанию(ХранилищеСущностей))
55+
56+
.Поле(Новый Поле("_ОбъектМодели")
57+
.ЗначениеПоУмолчанию(ОбъектМодели))
58+
59+
.Метод(Новый Метод("Прочитать")
60+
.Публичный()
61+
.ТелоМетода("_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
62+
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"))
63+
64+
65+
.Метод(Новый Метод("Сохранить")
66+
.Публичный()
67+
.ТелоМетода("_ХранилищеСущностей.Сохранить(ЭтотОбъект);"))
68+
69+
.Метод(Новый Метод("Удалить")
70+
.Публичный()
71+
.ТелоМетода("_ХранилищеСущностей.Удалить(ЭтотОбъект);"))
72+
6173
.Построить();
6274

6375
Возврат Декоратор;

src/Классы/КоннекторPostgreSQL.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@
191191
Семафор = Семафоры.Получить(Строка(ОбъектМодели.ТипСущности()));
192192
Семафор.Захватить();
193193
Запрос.Текст = ТекстЗапроса;
194-
Сообщить(ТекстЗапроса);
194+
195195
Запрос.ВыполнитьКоманду();
196196

197197
Если ОбъектМодели.Идентификатор().ГенерируемоеЗначение Тогда
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
&Идентификатор
3+
Перем Идентификатор Экспорт;
4+
5+
Перем Поле Экспорт;
6+
7+
&Сущность(ИмяТаблицы = "ПростыеОбъекты")
8+
Процедура ПриСозданииОбъекта()
9+
10+
КонецПроцедуры

tests/КоннекторJSON.os

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#Использовать fs
12
#Использовать ".."
23

34
Перем Коннектор;
@@ -126,3 +127,114 @@
126127
Ожидаем.Что(Сущность.Идентификатор).Равно(2);
127128

128129
КонецПроцедуры
130+
131+
&Тест
132+
Процедура СущностьМожетЗаписатьСебя() Экспорт
133+
// Дано
134+
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
135+
КаталогБД = "./tests/jsondatabase";
136+
ФС.ОбеспечитьПустойКаталог(КаталогБД);
137+
ТипКоннектора = "КоннекторJSON";
138+
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
139+
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
140+
МенеджерСущностей.Инициализировать();
141+
142+
// Когда
143+
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
144+
ПростойОбъект.Идентификатор = "1";
145+
ПростойОбъект.Поле = "2";
146+
ПростойОбъект.Сохранить();
147+
148+
// Тогда
149+
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
150+
151+
Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
152+
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
153+
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");
154+
155+
КонецПроцедуры
156+
157+
&Тест
158+
Процедура СущностьМожетПерезаписатьСебя() Экспорт
159+
// Дано
160+
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
161+
КаталогБД = "./tests/jsondatabase";
162+
ФС.ОбеспечитьПустойКаталог(КаталогБД);
163+
ТипКоннектора = "КоннекторJSON";
164+
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
165+
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
166+
МенеджерСущностей.Инициализировать();
167+
168+
// Когда
169+
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
170+
ПростойОбъект.Идентификатор = "1";
171+
ПростойОбъект.Поле = "2";
172+
ПростойОбъект.Сохранить();
173+
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
174+
НайденныйПростойОбъект.Поле = "3";
175+
НайденныйПростойОбъект.Сохранить();
176+
177+
// Тогда
178+
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
179+
180+
Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
181+
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
182+
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("3");
183+
184+
КонецПроцедуры
185+
186+
&Тест
187+
Процедура МенеджерСущностейМожетЗаписать() Экспорт
188+
// Дано
189+
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
190+
КаталогБД = "./tests/jsondatabase";
191+
ФС.ОбеспечитьПустойКаталог(КаталогБД);
192+
ТипКоннектора = "КоннекторJSON";
193+
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
194+
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
195+
МенеджерСущностей.Инициализировать();
196+
197+
// Когда
198+
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
199+
ПростойОбъект.Идентификатор = "1";
200+
ПростойОбъект.Поле = "2";
201+
МенеджерСущностей.Сохранить(ПростойОбъект);
202+
203+
// Тогда
204+
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
205+
206+
Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
207+
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
208+
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");
209+
210+
КонецПроцедуры
211+
212+
&Тест
213+
Процедура ХранилищеСущностейМожетЗаписать() Экспорт
214+
215+
// Дано
216+
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
217+
КаталогБД = "./tests/jsondatabase";
218+
ФС.ОбеспечитьПустойКаталог(КаталогБД);
219+
ТипКоннектора = "КоннекторJSON";
220+
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
221+
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
222+
МенеджерСущностей.Инициализировать();
223+
224+
// Когда
225+
226+
ХранилищеПростойОбъект = МенеджерСущностей.ПолучитьХранилищеСущностей(Тип("ПростойОбъект"));
227+
228+
ПростойОбъект = ХранилищеПростойОбъект.СоздатьЭлемент();
229+
ПростойОбъект.Идентификатор = "1";
230+
ПростойОбъект.Поле = "2";
231+
ПростойОбъект.Сохранить();
232+
233+
// Тогда
234+
НайденныйПростойОбъект = ХранилищеПростойОбъект.ПолучитьОдно("1");
235+
236+
Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
237+
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
238+
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");
239+
240+
КонецПроцедуры

0 commit comments

Comments
 (0)