1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/poethxp-rust-generator

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 22:49 ce24fab

rbatis-generator

Введение

Rust-инструмент для генерации исходного кода, использующий rbatis (ORM-инструментарий, основанный на sqlx) и actix-web. Этот инструмент может генерировать соответствующий код маршрутизации для actix-web. Он представляет собой дружественный инструмент для начинающих Rust-разработчиков, который помогает им понять работу rbatis и actix-web.

rbatis-генератор использует конфигурационный файл rbatis.yml для управления содержимым генерируемого проекта. Конфигурационный файл включает в себя:

  1. Соединение с базой данных;
  2. Свойства генерируемого проекта;
  3. Определение таблиц, которые должны быть сгенерированы;
  4. Определение отношений между таблицами, включая one-to-one, one-to-many и many-to-many (с использованием промежуточных таблиц);
  5. Определение запросов, которые должны быть сгенерированы.

Ниже приводится подробное описание rbatis.yml:

-->1. Сначала идёт конфигурация соединения с базой данных:

database:
  url: mysql://chimes:ks123456@localhost:3306/morinkhuur

-->2. Информация, которая должна быть сгенерирована:

codegen:
  app-name: MorinkhuurCanary                                        # Название приложения
  app-authors: Long(long.zou@gmail.com)                             # Авторы приложения
  app-edition: "2021"                                               # Версия Rust
  app-version: 0.1.0                                                # Номер версии приложения
  output-path: d:/temp/rust/                                        # Путь вывода сгенерированного кода
  always-generate-handler: true                                     # Генерировать ли код actix-web handler
  always-generate-entity: true                                      # Генерировать ли код сущностей, включая определение структуры и методы CRUD
  allow-bool-widecard: true                                         # Разрешить ли широкое толкование полей типа bool в сгенерированных структурах
  allow-number-widecard: true                                       # Разрешить ли широкое толкование числовых полей в сгенерированных структурах
  config-template-generate: D:/gitspaces/conf/rbatis.yml            # Генерировать ли интерпретирующий код для указанного файла конфигурации
  api-handler-prefix: /api/v1                                       # Префикс URL для обработчиков API
  webserver-port: "10899"                                           # Порт сервера при запуске приложения
  schema-name: morinkhuur                                           # Имя схемы базы данных, соответствующей соединению
  tables:                                                           # Определение всех необходимых таблиц
    - name: MORINKHUUR_USER                                         # Имя таблицы
      comment: Пользователь                                          # Комментарий к таблице
      struct-name: MorinkhuurUser                                   # Сгенерированное имя структуры
      primary-key: user_id                                          # Определение первичного ключа
      all-field-option: true                                        # Все поля являются опциональными
      update-skip-fields: create_date                               # Поля, которые нужно пропустить при обновлении
      update-seletive: true                                         # Выполнять выборочное обновление
      page-query: true                                              # Генерировать ли запросы с разбиением на страницы
      default-sort-field: job_sort asc                              # Поле сортировки по умолчанию
      generate-param-struct: true                                   # Генерировать структуру для параметров запроса
      tree-parent-field: pid                                        # Поддерживать ли древовидные запросы
      tree-root-value: "null"                                       # Условие для корневого узла дерева
      api-handler-name: user                                        # Имя обработчика API для сопоставления с URL **api-handler-name** не должен содержать значения, отличные от букв и цифр, и не должен начинаться с цифры.

**simple-funclist:** определение некоторых часто используемых простых методов запросов. Обычно в процессе фактического использования некоторые сущности требуют запроса на основе одного или нескольких полей, мы можем определить простой список функций.

- **func-name:** load_username — определение имени функции.
- **condition:** username — поле для запроса.
- **list:** false — возвращать ли список?
- **self-func:** false — определять ли как функцию, требующую ссылки на self?
- **paged:** false — поддерживать ли разбиение на страницы. Если list и paged оба равны false, будет создан запрос, возвращающий одну запись.

**queries:** определение пользовательских запросов. Для некоторых сложных SQL-запросов можно определить query для реализации.

- **base-sql:** SELECT * FROM MORINKHUUR_USER — базовый SQL для запроса, последующие функции будут использовать этот SQL в качестве основы для обработки.
- **struct-name:** QueryUser — имя генерируемой структуры.
- **generate-handler:** true — генерировать ли actix-web handler.
- **api-handler-name:** user — при генерации actix-web handler соответствующее отображение URL основной части, аналогично определению таблицы.
- **comment:** пользовательский запрос меню — краткое и эффективное примечание.
- **single-result:** false — возвращает ли одну запись.
- **params:** фиксированные параметры, фиксированные параметры относятся к обязательным параметрам, записанным в base-SQL, а также к пониманию того, сколько вопросительных знаков в SQL, столько же параметров.
    - **column-names:** id — имена параметров.
    - **column-types:** bigint — типы параметров.
    - **default-value:** 1 — значение по умолчанию, используется rbati-generator для выполнения base-SQL для получения соответствующей информации о столбце.
- **variant-params:** переменные параметры, определение переменных параметров может позволить динамическое решение о выполнении соответствующего условия во время выполнения на основе переданного значения.
    - **column-names:** user_name — имена параметров, если их несколько, они разделяются запятыми.
    - **column-types:** varchar — типы параметров, если их несколько, они разделяются запятыми.
    - **column-express:** and MONITOR_USER = ? — динамически добавляется в выражение SQL. Если выражение представляет собой несколько условий, их можно перечислить вместе. Имена и типы параметров также должны соответствовать нескольким.

**relations:** определение сущностей, требующих объединения по отношениям.

- **struct-name:** ChimesUserRoles — соответствующее имя структуры.
- **comment:** отношение роли пользователя — краткое и эффективное примечание.
- **major-table:** chimes_user — связанная основная таблица.
- **extend-major:** true — расширить поля основной таблицы, иначе просто создать одно поле в структуре.
- **generate-handler:** true — генерировать ли actix-web Handler.
- **generate-select:** true — генерировать ли операцию Select, фактически загружать данные на основе первичного ключа.
- **generate-save:** true — генерировать ли сохранение операции, выполнять insert или update в зависимости от конкретной ситуации.
- **generate-delete:** true — генерировать ли удаление операции, удалять данные из основной и связанной таблиц.
- **one-to-one:** описание связи one-to-one.
    - **table-name:** chimes_profile — имя связанной таблицы.
    - **join-field:** user_id — поле соединения связанной таблицы.
    - **major-field:** user_id — основное поле таблицы.
- **one-to-many:** описание связи one-to-many, используемой для описания связи one-to-many или many-to-many.
    - **table-name:** chimes_role — имя связанной таблицы.
    - **join-field:** role_id — имя поля соединения связанной таблицы.
    - **major-field:** user_id — основное поле таблицы.
    - **middle-table:** chimes_users_roles — имя промежуточной таблицы. Промежуточная таблица используется для соединения в случае фактической связи many-to-many (например, отношения между пользователем и ролью фактически являются отношениями many-to-many), и для точного описания many-to-many необходимо установить двустороннюю связь one-to-many, например, пользователь (1) — (*) роль и роль (1) — (*) пользователь. При создании промежуточной таблицы необходимо выполнить одно требование: имена полей в промежуточной таблице должны совпадать с именами полей связи основной таблицы. Например, первичный ключ таблицы пользователей — user_id, первичный ключ таблицы ролей — role_id, тогда поля промежуточной таблицы chimes_users_roles должны быть user_id и role_id. При сохранении/удалении данных в режиме many-to-many будут изменены/удалены только данные в промежуточной таблице. ## Если промежуточная таблица не существует, то это означает, что главная таблица и данная таблица связаны отношением «один ко многим». При выполнении операций сохранения или удаления это повлияет на данные в связанной таблице.

#### Установка и использование
1. Скачайте.  
2. Измените файл conf/rbatis.yml в соответствии с вашими потребностями.  
3. Выполните команду cargo b или cargo b -r.  
4. Выполните команды target/debug/rbatisgen или target/release/rbatisgen.  
5. Найдите каталог вывода, сгенерированный код Rust будет находиться в этом каталоге. Обычно структура каталогов сгенерированного кода Rust выглядит следующим образом:
    1. |--src
    2. |  |--conf (каталог для хранения файлов конфигурации)
    3. |  |--entity (каталог для хранения всего сгенерированного на основе таблиц кода)
    4. |  |--handler (каталог для хранения сгенерированных actix-web обработчиков)
    5. |  |--query (существует, если rbatis.yml определяет пользовательские запросы)
    6. |  |--utils (некоторые функции или классы инструментов)
    7. |  |--main.rs (основной файл)
    8. |--Cargo.toml

Теперь вы можете скачать его и начать своё путешествие в мир Rust.

PS: В настоящее время поддерживается только база данных MySQL. Поддержка других баз данных будет добавлена позже.

# Контакты / пожертвования или [rbatis-generator](https://gitee.com/poethxp/rbatis-generator) star

> Пожертвования

<img style="width: 400px;height: 545px;" width="400" height="545" src="https://gitee.com/poethxp/rbatis-generator/raw/master/wx_account.jpg" alt="enjoylost"/>

#### Другие программы, использующие rbatis-generator

> Постоянно добавляются...

1. Begonia Accounting

<img style="width: 200px; height: 200px;" width="200" height="200" src="https://gitee.com/poethxp/rbatis-generator/raw/master/begonia.jpg" alt="Begonia Accounting"/>

2. Zizig Rules

<img style="width: 200px; height: 200px;" width="200" height="200" src="https://gitee.com/poethxp/rbatis-generator/raw/master/zzg.jpg" alt="Zizig Rules"/>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/poethxp-rust-generator.git
git@api.gitlife.ru:oschina-mirror/poethxp-rust-generator.git
oschina-mirror
poethxp-rust-generator
poethxp-rust-generator
master