Skip to content

Commit

Permalink
Merge pull request #74 from nixel2007/develop
Browse files Browse the repository at this point in the history
Release
  • Loading branch information
nixel2007 authored Aug 30, 2023
2 parents 83ee504 + 86ce8b7 commit 229bd51
Show file tree
Hide file tree
Showing 15 changed files with 58 additions and 30 deletions.
22 changes: 4 additions & 18 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
oscript_version: ['1.8.3', 'stable']

steps:
- uses: actions/checkout@v3

Expand All @@ -30,30 +29,17 @@ jobs:
opm install -l --dev
- name: Install docker
if: matrix.os == 'macos-latest'
run: |
mkdir -p ~/.docker/machine/cache
curl -Lo ~/.docker/machine/cache/boot2docker.iso https://github.com/boot2docker/boot2docker/releases/download/v19.03.12/boot2docker.iso
brew install docker docker-machine
docker-machine create --driver virtualbox default
docker-machine env default
if: matrix.os != 'windows-latest'
uses: crazy-max/ghaction-setup-docker@v1
timeout-minutes: 12

- name: Setup PostgreSQL
if: matrix.os != 'windows-latest'
run: |
eval $(docker-machine env default) || true
docker run --rm --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 postgres
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
docker ps
while [ "`docker inspect -f {{.State.Health.Status}} postgres`" != "healthy" ]; do docker ps && sleep 2; done
docker ps
- name: Configure env vars on macos
if: matrix.os == 'macos-latest'
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
run: |
eval $(docker-machine env default)
echo "::set-env name=POSTGRES_HOST::$(docker-machine ip)"
- name: Run tests
env:
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,17 @@ jobs:
opm install [email protected]
opm install -l --dev
- name: Install docker
uses: crazy-max/ghaction-setup-docker@v1
timeout-minutes: 12

- name: Setup PostgreSQL
run: |
docker run --rm --name postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 postgres
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
docker ps
while [ "`docker inspect -f {{.State.Health.Status}} postgres`" != "healthy" ]; do docker ps && sleep 2; done
docker ps
- name: Compute branch name
uses: nelonoel/[email protected]

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
steps:
# Загрузка проекта
- name: Актуализация
uses: actions/checkout@v2
uses: actions/checkout@v3

# Установка OneScript конкретной версии
- name: Установка OneScript
Expand All @@ -41,7 +41,7 @@ jobs:
run: opm build .

- name: Заливка артефактов
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: package.zip
path: ./${{ env.PACKAGE_MASK }}
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@
* Время
* ДатаВремя
* Ссылка
* ДвоичныеДанные
* `ТипСсылки` - Строка - Имя зарегистрированного в модели типа, в который преобразуется значение из колонки. Имеет смысл только в паре с параметром `Тип`, равным `Ссылка`. Допустимо указывать примитивные типы из перечисления `ТипыКолонок` и типы сущностей (например, `"ФизическоеЛицо"`)

<a id="annotation-secondary-table" />
Expand Down
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//
// BSLLS:CodeOutOfRegion-off
Описание.Имя("entity")
.Версия("2.3.4.0")
.Версия("2.3.5.0")
.Автор("Nikita Gryzlov")
.АдресАвтора("[email protected]")
.Описание("entity")
Expand All @@ -23,7 +23,7 @@
.ЗависитОт("decorator", "1.5.1")
.ЗависитОт("reflector", "0.6.1")
.ЗависитОт("semaphore", "1.1.0")
.ЗависитОт("sql", "1.1.1.2")
.ЗависитОт("sql", "1.2.0.1")
.ЗависитОт("strings", "0.5.0")
.РазработкаЗависитОт("1bdd")
.РазработкаЗависитОт("1testrunner")
Expand Down
6 changes: 5 additions & 1 deletion src/Классы/КоннекторJSON.os
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,11 @@
Для Каждого СтрокаДанныхТаблицы Из ДанныеТаблицы Цикл
ЗначенияКолонок = Новый Соответствие;
Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
ЗначенияКолонок.Вставить(Колонка.ИмяКолонки, СтрокаДанныхТаблицы.Значение.Получить(Колонка.ИмяКолонки));
Значение = СтрокаДанныхТаблицы.Значение.Получить(Колонка.ИмяКолонки);
Если Колонка.ТипКолонки = ТипыКолонок.ДвоичныеДанные Тогда
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(Значение);
КонецЕсли;
ЗначенияКолонок.Вставить(Колонка.ИмяКолонки, Значение);
КонецЦикла;
НайденныеСтроки.Добавить(ЗначенияКолонок);
КонецЦикла;
Expand Down
5 changes: 3 additions & 2 deletions src/Классы/КоннекторPostgreSQL.os
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,11 @@
ЭтоВставкаОбъекта = Истина;
КонецЕсли;

ЭтоПустаяСсылка =
ДанныеОКолонке.ТипКолонки = ТипыКолонок.Ссылка
ЭтоПустаяСсылка = ДанныеОКолонке.ТипКолонки = ТипыКолонок.Ссылка
И (ЗначениеПараметра = 0 Или ЗначениеПараметра = Неопределено);

ИменаКолонок = ИменаКолонок + Символы.Таб + ДанныеОКолонке.ИмяКолонки + "," + Символы.ПС;

ЗначенияКолонок = ЗначенияКолонок
+ Символы.Таб
+ ?(ЭтоПустаяСсылка, "null", "@" + ДанныеОКолонке.ИмяКолонки)
Expand Down Expand Up @@ -285,6 +285,7 @@
Карта.Вставить(ТипыКолонок.Дата, "date");
Карта.Вставить(ТипыКолонок.Время, "time");
Карта.Вставить(ТипыКолонок.ДатаВремя, "timestamp");
Карта.Вставить(ТипыКолонок.ДвоичныеДанные, "bytea");

Возврат Карта;

Expand Down
1 change: 1 addition & 0 deletions src/Классы/КоннекторSQLite.os
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@
Карта.Вставить(ТипыКолонок.Дата, "DATE");
Карта.Вставить(ТипыКолонок.Время, "TIME");
Карта.Вставить(ТипыКолонок.ДатаВремя, "DATETIME");
Карта.Вставить(ТипыКолонок.ДвоичныеДанные, "BLOB");

Возврат Карта;

Expand Down
11 changes: 11 additions & 0 deletions src/Классы/ОбъектМодели.os
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@
Иначе
ЗначениеПоля = ОбъектМоделиСсылки.ПолучитьЗначениеИдентификатора(ЗначениеПоля);
КонецЕсли;
ИначеЕсли Колонка.ТипКолонки = ТипыКолонок.ДвоичныеДанные Тогда
// Просто ничего не делаем, все работает само
Иначе
ЗначениеПоля = ПривестиЗначениеПоля(ЗначениеПоля, ИмяПоля);
КонецЕсли;
Expand Down Expand Up @@ -360,12 +362,21 @@
Карта.Вставить(ТипыКолонок.Дата, Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата)));
Карта.Вставить(ТипыКолонок.Время, Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Время)));
Карта.Вставить(ТипыКолонок.ДатаВремя, Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)));
Карта.Вставить(ТипыКолонок.ДвоичныеДанные, Новый ОписаниеТипов("ДвоичныеДанные"));

Возврат Карта;

КонецФункции

Функция ВыполнитьПриведениеЗначения(Колонка, Значение)
// Если тип колонки и значение - двоичные данные, то приводить не нужно.
// по крайней мере пока oscript не научится приводить тип двоичных данных
// https://github.com/EvilBeaver/OneScript/issues/1327
Если Колонка.ТипКолонки = ТипыКолонок.ДвоичныеДанные
И ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
Возврат Значение;
КонецЕсли;

ОбработанноеЗначение = Значение;

КартаОписанийТипов = СоответствиеТиповМоделиОписанийТипов();
Expand Down
4 changes: 4 additions & 0 deletions src/Модули/ТипыКолонок.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
Перем Время Экспорт;
Перем ДатаВремя Экспорт;
Перем Ссылка Экспорт;
Перем ДвоичныеДанные Экспорт;

Перем Типы;
Перем ПримитивныеТипы;
Expand Down Expand Up @@ -38,6 +39,7 @@
Время = "Время";
ДатаВремя = "ДатаВремя";
Ссылка = "Ссылка";
ДвоичныеДанные = "ДвоичныеДанные";

Типы = Новый Массив;
Типы.Добавить(Целое);
Expand All @@ -48,6 +50,7 @@
Типы.Добавить(Время);
Типы.Добавить(ДатаВремя);
Типы.Добавить(Ссылка);
Типы.Добавить(ДвоичныеДанные);

ПримитивныеТипы = Новый Массив;
ПримитивныеТипы.Добавить(Целое);
Expand All @@ -57,3 +60,4 @@
ПримитивныеТипы.Добавить(Дата);
ПримитивныеТипы.Добавить(Время);
ПримитивныеТипы.Добавить(ДатаВремя);
ПримитивныеТипы.Добавить(ДвоичныеДанные);
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
&Колонка(Тип = "ДатаВремя")
Перем ДатаВремя Экспорт;

&Колонка(Тип = "ДвоичныеДанные")
Перем ДвоичныеДанные Экспорт;

&Колонка(Тип = "Ссылка", ТипСсылки = "СущностьСоВсемиТипамиКолонок")
Перем Ссылка Экспорт;

Expand Down
2 changes: 2 additions & 0 deletions tests/КоннекторJSON.os
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
Сущность.Время = Дата(1, 1, 1, 10, 53, 20);
Сущность.ДатаВремя = Дата(2018, 1, 1, 10, 53, 20);
Сущность.Ссылка = ЗависимаяСущность;
Сущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("ДвоичныеДанные");

Коннектор.Сохранить(ОбъектМодели, ЗависимаяСущность);
Коннектор.Сохранить(ОбъектМодели, Сущность);
Expand All @@ -68,6 +69,7 @@
Ожидаем.Что(ЗначенияКолонок.Получить("Время"), "ЗначенияКолонок.Время получено корректно").Равно(Сущность.Время);
Ожидаем.Что(ЗначенияКолонок.Получить("ДатаВремя"), "ЗначенияКолонок.ДатаВремя получено корректно").Равно(Сущность.ДатаВремя);
Ожидаем.Что(ЗначенияКолонок.Получить("Ссылка"), "ЗначенияКолонок.Ссылка получено корректно").Равно(Сущность.Ссылка.Целое);
Ожидаем.Что(ЗначенияКолонок.Получить("ДвоичныеДанные"), "ЗначенияКолонок.ДвоичныеДанные получено корректно").Равно(Сущность.ДвоичныеДанные);
КонецПроцедуры

&Тест
Expand Down
10 changes: 7 additions & 3 deletions tests/КоннекторPostgreSQL.os
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@

ЗависимаяСущность = Новый СущностьСоВсемиТипамиКолонок;
ЗависимаяСущность.Целое = 2;

Сущность = Новый СущностьСоВсемиТипамиКолонок;
Сущность.Целое = 1;
Сущность.Дробное = 1.2;
Expand All @@ -99,7 +99,8 @@
Сущность.Время = Дата(1, 1, 1, 10, 53, 20); // проблема с типами
Сущность.ДатаВремя = Дата(2018, 1, 1, 10, 53, 20);
Сущность.Ссылка = ЗависимаяСущность;

Сущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("Привет, Мир!");

Коннектор.Сохранить(ОбъектМодели, ЗависимаяСущность);
Коннектор.Сохранить(ОбъектМодели, Сущность);

Expand All @@ -121,6 +122,7 @@
//Ожидаем.Что(ДанныеИзБазы.Время, "Сущность.Время сохранилось корректно").Равно(Сущность.Время); // проблема с типами
Ожидаем.Что(ДанныеИзБазы.ДатаВремя, "Сущность.ДатаВремя сохранилось корректно").Равно(Сущность.ДатаВремя);
Ожидаем.Что(ДанныеИзБазы.Ссылка, "Сущность.Ссылка сохранилось корректно").Равно(Сущность.Ссылка.Целое);
Ожидаем.Что(ДанныеИзБазы.ДвоичныеДанные, "ЗначенияКолонок.ДвоичныеДанные получено корректно").Равно(Сущность.ДвоичныеДанные);

Коннектор.Удалить(ОбъектМодели, Сущность);

Expand Down Expand Up @@ -182,7 +184,8 @@
Сущность.Время = Дата(1, 1, 1, 10, 53, 20); // проблема с типами
Сущность.ДатаВремя = Дата(2018, 1, 1, 10, 53, 20);
Сущность.Ссылка = ЗависимаяСущность;

Сущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("Привет, Мир!");

Коннектор.Сохранить(ОбъектМодели, ЗависимаяСущность);
Коннектор.Сохранить(ОбъектМодели, Сущность);

Expand All @@ -201,6 +204,7 @@
//Ожидаем.Что(ЗначенияКолонок.Получить("Время"), "ЗначенияКолонок.Время получено корректно").Равно(Сущность.Время); // проблема с типами
Ожидаем.Что(ЗначенияКолонок.Получить("ДатаВремя"), "ЗначенияКолонок.ДатаВремя получено корректно").Равно(Сущность.ДатаВремя);
Ожидаем.Что(ЗначенияКолонок.Получить("Ссылка"), "ЗначенияКолонок.Ссылка получено корректно").Равно(Сущность.Ссылка.Целое);
Ожидаем.Что(ЗначенияКолонок.Получить("ДвоичныеДанные"), "ЗначенияКолонок.ДвоичныеДанные получено корректно").Равно(Сущность.ДвоичныеДанные);

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

Expand Down
5 changes: 5 additions & 0 deletions tests/КоннекторSQLite.os
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@

ЗависимаяСущность = Новый СущностьСоВсемиТипамиКолонок;
ЗависимаяСущность.Целое = 2;
ЗависимаяСущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("ДвоичныеДанные");

Сущность = Новый СущностьСоВсемиТипамиКолонок;
Сущность.Целое = 1;
Expand All @@ -88,6 +89,7 @@
Сущность.Время = Дата(1, 1, 1, 10, 53, 20);
Сущность.ДатаВремя = Дата(2018, 1, 1, 10, 53, 20);
Сущность.Ссылка = ЗависимаяСущность;
Сущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("ДвоичныеДанные");

Коннектор.Сохранить(ОбъектМодели, ЗависимаяСущность);
Коннектор.Сохранить(ОбъектМодели, Сущность);
Expand All @@ -110,6 +112,7 @@
Ожидаем.Что(ДанныеИзБазы.Время, "Сущность.Время сохранилось корректно").Равно(Сущность.Время);
Ожидаем.Что(ДанныеИзБазы.ДатаВремя, "Сущность.ДатаВремя сохранилось корректно").Равно(Сущность.ДатаВремя);
Ожидаем.Что(ДанныеИзБазы.Ссылка, "Сущность.Ссылка сохранилось корректно").Равно(Сущность.Ссылка.Целое);
Ожидаем.Что(ДанныеИзБазы.ДвоичныеДанные, "Сущность.ДвоичныеДанные сохранилось корректно").Равно(Сущность.ДвоичныеДанные);

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

Expand Down Expand Up @@ -153,6 +156,7 @@
Сущность.Время = Дата(1, 1, 1, 10, 53, 20);
Сущность.ДатаВремя = Дата(2018, 1, 1, 10, 53, 20);
Сущность.Ссылка = ЗависимаяСущность;
Сущность.ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("ДвоичныеДанные");

Коннектор.Сохранить(ОбъектМодели, ЗависимаяСущность);
Коннектор.Сохранить(ОбъектМодели, Сущность);
Expand All @@ -172,6 +176,7 @@
Ожидаем.Что(ЗначенияКолонок.Получить("Время"), "ЗначенияКолонок.Время получено корректно").Равно(Сущность.Время);
Ожидаем.Что(ЗначенияКолонок.Получить("ДатаВремя"), "ЗначенияКолонок.ДатаВремя получено корректно").Равно(Сущность.ДатаВремя);
Ожидаем.Что(ЗначенияКолонок.Получить("Ссылка"), "ЗначенияКолонок.Ссылка получено корректно").Равно(Сущность.Ссылка.Целое);
Ожидаем.Что(ЗначенияКолонок.Получить("ДвоичныеДанные"), "ЗначенияКолонок.ДвоичныеДанные получено корректно").Равно(Сущность.ДвоичныеДанные);

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

Expand Down
Loading

0 comments on commit 229bd51

Please sign in to comment.