- Gin + config.yaml + SQLite 后端骨架,JWT 登录 + 管理员初始化
- web/ 原生单页:拖拽多图上传 → Agnes 免费识别 → 结果复制
- HTTP API:/api/v1/vision/analyze 免鉴权 + 令牌桶限流,支持程序直调
- cmd/vision-cli 独立 CLI 工具(复用 service 层,不依赖 Web 服务)
- build.bat / build.sh 构建脚本,移除 mcp-server
- 统一响应格式 {code, message, data},CORS/JWT/限流中间件
Co-Authored-By: Claude <noreply@anthropic.com>
46 lines
986 B
Go
46 lines
986 B
Go
package repository
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
|
|
"vision-tool/internal/model"
|
|
)
|
|
|
|
// UserRepository 数据访问层:用户表 CRUD。
|
|
type UserRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewUserRepository(db *gorm.DB) *UserRepository {
|
|
return &UserRepository{db: db}
|
|
}
|
|
|
|
// Count 返回用户总数(用于判断管理员是否已初始化)。
|
|
func (r *UserRepository) Count() (int64, error) {
|
|
var count int64
|
|
err := r.db.Model(&model.User{}).Count(&count).Error
|
|
return count, err
|
|
}
|
|
|
|
func (r *UserRepository) Create(user *model.User) error {
|
|
return r.db.Create(user).Error
|
|
}
|
|
|
|
func (r *UserRepository) FindByUsername(username string) (*model.User, error) {
|
|
var user model.User
|
|
err := r.db.Where("username = ?", username).First(&user).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (r *UserRepository) FindByID(id uint) (*model.User, error) {
|
|
var user model.User
|
|
err := r.db.First(&user, id).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|