Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Указание источников данных в сущностях, расширение документации #103

Merged
merged 13 commits into from
Jan 31, 2025

Conversation

nixel2007
Copy link
Owner

@nixel2007 nixel2007 commented Jan 31, 2025

Summary by CodeRabbit

Примечания к выпуску

  • Новые возможности

    • Добавлена поддержка аннотаций для работы с источниками данных и сущностями
    • Расширены возможности по настройке колонок и подчиненных таблиц
    • Введен новый механизм генерации значений для полей базы данных
  • Обновления

    • Обновлена версия OneScript с 1.8.3 до 1.9.2
    • Добавлена зависимость от пакета "annotations" версии 1.2.0
    • Обновлены триггеры событий для процесса релиза, теперь он срабатывает только на опубликованных версиях
  • Улучшения документации

    • Обновлено описание аннотаций в README
    • Добавлены подробные комментарии к новым классам и аннотациям

@nixel2007 nixel2007 marked this pull request as ready for review January 31, 2025 22:41
@nixel2007
Copy link
Owner Author

@coderabbitai review

Copy link
Contributor

coderabbitai bot commented Jan 31, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

coderabbitai bot commented Jan 31, 2025

Warning

Rate limit exceeded

@nixel2007 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 1 minutes and 15 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 8f5d78d and f27416b.

📒 Files selected for processing (4)
  • .github/workflows/release.yml (2 hunks)
  • packagedef (1 hunks)
  • tests/fixtures/Автор.os (1 hunks)
  • tests/ОбъектМодели.os (1 hunks)

Walkthrough

Этот pull request представляет собой обновление библиотеки управления сущностями с версии 1.8.3 до 1.9.2. Основные изменения включают добавление новых аннотаций для работы с базами данных, введение концепции источников данных и обновление workflow-процессов в GitHub Actions. Изменения направлены на улучшение механизмов работы с сущностями, колонками и подчиненными таблицами в контексте объектно-реляционного отображения.

Changes

Файл Изменения
.github/workflows/* Обновление версии OneScript с 1.8.3 до 1.9.2 во всех workflow, изменение триггера события в release.yml
README.md Уточнение описания аннотаций и добавление параметра ИсточникДанных
packagedef Обновление версии среды с 1.8.3 до 1.9.2 и добавление зависимости "annotations"
src/Аннотации/Классы/ Добавлены новые классы аннотаций: АннотацияГенерируемоеЗначение, АннотацияИдентификатор, АннотацияКолонка, АннотацияПодчиненнаяТаблица, АннотацияСущность
src/Классы/ Добавлен класс ИсточникДанных, обновлен ОбъектМодели и МенеджерСущностей

Poem

🐰 В мире кода, где строки танцуют,
Сущности новые смело бунтуют!
Аннотации, source, версий полёт,
Кролик-программист радостно ждёт!
Эволюция кода - наш верный маршрут! 🚀


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@nixel2007
Copy link
Owner Author

@coderabbitai summary

Copy link
Contributor

coderabbitai bot commented Jan 31, 2025

✅ Actions performed

Summary regeneration triggered.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (7)
src/Классы/ОбъектМодели.os (3)

7-7: Добавление переменной ИсточникиДанных на глобальном уровне
Переменная объявлена в глобальной области видимости модуля. Если требуется изоляция или специфическая инициализация, целесообразно хранить её в локальном контексте объекта и использовать геттеры/сеттеры при необходимости.


169-169: Установка флага ГенерируемоеЗначение
Логика определения, что колонка должна генерировать своё значение, выглядит верной. Убедитесь, что дальнейший код корректно обрабатывает такие колонки при вставке/обновлении записей.


198-211: Заполнение свойств подчинённых таблиц
Новый код правильно использует аннотацию ПодчиненнаяТаблица для формирования имени таблицы, типа и дополнительных опций. При необходимости можно добавить дополнительную проверку на случай отсутствия или некорректного значения ТипЭлемента.

Хотите ли вы, чтобы я предложил пример кода, демонстрирующий валидацию на уровне аннотации?

src/Классы/ИсточникДанных.os (2)

14-16: Функция СтрокаСоединения()
Возвращение строки соединения без обработки выглядит уместным. При необходимости validaции рекомендуются дополнительные проверки (например, на пустую строку), чтобы избежать сбоев.


22-37: Процедура ПриСозданииОбъекта(...)
Аргументы процедуры и логика инициализации переменных выглядят согласованными. При необходимости уточнить конфигурацию, можно расширить эту процедуру дополнительными действиями по проверке валидности параметров (например, проверка не пустого Имя).

src/Аннотации/Классы/АннотацияПодчиненнаяТаблица.os (1)

19-21: Рекомендуется добавить валидацию параметров.

Предлагаю добавить проверку значений параметров при создании объекта для предотвращения некорректного использования.

Пример реализации:

 Процедура ПриСозданииОбъекта(ИмяТаблицы = Неопределено, Тип = Неопределено, ТипЭлемента = Неопределено, КаскадноеЧтение = Ложь)
+    Если Тип <> Неопределено И Тип <> "Массив" И Тип <> "Структура" Тогда
+        ВызватьИсключение "Недопустимое значение параметра Тип. Ожидается: Массив или Структура";
+    КонецЕсли;
 КонецПроцедуры
src/Аннотации/Классы/АннотацияКолонка.os (1)

35-37: Рекомендуется добавить валидацию типа колонки.

Следует добавить проверку корректности значения параметра Тип при создании объекта.

Пример реализации:

 Процедура ПриСозданииОбъекта(Имя = Неопределено, Тип = "Строка", ТипСсылки = Неопределено)
+    ДопустимыеТипы = Новый Массив;
+    ДопустимыеТипы.Добавить("Целое");
+    ДопустимыеТипы.Добавить("Дробное");
+    ДопустимыеТипы.Добавить("Булево");
+    ДопустимыеТипы.Добавить("Строка");
+    ДопустимыеТипы.Добавить("Дата");
+    ДопустимыеТипы.Добавить("Время");
+    ДопустимыеТипы.Добавить("ДатаВремя");
+    ДопустимыеТипы.Добавить("Ссылка");
+    ДопустимыеТипы.Добавить("ДвоичныеДанные");
+    
+    Если ДопустимыеТипы.Найти(Тип) = Неопределено Тогда
+        ВызватьИсключение "Недопустимый тип колонки: " + Тип;
+    КонецЕсли;
+    
+    Если Тип = "Ссылка" И ТипСсылки = Неопределено Тогда
+        ВызватьИсключение "Для типа Ссылка необходимо указать ТипСсылки";
+    КонецЕсли;
 КонецПроцедуры
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 93476c3 and 8f5d78d.

📒 Files selected for processing (14)
  • .github/workflows/main.yml (1 hunks)
  • .github/workflows/qa.yml (1 hunks)
  • .github/workflows/release.yml (2 hunks)
  • README.md (1 hunks)
  • lib.config (2 hunks)
  • packagedef (1 hunks)
  • src/Аннотации/Классы/АннотацияГенерируемоеЗначение.os (1 hunks)
  • src/Аннотации/Классы/АннотацияИдентификатор.os (1 hunks)
  • src/Аннотации/Классы/АннотацияКолонка.os (1 hunks)
  • src/Аннотации/Классы/АннотацияПодчиненнаяТаблица.os (1 hunks)
  • src/Аннотации/Классы/АннотацияСущность.os (1 hunks)
  • src/Классы/ИсточникДанных.os (1 hunks)
  • src/Классы/МенеджерСущностей.os (1 hunks)
  • src/Классы/ОбъектМодели.os (4 hunks)
✅ Files skipped from review due to trivial changes (3)
  • src/Классы/МенеджерСущностей.os
  • src/Аннотации/Классы/АннотацияИдентификатор.os
  • src/Аннотации/Классы/АннотацияГенерируемоеЗначение.os
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.github/workflows/release.yml

[warning] 9-9: wrong indentation: expected 4 but found 6

(indentation)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: build (windows-latest, stable)
  • GitHub Check: build (windows-latest, 1.9.2)
  • GitHub Check: build (ubuntu-latest, stable)
  • GitHub Check: build
  • GitHub Check: build (ubuntu-latest, 1.9.2)
  • GitHub Check: build (windows-latest, 1.9.2)
  • GitHub Check: build
🔇 Additional comments (19)
src/Классы/ОбъектМодели.os (4)

31-33: Функция ИсточникиДанных()
Функция корректно возвращает переменную ИсточникиДанных. Убедитесь, что значение формируется до вызова данной функции, чтобы избежать обращения к неинициализированным данным.


141-145: Проверка наличия аннотации Сущность
Если по каким-то причинам аннотация не будет найдена, может возникнуть ошибка при попытке получить параметры. Рекомендуется дополнительно проверять результат вызова НайтиАннотацию(...) на Неопределено, чтобы избежать сбоев.


150-150: Обработка аннотации подчинённой таблицы
Код корректно пропускает столбцы с аннотацией ПодчиненнаяТаблица. Данная логика выглядит согласованной с дальнейшей обработкой подчинённых таблиц.


158-164: Получение параметров аннотации Колонка
Текущий подход через РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации выглядит упрощённым и надёжным. Однако на практике стоит проверять валидность возвращаемого типа, если указано ТипСсылки. При ошибочной передаче типа возможны неопределённые ситуации.

src/Классы/ИсточникДанных.os (4)

1-4: Объявление переменных для описания источника данных
Переменные логичны и соответствуют основным атрибутам источника данных (имя, тип, строка соединения, параметры). Следите за корректным заполнением этих полей при создании объекта.


6-8: Функция Имя()
Возвращается идентификатор источника данных. Всё выглядит корректно.


10-12: Функция ТипКоннектора()
Метод корректно возвращает тип коннектора. Если поле не инициализировано, могут возникнуть проблемы при дальнейшей работе, поэтому желательно предусмотреть проверку или значение по умолчанию.


18-20: Функция ПараметрыКоннектора()
Возвращение массива параметров позволяет гибко дополнять настройки. Проверяйте, что массив корректно сформирован при инициализации.

src/Аннотации/Классы/АннотацияСущность.os (1)

1-19: Новая аннотация Сущность и процедура конструктора
Аннотация логично описывает параметры таблицы и источников данных. Процедура с повторяемым параметром ИсточникДанных позволяет удобную конфигурацию. Рекомендуется дополнить документацию примерами использования разных источников данных, если это предполагается.

packagedef (1)

11-11: Обновление версии среды и добавление новой зависимости.

Изменения корректны:

  • Обновление версии среды до 1.9.2 соответствует изменениям в workflow-файлах
  • Добавление зависимости annotations необходимо для новых аннотаций

Also applies to: 18-18

src/Аннотации/Классы/АннотацияПодчиненнаяТаблица.os (1)

1-18: Отличная документация аннотации.

Документация подробно описывает все параметры и содержит наглядный пример использования.

src/Аннотации/Классы/АннотацияКолонка.os (1)

1-33: Подробная документация с исчерпывающим списком типов.

Документация отлично структурирована и содержит все необходимые примеры использования.

.github/workflows/release.yml (1)

21-21: Обновление версии OneScript согласовано с другими изменениями.

Версия OneScript обновлена до 1.9.2, что соответствует обновлению версии среды в packagedef.

.github/workflows/main.yml (1)

17-17: Обновление версии Onescript в CI.
Версия в матрице параметров изменена с прежней (например, 1.8.3) на новую 1.9.2, что соответствует обновлённым требованиям.

lib.config (2)

4-4: Добавлен класс «ИсточникДанных».
Новый класс «ИсточникДанных» расширяет конфигурацию для работы с различными источниками данных и соответствует цели PR "Feature/data-source".


16-20: Добавлены новые аннотации для сущностей.
В блоке добавлены следующие классы:

  • АннотацияГенерируемоеЗначение
  • АннотацияИдентификатор
  • АннотацияКолонка
  • АннотацияПодчиненнаяТаблица
  • АннотацияСущность

Эти изменения улучшают механизм аннотирования сущностей в ORM, позволяя более гибко задавать параметры для таблиц и колонок. Рекомендуется проверить раздел документации, чтобы обеспечить соответствие новым возможностям.

.github/workflows/qa.yml (1)

20-20: Обновление версии в QA workflow.
Параметр version для Setup Onescript Action обновлён до "1.9.2", что обеспечивает согласованность с основным CI-пайплайном.

README.md (2)

412-412: Расширение аннотации «Сущность».
Добавлен новый параметр ИсточникДанных к аннотации Сущность, что позволяет явно указывать имя источника данных, используемого коннектором в работе с сущностями. Это изменение улучшает гибкость конфигурации ORM.


420-420: Уточнение описания аннотации «Идентификатор».
Текст описания изменён для повышения ясности требований к наличию поля идентификатора в классах-сущностях. Обновлённое описание должно помочь разработчикам корректно реализовывать первичный ключ.

.github/workflows/release.yml Outdated Show resolved Hide resolved
@nixel2007 nixel2007 changed the title Feature/data-source Указание источников данных в сущностях, расширение документации Jan 31, 2025
@nixel2007 nixel2007 merged commit 41dc878 into master Jan 31, 2025
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant