工程初始化

创建项目

# 执行new命令
meta-egg new

# 之后根据提示设置基础信息,如下:
Please input project EN name: # 输入工程的英文名(多个单词推荐以中横线连接)
Please input project description: # 输入工程的描述,会出现在README中
Please input go module name: # 相当于于go mod init "xxx"
Please input go version [1.19]: # 输入go的版本,直接回车则默认1.19
Please select server type [GRPC/HTTP/ALL default:ALL]: # 选择服务类型
Do you need database? [y/n default:y]: # 选择工程是否用到数据库
Please select database type [MySQL/PostgreSQL default:MySQL]: # 选择数据库类型
Do you need table demo? [y/n default:y]: # 是否生成demo数据库表供参考

# 执行成功后会提示
Project generated successfully

环境准备

  • 当前环境有版本匹配的 go,确保开启GO111MODULE

    go env -w GO111MODULE=on
  • 安装protoc,比如对于x86_64的linux环境:

    wget https://github.com/protocolbuffers/protobuf/releases/download/v21.8/protoc-21.8-linux-x86_64.zip
    mkdir -p /usr/local/protoc
    sudo unzip protoc-21.8-linux-x86_64.zip -d /usr/local/protoc
    sudo ln -s /usr/local/protoc/bin/protoc /usr/local/bin/protoc

初始化工程

  1. 安装依赖

  2. 根据proto生成api

  3. 拉取go依赖包

  4. 生成wire和mock代码

  5. 创建本地配置文件

  6. 假设前面选择了需要数据库,并且需要demo数据库表,那么接下来准备数据库服务

    1. 生成数据库schema

    2. 在数据库中使用上一步生成的 schema.sql 创建数据库

    3. 将数据库地址、账号密码及数据库表名,填入 _manifest/env-local.ymlconfigs/conf-local.yml 的相应配置项内

    4. 由于demo数据库表 gener 是元数据库表,我们应该在数据库里手工添加元数据

    5. 再次执行 db 命令,检验数据库结构是否对齐,以及生成元数据初始化sql meta-data.sql

    6. 执行 update 命令,根据前面创建的元数据生成代码,增加对元数据的常量定义

  7. 编译和运行工程

Last updated