Skip to content

read

基础查询

go
var user UserModel
r.db.WithContext(ctx).Model(&UserModel{}).Where("email = ?", email).First(&user).Error

泛型

go
user, err := gorm.G[UserModel](r.db).Where("email = ?", email).First(ctx)

分页

go
func (s *AppRepository) GetAppList(ctx context.Context, page int, size int) ([]AppDTO, int64, error) {
	var apps []model.App
	var total int64

	db := s.db.WithContext(ctx).Model(&model.App{})

	if err := db.Count(&total).Error; err != nil {
		return nil, 0, err
	}

	if err := db.Offset((page - 1) * size).
		Limit(size).
		Find(&apps).Error; err != nil {
		return nil, 0, err
	}

	return ToAppList(apps), total, nil
}

Exists

go
func (r *UserRoleRepo) Exists(ctx context.Context, userID, roleID uint) (bool, error) {
	var cnt int64
	err := r.db.WithContext(ctx).
		Model(&iamdomian.UserRoleModel{}).
		Where("user_id = ? AND role_id = ?", userID, roleID).
		Count(&cnt).Error
	if err != nil {
		return false, err
	}
	return cnt > 0, nil
}