rbatis-generator
Rust-инструмент для генерации исходного кода, использующий rbatis (ORM-инструментарий, основанный на sqlx) и actix-web. Этот инструмент может генерировать соответствующий код маршрутизации для actix-web. Он представляет собой дружественный инструмент для начинающих Rust-разработчиков, который помогает им понять работу rbatis и actix-web.
rbatis-генератор использует конфигурационный файл rbatis.yml для управления содержимым генерируемого проекта. Конфигурационный файл включает в себя:
Ниже приводится подробное описание 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 )