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.StatusUser). SetService(exception.ServiceUser). SetEndpoint(exception.EndpointUserServiceList). SetType(exception.TypeCommon). 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.StatusUser). SetService(exception.ServiceUser). SetEndpoint(exception.EndpointUserServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonErrorInvalidInput). SetError(err). Build() utils.HttpResponse(c, 400, errorCode) return } offsetNum, err := strconv.ParseInt(offset, 10, 64) if err != nil { errorCode := new(exception.Builder). SetStatus(exception.StatusUser). SetService(exception.ServiceUser). SetEndpoint(exception.EndpointUserServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonErrorInvalidInput). SetError(err). Build() utils.HttpResponse(c, 400, errorCode) return } // Get user list from search engine list, err := new(data.User).FastListUsers(c, limitNum, offsetNum) if err != nil { errorCode := new(exception.Builder). SetStatus(exception.StatusServer). SetService(exception.ServiceUser). SetEndpoint(exception.EndpointUserServiceList). SetType(exception.TypeSpecific). SetOriginal(exception.UserListMeilisearchFailed). SetError(err). Build() utils.HttpResponse(c, 500, errorCode) } userListResp := struct { List *[]data.UserSearchDoc `json:"list"` }{list} errorCode := new(exception.Builder). SetStatus(exception.StatusServer). SetService(exception.ServiceUser). SetEndpoint(exception.EndpointUserServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonSuccess). Build() utils.HttpResponse(c, 200, errorCode, userListResp) }