Emaction 的 Go 语言版本后端服务,提供 emoji reaction 统计功能。这是原 JavaScript 版本 emaction.backend 的 Go 重构版本,具有更高的性能和更好的类型安全性。
你可以使用 Docker 快速启动:
docker run --name emaction -p 8080:8080 -d docker.cnb.cool/mintimate/code-nest/emaction.backend.go
默认情况使用 SQLite。
如果你希望修改默认配置,可以进行映射:
docker run --name emaction -p 8080:8080 -v ./config:/app/config -d docker.cnb.cool/mintimate/code-nest/emaction.backend.go
克隆项目
git clone https://github.com/your-username/emaction.backend.go.git
cd emaction.backend.go
安装依赖
go mod tidy
配置数据库
修改 config/config.yaml 文件:
# 数据库配置(支持mysql和sqlite)
database:
# 支持mysql或sqlite
type: "sqlite"
# MySQL情况下数据库地址
host: "localhost"
# MySQL情况下数据库端口
port: 3306
# MySQL情况下数据库用户名
username: "root"
# MySQL情况下数据库密码
password: "HelloWorld"
# MySQL情况下数据库名
database: "emaction"
# MySQL情况下数据库编码
charset: "utf8mb4"
# SQLite情况下数据库路径
sqlite_path: "./emaction.db"
[MySQL] 初始化数据库
mysql -u your_username -p < scripts/init.sql
运行服务
go run main.go
服务将在 http://localhost:8080 启动。
获取特定 targetId 的所有 reaction 统计。
接口地址: GET /reactions
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| targetId | String | 是 | 目标 ID |
请求示例:
curl "http://localhost:8080/reactions?targetId=article-123"
响应格式:
{
"code": 0,
"msg": "success",
"data": {
"reactionsGot": [
{
"reaction_name": "thumbs-up",
"count": 42
},
{
"reaction_name": "heart",
"count": 28
}
]
}
}
新增或更新一个 reaction 的计数。
接口地址: PATCH /reaction
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| targetId | String | 是 | 目标 ID |
| reaction_name | String | 是 | reaction 名称 |
| diff | Int | 是 | 数量变动,只接受 1 或 -1 |
请求示例:
curl -X PATCH "http://localhost:8080/reaction?targetId=article-123&reaction_name=thumbs-up&diff=1"
响应格式:
{
"code": 0,
"msg": "success"
}
. ├── main.go # 主程序入口 ├── config/ │ ├── config.go # 配置文件加载器 │ └── config.yaml # 配置文件 ├── internal/ │ ├── controller/ # 控制器层 │ │ └── reaction.go │ ├── database/ # 数据库连接 │ │ └── database.go │ ├── dto/ # 数据传输对象 │ │ └── reaction.go │ ├── model/ # 数据模型 │ │ └── models.go │ ├── service/ # 业务逻辑层 │ │ └── reaction.go │ └── until/ # 工具函数 │ └── response.go ├── scripts/ │ └── init.sql # 数据库初始化脚本 ├── go.mod # Go 模块文件 └── go.sum # Go 依赖校验文件
本项目使用 MIT 许可证。详情请查看 LICENSE 文件。