// // Copyright (C) 2024 veypi // 2025-03-04 16:08:06 // Distributed under terms of the MIT license. // package providers import ( "github.com/veypi/vbase/cfg" "github.com/veypi/vbase/models" "github.com/veypi/vigo" ) // ListResponse 列表响应 type ListResponse struct { Items []models.OAuthProvider `json:"items"` Total int64 `json:"total"` } // list 获取 OAuth 提供商列表 func list(x *vigo.X) (*ListResponse, error) { var providers []models.OAuthProvider var total int64 db := cfg.DB() // 获取总数 if err := db.Model(&models.OAuthProvider{}).Count(&total).Error; err != nil { return nil, vigo.ErrInternalServer.WithError(err) } // 获取列表 if err := db.Order("sort_order, id").Find(&providers).Error; err != nil { return nil, vigo.ErrInternalServer.WithError(err) } // 敏感字段置空 for i := range providers { providers[i].ClientSecret = "" } return &ListResponse{ Items: providers, Total: total, }, nil }