package repository import ( "gotest/internal/model" "gorm.io/gorm" ) // UserRepository 用户数据访问层 type UserRepository struct { db *gorm.DB } // NewUserRepository 创建用户仓库实例 func NewUserRepository(db *gorm.DB) *UserRepository { return &UserRepository{db: db} } // Create 创建用户 func (r *UserRepository) Create(user *model.User) error { return r.db.Create(user).Error } // FindByUsername 根据用户名查询用户 func (r *UserRepository) FindByUsername(username string) (*model.User, error) { var user model.User if err := r.db.Where("username = ?", username).First(&user).Error; err != nil { return nil, err } return &user, nil } // FindByID 根据 ID 查询用户 func (r *UserRepository) FindByID(id uint) (*model.User, error) { var user model.User if err := r.db.First(&user, id).Error; err != nil { return nil, err } return &user, nil } // Update 更新用户信息 func (r *UserRepository) Update(user *model.User) error { return r.db.Save(user).Error } // Delete 软删除用户 func (r *UserRepository) Delete(id uint) error { return r.db.Delete(&model.User{}, id).Error } // List 分页查询用户列表 func (r *UserRepository) List(page, pageSize int) ([]model.User, int64, error) { var users []model.User var total int64 if err := r.db.Model(&model.User{}).Count(&total).Error; err != nil { return nil, 0, err } offset := (page - 1) * pageSize if err := r.db.Order("id DESC").Offset(offset).Limit(pageSize).Find(&users).Error; err != nil { return nil, 0, err } return users, total, nil } // Count 统计用户总数 func (r *UserRepository) Count() (int64, error) { var count int64 if err := r.db.Model(&model.User{}).Count(&count).Error; err != nil { return 0, err } return count, nil }