https://github.com/gotomicro/egoctl
Go graphics are generated as code tools
https://github.com/gotomicro/egoctl
ego egoctl golang lowcode
Last synced: 5 months ago
JSON representation
Go graphics are generated as code tools
- Host: GitHub
- URL: https://github.com/gotomicro/egoctl
- Owner: gotomicro
- Created: 2021-01-09T14:32:16.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-09-02T03:53:21.000Z (over 3 years ago)
- Last Synced: 2025-04-06T20:36:23.183Z (10 months ago)
- Topics: ego, egoctl, golang, lowcode
- Language: Go
- Homepage:
- Size: 3.49 MB
- Stars: 43
- Watchers: 2
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# egoctl
## 1 Requirements
- Go version >= 1.18
## 2 Installation
```
bash <(curl -L https://raw.githubusercontent.com/gotomicro/egoctl/main/getlatest.sh)
```
通过以上脚本,可以下载protoc工具全家桶,以及ego的protoc插件和egoctl
* /usr/local/bin/protoc
* /usr/local/bin/protoc-gen-go
* /usr/local/bin/protoc-gen-go-grpc
* /usr/local/bin/protoc-gen-openapiv2
* /usr/local/bin/protoc-gen-go-errors
* /usr/local/bin/protoc-gen-go-http
* /usr/local/bin/egoctl
## 3 快速生成代码
* 启动web: egoctl web start
* 访问http://127.0.0.1:9999
* 如下所示

* 我们第一次进入页面,先配置生成代码的模板,你也可以自己自定义自己的模板

* 然后在进入项目页面,创建项目

* 编写DSL

* 创建项目的go mod
```bash
mkdir /Users/askuy/tmp/egotest1
cd /Users/askuy/tmp/egotest1 && go mod init egotest1
```
* 点击生成代码
* 运行你的代码
```bash
cd /Users/askuy/tmp/egotest1
go mod tidy
vim config/local.toml 更改db配置
export EGO_DEBUG=true && go run main.go
```
## 3 模板
因为前端会使用关键字`{{`, `}}`,而`pongo2`的模板也会使用该关键字,所以`egoctl`将`pongo2/v6`版本`fork`到项目里,
将模板关键字`{{`,`}}`改为`{$`,`$}`
## 5 DSL配置
```
package egoctl
type User struct {
Uid int `gorm:"AUTO_INCREMENT" json:"id" dto:"" ego:"primary_key"` // id
UserName string `gorm:"not null" json:"userName" dto:""` // 昵称
}
```
## 6 模板配置
### 6.1 根据模型设置模板
DSL配置
```
package egoctl
type User struct {
Uid int `gorm:"AUTO_INCREMENT" json:"id" dto:"" ego:"primary_key"` // id
UserName string `gorm:"not null" json:"userName" dto:""` // 昵称
}
```
### 6.2 获取主键
模版配置
```
{$modelSchemas|fieldsGetPrimaryKey|snakeString$}
```
### 6.3 生成结构体
模板配置
```
type {{modelName|upperFirst}} struct {
{% for value in modelSchemas %}
{$ value.FieldName $} {$ value.FieldType $} `gorm:"{$ value|fieldGetTag:"gorm" $}"` {$ value.Comment $}
{% endfor %}
}
```
### 6.4 判断某字段是否存在
模板配置
```
{% if modelSchemas|fieldsExist:Uid %}
{% endif %}
```
### 6.5 判断某个字段中某个tag值是否存在
```
{% if modelSchemas|fieldsTagExist:json,userName %}
{% endif %}
```
## 7 根据单个字段设置模板
DSL配置
```
type User struct {
Uid int `gorm:"AUTO_INCREMENT" json:"id" dto:"" ego:"primary_key"` // id
UserName string `gorm:"not null" json:"userName" dto:""` // 昵称
}
```
### 7.1 获取某个字段的驼峰(常用于JSON,前后端对接)
```
{$ value.FieldName|camelString|lowerFirst $}
UserName 变成 userName
```
### 7.2 获取某个字段的蛇形(常用于数据库)
```
{$ value.FieldName|snakeString|lowerFirst $}
UserName 变成 user_name
```