package user import ( "nixcn-cms/data" "nixcn-cms/internal/exception" "nixcn-cms/utils" "strconv" "github.com/gin-gonic/gin" ) func List(c *gin.Context) { // Get limit and offset from query limit, ok := c.GetQuery("limit") if !ok { limit = "0" } offset, ok := c.GetQuery("offset") if !ok { errorCode := new(exception.Builder). SetStatus(exception.ErrorStatusClient). SetService(exception.UserService). SetEndpoint(exception.UserListEndpoint). SetType(exception.ErrorTypeCommon). SetOriginal(exception.CommonErrorInvalidInput). Build() utils.HttpResponse(c, 400, errorCode) return } // Parse string to int64 limitNum, err := strconv.ParseInt(limit, 10, 64) if err != nil { errorCode := new(exception.Builder). SetStatus(exception.ErrorStatusClient). SetService(exception.UserService). SetEndpoint(exception.UserListEndpoint). SetType(exception.ErrorTypeCommon). SetOriginal(exception.CommonErrorInvalidInput). Build() utils.HttpResponse(c, 400, errorCode) return } offsetNum, err := strconv.ParseInt(offset, 10, 64) if err != nil { errorCode := new(exception.Builder). SetStatus(exception.ErrorStatusClient). SetService(exception.UserService). SetEndpoint(exception.UserListEndpoint). SetType(exception.ErrorTypeCommon). SetOriginal(exception.CommonErrorInvalidInput). Build() utils.HttpResponse(c, 400, errorCode) return } // Get user list from search engine list, err := new(data.User).FastListUsers(limitNum, offsetNum) if err != nil { errorCode := new(exception.Builder). SetStatus(exception.ErrorStatusServer). SetService(exception.UserService). SetEndpoint(exception.UserListEndpoint). SetType(exception.ErrorTypeSpecific). SetOriginal(exception.UserListMeilisearchFailed). Build() utils.HttpResponse(c, 500, errorCode) } userListResp := struct { List *[]data.UserSearchDoc `json:"list"` }{list} utils.HttpResponse(c, 200, "", "success", userListResp) }