logo
1
0
Login

Emaction Backend (Go 版本)

Go Version Gin Framework License

Emaction 的 Go 语言版本后端服务,提供 emoji reaction 统计功能。这是原 JavaScript 版本 emaction.backend 的 Go 重构版本,具有更高的性能和更好的类型安全性。

📋 功能特性

  • Emoji Reaction 统计 - 记录和统计各种 emoji reaction 的点击次数
  • 🔥 高性能 - 基于 Go 和 Gin 框架,提供优秀的并发性能
  • 🗄️ MySQL/Sqlite 数据库 - 使用 GORM 进行数据持久化
  • 🌐 CORS 支持 - 内置跨域资源共享配置
  • 📊 RESTful API - 简洁易用的 API 接口设计
  • 快速部署 - 支持一键 Docker 部署

🚀 快速开始

你可以使用 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

🔨 源码定制

前置要求

  • Go 1.21 或更高版本
  • MySQL 5.7+ 或 MariaDB 10.3+

安装步骤

  1. 克隆项目

    git clone https://github.com/your-username/emaction.backend.go.git cd emaction.backend.go
  2. 安装依赖

    go mod tidy
  3. 配置数据库

    修改 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"
  4. [MySQL] 初始化数据库

    mysql -u your_username -p < scripts/init.sql
  5. 运行服务

    go run main.go

服务将在 http://localhost:8080 启动。

📚 API 文档

1. 获取 Reactions

获取特定 targetId 的所有 reaction 统计。

接口地址: GET /reactions

请求参数:

参数名类型必填描述
targetIdString目标 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 } ] } }

2. 更新 Reaction

新增或更新一个 reaction 的计数。

接口地址: PATCH /reaction

请求参数:

参数名类型必填描述
targetIdString目标 ID
reaction_nameStringreaction 名称
diffInt数量变动,只接受 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 依赖校验文件

🛠️ 技术栈

  • 语言: Go 1.21+
  • Web 框架: Gin
  • ORM: GORM
  • 数据库: MySQL / MariaDB
  • 配置: YAML

📄 许可证

本项目使用 MIT 许可证。详情请查看 LICENSE 文件。

🙏 致谢

About

Emaction backend Go.🚀

emojiemactionGo
580.00 KiB
1 forks0 stars1 branches0 TagREADMEMIT license
Language
Go57.2%
Markdown23.4%
Dockerfile9.1%
Shell5.2%
Others5.1%