mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
- Replaced "conditions" parameter with "filter" in various controller methods to unify the filtering approach. - Updated related functions to utilize the new filter parameter, enhancing consistency in query handling. - Improved overall code readability and maintainability by aligning naming conventions and refactoring filter-related logic.
78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/models/models"
|
|
"github.com/crawlab-team/crawlab/core/models/service"
|
|
"github.com/crawlab-team/crawlab/core/mongo"
|
|
"github.com/crawlab-team/crawlab/core/user"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/juju/errors"
|
|
mongo2 "go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type PostTokenParams struct {
|
|
Data models.Token `json:"data" description:"The data to create" validate:"required"`
|
|
}
|
|
|
|
func PostToken(c *gin.Context, params *PostTokenParams) (response *Response[models.Token], err error) {
|
|
t := params.Data
|
|
svc, err := user.GetUserService()
|
|
if err != nil {
|
|
return GetErrorResponse[models.Token](err)
|
|
}
|
|
|
|
u := GetUserFromContext(c)
|
|
t.SetCreated(u.Id)
|
|
t.SetUpdated(u.Id)
|
|
t.Token, err = svc.MakeToken(u)
|
|
if err != nil {
|
|
return GetErrorResponse[models.Token](err)
|
|
}
|
|
|
|
id, err := service.NewModelService[models.Token]().InsertOne(t)
|
|
if err != nil {
|
|
return GetErrorResponse[models.Token](err)
|
|
}
|
|
t.Id = id
|
|
|
|
return GetDataResponse(t)
|
|
}
|
|
|
|
func GetTokenList(c *gin.Context, params *GetListParams) (response *ListResponse[models.Token], err error) {
|
|
// Get current user from context
|
|
u := GetUserFromContext(c)
|
|
|
|
// Get filter query
|
|
query := ConvertToBsonMFromListParams(params)
|
|
|
|
// Add filter for tokens created by the current user
|
|
query["created_by"] = u.Id
|
|
|
|
// Get sort options
|
|
sort, err := GetSortOptionFromString(params.Sort)
|
|
if err != nil {
|
|
return GetErrorListResponse[models.Token](errors.BadRequestf("invalid request parameters: %v", err))
|
|
}
|
|
|
|
// Get tokens with pagination
|
|
tokens, err := service.NewModelService[models.Token]().GetMany(query, &mongo.FindOptions{
|
|
Sort: sort,
|
|
Skip: params.Size * (params.Page - 1),
|
|
Limit: params.Size,
|
|
})
|
|
if err != nil {
|
|
if err == mongo2.ErrNoDocuments {
|
|
return GetListResponse([]models.Token{}, 0)
|
|
}
|
|
return GetErrorListResponse[models.Token](err)
|
|
}
|
|
|
|
// Count total tokens for pagination
|
|
total, err := service.NewModelService[models.Token]().Count(query)
|
|
if err != nil {
|
|
return GetErrorListResponse[models.Token](err)
|
|
}
|
|
|
|
return GetListResponse(tokens, total)
|
|
}
|