mirror: entity general scheme

This commit is contained in:
2025-02-01 23:09:50 +07:00
parent 5c08b80c6b
commit cdf01dd57f
2 changed files with 65 additions and 20 deletions

View File

@@ -1,8 +1,9 @@
# NTO # NTO
## Задачи ## Задачи
- [x] Migrator - [x] Migrator
- [ ] Crud service generator (based on gorm gen) - [x] Crud service generator (based on gorm gen)
- [ ] Easy init without git repository (like create-nto-app) - [ ] Easy init without git repository (like create-nto-app)
- [ ] Excel export - [ ] Excel export
- [ ] Models validation logic (callbacks and other stuff) - [ ] Models validation logic (callbacks and other stuff)
@@ -12,30 +13,37 @@
## Установка ## Установка
Для разработки необходимы следующие инструменты: Для разработки необходимы следующие инструменты:
* [Node.js](https://nodejs.org/en)
* [Golang](https://go.dev/dl/) - [Node.js](https://nodejs.org/en)
* VSCode или Goland - [Golang](https://go.dev/dl/)
* [UPX](https://github.com/upx/upx/releases/latest) - для сжатия. - VSCode или Goland
**Необходимо зазеркалировать с Github и добавить в PATH!!!** - [UPX](https://github.com/upx/upx/releases/latest) - для сжатия.
* [Git](https://git-scm.com/) **Необходимо зазеркалировать с Github и добавить в PATH!!!**
* Wails3: - [Git](https://git-scm.com/)
Установка: - Wails3:
`go install -v github.com/wailsapp/wails/v3/cmd/wails3@latest` Установка:
**Необходимо зазеркалировать с Github и добавить в PATH!!!** `go install -v github.com/wailsapp/wails/v3/cmd/wails3@latest`
* MinGw-64: https://jmeubank.github.io/tdm-gcc/ **Необходимо зазеркалировать с Github и добавить в PATH!!!**
**Необходимо зазеркалировать с Github!!!** - MinGw-64: https://jmeubank.github.io/tdm-gcc/
**Необходимо зазеркалировать с Github!!!**
## Разработка ## Разработка
### Hot Reload ### Hot Reload
Для запуска приложения в режиме разработчика используйте эту команду в директории проекта: Для запуска приложения в режиме разработчика используйте эту команду в директории проекта:
``` ```
wails3 dev wails3 dev
``` ```
DevServer также можно открыть по адресу http://localhost:34115. DevServer также можно открыть по адресу http://localhost:34115.
Этот инструмент предоставляет возможность вызывать Go код прямо из инструментов разработчика. Этот инструмент предоставляет возможность вызывать Go код прямо из инструментов разработчика.
### Генерация TS биндингов ### Генерация TS биндингов
Для обновления API для TypeScript используйте команду: Для обновления API для TypeScript используйте команду:
``` ```
wails3 generate bindings -ts wails3 generate bindings -ts
``` ```
@@ -43,33 +51,45 @@ wails3 generate bindings -ts
## Сборка ## Сборка
Для финальной сборки запустите эту команду в директории проекта: Для финальной сборки запустите эту команду в директории проекта:
``` ```
go env -w CGO_ENABLED=1 go env -w CGO_ENABLED=1
wails3 build -clean -upx -v 2 -webview2 embed wails3 build -clean -upx -v 2 -webview2 embed
``` ```
**Перед релизом не забыть**: **Перед релизом не забыть**:
* поместить все нужные asset'ы в папку assets
* изменить версию схемы БД (пока не нужно) - поместить все нужные asset'ы в папку assets
* приложить сопроводительную записку. - изменить версию схемы БД (пока не нужно)
- приложить сопроводительную записку.
## Работа без GitHub ## Работа без GitHub
Настройте прокси для скачивания зависимостей через прокси: Настройте прокси для скачивания зависимостей через прокси:
``` ```
go env -w GOPROXY="https://proxy.golang.org,direct" go env -w GOPROXY="https://proxy.golang.org,direct"
``` ```
## CRUD generator ## CRUD generator
Установите crudgen: Установите crudgen:
``` ```
go install git.gogacoder.ru/NTO/crudgen/cmd/crudgen@latest go install git.gogacoder.ru/NTO/crudgen/cmd/crudgen@latest
``` ```
Сгенерируйте DAL: Сгенерируйте DAL:
``` ```
cd dal cd dal
go run gen.go go run gen.go
``` ```
Запустите crudgen: Запустите crudgen:
``` ```
crudgen -p internal crudgen -p internal
``` ```
Не забудьте добавить новые модели в `Entities`, а сервисы в `Services`.
Не забудьте добавить новые модели в `Entities`, а сервисы в `Services`.

View File

@@ -0,0 +1,25 @@
package mirror
type Field struct {
Name string `json:"name"`
DisplayName string `json:"display_name"`
Hidden bool `json:"hidden"`
/*
possible values are `string`, `number`, `bool`, `timestamp`, `related`
`?` postfix means nullable type
`[]` postfix means array type; use only with `related`
*/
Type string `json:"type_name"`
RelatedModel *string `json:"related_model"`
RelatedModelKey *string `json:"related_model_key"`
RelationType *string `json:"relation_type"`
}
type Model struct {
Name string
Fields []Field
}
type Schema struct {
models []Model
}