Skip to content

Commit

Permalink
Merge pull request #68 from nixel2007/develop
Browse files Browse the repository at this point in the history
Sync
  • Loading branch information
nixel2007 authored Jul 26, 2023
2 parents 99fcb93 + 3991425 commit 83ee504
Show file tree
Hide file tree
Showing 9 changed files with 245 additions and 53 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
oscript_version: ['1.2.0', 'dev', 'stable']
oscript_version: ['1.8.3', 'stable']

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Setup Onescript Action
uses: otymko/[email protected]
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0

- name: Setup Onescript Action
uses: otymko/[email protected]
with:
version: dev
version: "1.8.3"

- name: Install dependencies
run: |
Expand Down Expand Up @@ -48,7 +48,7 @@ jobs:
- name: SonarCloud Scan on push
if: github.repository == 'nixel2007/entity' && github.event_name == 'push'
uses: nixel2007/sonarcloud-github-action@v1.4
uses: nixel2007/sonarcloud-github-action@v1.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Expand All @@ -60,7 +60,7 @@ jobs:
- name: SonarCloud Scan on PR
if: github.repository == 'nixel2007/entity' && github.event_name == 'pull_request'
uses: nixel2007/sonarcloud-github-action@v1.4
uses: nixel2007/sonarcloud-github-action@v1.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Expand Down
57 changes: 57 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# MIT License
# Copyright (C) 2020 Tymko Oleg <[email protected]> and contributors
# All rights reserved.

name: Подготовка релиза и публикация в хабе
# Только события создания и изменения релиза
on:
release:
types: [published, edited]

env:
PACKAGE_MASK: entity-*.ospx

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.8.3']

steps:
# Загрузка проекта
- name: Актуализация
uses: actions/checkout@v2

# Установка OneScript конкретной версии
- name: Установка OneScript
uses: otymko/[email protected]
with:
version: ${{ matrix.oscript_version }}

# Установка зависимостей пакета
- name: Установка зависимостей
run: |
opm install opm
opm install
- name: Сборка пакета
run: opm build .

- name: Заливка артефактов
uses: actions/upload-artifact@v2
with:
name: package.zip
path: ./${{ env.PACKAGE_MASK }}

#- name: Заливка в релиз
# uses: AButler/[email protected]
# with:
# files: ./${{ env.PACKAGE_MASK }}
# repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Публикация в hub.oscript.io
shell: bash
run: opm push -f ./${{ env.PACKAGE_MASK }} --token ${{ secrets.PUSH_TOKEN }} -c stable
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ tests-reports/
.sonar/
.idea/
out/
tests/jsondatabase
oscript_modules/
8 changes: 4 additions & 4 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
//
// BSLLS:CodeOutOfRegion-off
Описание.Имя("entity")
.Версия("2.3.3.1")
.Версия("2.3.4.0")
.Автор("Nikita Gryzlov")
.АдресАвтора("[email protected]")
.Описание("entity")
.ВерсияСреды("1.2.0")
.ВерсияСреды("1.8.3")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("lib.config")
Expand All @@ -20,9 +20,9 @@
.ЗависитОт("fs", "1.0.0")
.ЗависитОт("logos", "1.2.1")
.ЗависитОт("json", "1.1.1")
.ЗависитОт("decorator", "1.2.0")
.ЗависитОт("decorator", "1.5.1")
.ЗависитОт("reflector", "0.6.1")
.ЗависитОт("semaphore", "1.0.1")
.ЗависитОт("semaphore", "1.1.0")
.ЗависитОт("sql", "1.1.1.2")
.ЗависитОт("strings", "0.5.0")
.РазработкаЗависитОт("1bdd")
Expand Down
96 changes: 54 additions & 42 deletions src/internal/Модули/АктивнаяЗапись.os
Original file line number Diff line number Diff line change
Expand Up @@ -11,53 +11,65 @@

Функция СоздатьИзМенеджера(ОбъектМодели, МенеджерСущностей) Экспорт
Сущность = Новый(ОбъектМодели.ТипСущности());

Декоратор = Новый КонструкторДекоратора(Сущность)
.ДобавитьИмпортПоИмени("decorator")
.ДобавитьПриватноеПоле("_МенеджерСущностей", МенеджерСущностей)
.ДобавитьПриватноеПоле("_ОбъектМодели", ОбъектМодели)
.ДобавитьМетод(
"Прочитать",
"_ТипСущности = ОбработкаДекоратора.ИсходныйТип(ЭтотОбъект);
|_ДанныеСущности = _МенеджерСущностей.ПолучитьОдно(
| _ТипСущности,
| _ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект)
|);
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"
)
.ДобавитьМетод(
"Сохранить",
"_МенеджерСущностей.Сохранить(ЭтотОбъект);"
)
.ДобавитьМетод(
"Удалить",
"_МенеджерСущностей.Удалить(ЭтотОбъект);"
)
.Построить();


Декоратор = Новый ПостроительДекоратора(Сущность)
.Импорт(Новый Импорт("decorator"))

.Поле(Новый Поле("_МенеджерСущностей")
.ЗначениеПоУмолчанию(МенеджерСущностей))

.Поле(Новый Поле("_ОбъектМодели")
.ЗначениеПоУмолчанию(ОбъектМодели))

.Метод(Новый Метод("Прочитать")
.Публичный()
.ТелоМетода("_ТипСущности = ОбработкаДекоратора.ИсходныйТип(ЭтотОбъект);
|_ДанныеСущности = _МенеджерСущностей.ПолучитьОдно(
| _ТипСущности,
| _ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект)
|);
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"))


.Метод(Новый Метод("Сохранить")
.Публичный()
.ТелоМетода("_МенеджерСущностей.Сохранить(ЭтотОбъект);"))

.Метод(Новый Метод("Удалить")
.Публичный()
.ТелоМетода("_МенеджерСущностей.Удалить(ЭтотОбъект);"))

.Построить();

Возврат Декоратор;
КонецФункции

Функция СоздатьИзХранилища(ОбъектМодели, ХранилищеСущностей) Экспорт
Сущность = Новый(ОбъектМодели.ТипСущности());

Декоратор = Новый КонструкторДекоратора(Сущность)
.ДобавитьИмпортПоИмени("decorator")
.ДобавитьПриватноеПоле("_ХранилищеСущностей", ХранилищеСущностей)
.ДобавитьПриватноеПоле("_ОбъектМодели", ОбъектМодели)
.ДобавитьМетод(
"Прочитать",
"_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"
)
.ДобавитьМетод(
"Сохранить",
"_ХранилищеСущностей.Сохранить(ЭтотОбъект);"
)
.ДобавитьМетод(
"Удалить",
"_ХранилищеСущностей.Удалить(ЭтотОбъект);"
)

Декоратор = Новый ПостроительДекоратора(Сущность)
.Импорт(Новый Импорт("decorator"))

.Поле(Новый Поле("_ХранилищеСущностей")
.ЗначениеПоУмолчанию(ХранилищеСущностей))

.Поле(Новый Поле("_ОбъектМодели")
.ЗначениеПоУмолчанию(ОбъектМодели))

.Метод(Новый Метод("Прочитать")
.Публичный()
.ТелоМетода("_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"))


.Метод(Новый Метод("Сохранить")
.Публичный()
.ТелоМетода("_ХранилищеСущностей.Сохранить(ЭтотОбъект);"))

.Метод(Новый Метод("Удалить")
.Публичный()
.ТелоМетода("_ХранилищеСущностей.Удалить(ЭтотОбъект);"))

.Построить();

Возврат Декоратор;
Expand Down
2 changes: 1 addition & 1 deletion src/Классы/КоннекторPostgreSQL.os
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@
Семафор = Семафоры.Получить(Строка(ОбъектМодели.ТипСущности()));
Семафор.Захватить();
Запрос.Текст = ТекстЗапроса;
Сообщить(ТекстЗапроса);

Запрос.ВыполнитьКоманду();

Если ОбъектМодели.Идентификатор().ГенерируемоеЗначение Тогда
Expand Down
10 changes: 10 additions & 0 deletions tests/fixtures/ПростойОбъект.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

&Идентификатор
Перем Идентификатор Экспорт;

Перем Поле Экспорт;

&Сущность(ИмяТаблицы = "ПростыеОбъекты")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
112 changes: 112 additions & 0 deletions tests/КоннекторJSON.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#Использовать fs
#Использовать ".."

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

КонецПроцедуры

&Тест
Процедура СущностьМожетЗаписатьСебя() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

КонецПроцедуры

&Тест
Процедура СущностьМожетПерезаписатьСебя() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
НайденныйПростойОбъект.Поле = "3";
НайденныйПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("3");

КонецПроцедуры

&Тест
Процедура МенеджерСущностейМожетЗаписать() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
МенеджерСущностей.Сохранить(ПростойОбъект);

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

КонецПроцедуры

&Тест
Процедура ХранилищеСущностейМожетЗаписать() Экспорт

// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда

ХранилищеПростойОбъект = МенеджерСущностей.ПолучитьХранилищеСущностей(Тип("ПростойОбъект"));

ПростойОбъект = ХранилищеПростойОбъект.СоздатьЭлемент();
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = ХранилищеПростойОбъект.ПолучитьОдно("1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

КонецПроцедуры

0 comments on commit 83ee504

Please sign in to comment.