Categorygithub.com/codfrm/cago
modulepackage
0.0.0-20240919033358-cce434e5d354
Repository: https://github.com/codfrm/cago.git
Documentation: pkg.go.dev

# README

Cago

godoc Go Report Card License

Cago 一个快速开发的集成式框架.使用模块化的开发模式,每一个组件都可以单独的调用.

Cago 只对社区工具进行集成,大大减少迁移难度和学习成本,我们不生产代码,我们只是方案的搬运工.

使用 go 的struct来声明 API 和 swagger 文档,可以通过脚手架来帮助你生成相关内容.

快速开始

你可以通过简单示例来快速的了解 Cago 的使用。你也可以复制这个示例来创建你的项目。

简单示例

脚手架

你可以安装脚手架来帮助你生成代码。

脚手架文档

CI/CD

部署资源

cago 提供了gitlab-cigolanglint-ciKubernetes helm的 CI/CD 配置文件,可以快速帮你实现 CI/CD.

当本地调试时也可以使用docker-compose.yaml启动调试环境.

可以使用etcd作为配置中心,也支持文件作为配置启动。

组件

大多数组件都是基于社区工具进行封装,方便使用。

目录结构

Cago使用三层架构,并混合了DDD的思想,推荐使用下面的目录结构。你也可以根据自己的需求来调整目录结构。

  • cmd/app/main.go 项目的入口
  • configs
    • config.yaml 配置文件
    • ... 其他配置文件,也可以写配置读取方法,其它包调用:configs.GetConfig().XXX
  • docs 文档目录,包括 swagger api 文档、设计文档等
  • deploy 部署资源文件
  • internal 内部包
    • api API 请求结构体
      • example/example.go api请求与返回结构
      • router.go 路由定义
    • controller 控制器目录,API请求会调用控制器,做一些数据处理校验逻辑
    • model 数据模型
      • entity 数据库实体模型,推荐使用充血模型
      • xxx.go 一些数据模型的定义
    • pkg 项目内通用的模块
      • code 错误码定义
      • utils 工具包
    • repository 数据库操作
    • service 服务接口
    • task 任务模块
      • crontab 定时任务
      • queue 消息队列
        • handler 消息队列处理器
        • message 消息定义
        • xxx.go 消息队列定义
      • task.go 任务定义
  • migrations 数据库迁移文件
  • pkg 公共的模块,可以被其它项目引用
  • .golangci.yml golangci-lint 配置文件
  • Makefile 项目的 Makefile 文件

参考项目

  • GoFrame
  • GoMicro

Who use Cago?

License

MIT

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Functions

New create a new cago instance ctx 可以管理整个应用的生命周期,当ctx.Done()时,会传递到每一个组件,安全退出 cfg 配置文件,每一个组件都可以使用,通过 configs.NewConfig 去构建 应用启动时,会调用每一个组件的 Component.Start 方法,启动组件 应用停止时,会调用每一个组件的 Component.CloseHandle 方法,关闭组件 推荐链式调用的方式去使用 cago.New(ctx, cfg).Registry(component.Core()).RegistryCancel(mux.HTTP(api.Router)).Start().
Version return the version of cago.

# Structs

No description provided by the author

# Interfaces

Component 组件接口.
ComponentCancel 带cancel方法的组件 可以停止整个应用.

# Type aliases

No description provided by the author
FuncComponent 函数式组件 适用于简单的组件 当你的组件不需要释放资源时,你可以只写一个函数,然后通过 FuncComponent 转换成组件 例如: cago.FuncComponent(func(ctx context.Context, cfg *configs.Config) error { return nil }).
FuncComponentCancel 函数式带cancel方法的组件 适用于简单的组件,与 FuncComponent 的区别是多了一个cancel方法.