本文整理汇总了Golang中github.com/almighty/almighty-core/errors.NewBadParameterError函数的典型用法代码示例。如果您正苦于以下问题:Golang NewBadParameterError函数的具体用法?Golang NewBadParameterError怎么用?Golang NewBadParameterError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewBadParameterError函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Create
// Create creates a new work item in the repository
// returns BadParameterError, ConversionError or InternalError
func (r *GormWorkItemRepository) Create(ctx context.Context, typeID string, fields map[string]interface{}, creator string) (*app.WorkItem, error) {
wiType, err := r.wir.LoadTypeFromDB(ctx, typeID)
if err != nil {
return nil, errors.NewBadParameterError("type", typeID)
}
wi := WorkItem{
Type: typeID,
Fields: Fields{},
}
fields[SystemCreator] = creator
for fieldName, fieldDef := range wiType.Fields {
if fieldName == SystemCreatedAt {
continue
}
fieldValue := fields[fieldName]
var err error
wi.Fields[fieldName], err = fieldDef.ConvertToModel(fieldName, fieldValue)
if err != nil {
return nil, errors.NewBadParameterError(fieldName, fieldValue)
}
if fieldName == SystemDescription && wi.Fields[fieldName] != nil {
description := rendering.NewMarkupContentFromMap(wi.Fields[fieldName].(map[string]interface{}))
if !rendering.IsMarkupSupported(description.Markup) {
return nil, errors.NewBadParameterError(fieldName, fieldValue)
}
}
}
tx := r.db
if err = tx.Create(&wi).Error; err != nil {
return nil, errors.NewInternalError(err.Error())
}
return convertWorkItemModelToApp(wiType, &wi)
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:35,代码来源:workitem_repository.go
示例2: Refresh
// Refresh obtain a new access token using the refresh token.
func (c *LoginController) Refresh(ctx *app.RefreshLoginContext) error {
refreshToken := ctx.Payload.RefreshToken
if refreshToken == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("refresh_token", nil).Expected("not nil"))
}
client := &http.Client{Timeout: 10 * time.Second}
res, err := client.PostForm(configuration.GetKeycloakEndpointToken(), url.Values{
"client_id": {configuration.GetKeycloakClientID()},
"client_secret": {configuration.GetKeycloakSecret()},
"refresh_token": {*refreshToken},
"grant_type": {"refresh_token"},
})
if err != nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewInternalError("Error when obtaining token "+err.Error()))
}
switch res.StatusCode {
case 200:
// OK
case 401:
return jsonapi.JSONErrorResponse(ctx, errors.NewUnauthorizedError(res.Status+" "+readBody(res.Body)))
case 400:
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError(readBody(res.Body), nil))
default:
return jsonapi.JSONErrorResponse(ctx, errors.NewInternalError(res.Status+" "+readBody(res.Body)))
}
token, err := readToken(res, ctx)
if err != nil {
return err
}
return ctx.OK(&app.AuthToken{Token: token})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:35,代码来源:login.go
示例3: ValidateCorrectSourceAndTargetType
// ValidateCorrectSourceAndTargetType returns an error if the Path of
// the source WIT as defined by the work item link type is not part of
// the actual source's WIT; the same applies for the target.
func (r *GormWorkItemLinkRepository) ValidateCorrectSourceAndTargetType(ctx context.Context, sourceID, targetID uint64, linkTypeID satoriuuid.UUID) error {
linkType, err := r.workItemLinkTypeRepo.LoadTypeFromDBByID(ctx, linkTypeID)
if err != nil {
return errs.WithStack(err)
}
// Fetch the source work item
source, err := r.workItemRepo.LoadFromDB(ctx, strconv.FormatUint(sourceID, 10))
if err != nil {
return errs.WithStack(err)
}
// Fetch the target work item
target, err := r.workItemRepo.LoadFromDB(ctx, strconv.FormatUint(targetID, 10))
if err != nil {
return errs.WithStack(err)
}
// Fetch the concrete work item types of the target and the source.
sourceWorkItemType, err := r.workItemTypeRepo.LoadTypeFromDB(ctx, source.Type)
if err != nil {
return errs.WithStack(err)
}
targetWorkItemType, err := r.workItemTypeRepo.LoadTypeFromDB(ctx, target.Type)
if err != nil {
return errs.WithStack(err)
}
// Check type paths
if !sourceWorkItemType.IsTypeOrSubtypeOf(linkType.SourceTypeName) {
return errors.NewBadParameterError("source work item type", source.Type)
}
if !targetWorkItemType.IsTypeOrSubtypeOf(linkType.TargetTypeName) {
return errors.NewBadParameterError("target work item type", target.Type)
}
return nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:36,代码来源:link_repository.go
示例4: Save
// Save updates the given space in the db. Version must be the same as the one in the stored version
// returns NotFoundError, BadParameterError, VersionConflictError or InternalError
func (r *GormRepository) Save(ctx context.Context, p *Space) (*Space, error) {
pr := Space{}
tx := r.db.Where("id=?", p.ID).First(&pr)
oldVersion := p.Version
p.Version++
if tx.RecordNotFound() {
// treating this as a not found error: the fact that we're using number internal is implementation detail
return nil, errors.NewNotFoundError("space", p.ID.String())
}
if err := tx.Error; err != nil {
return nil, errors.NewInternalError(err.Error())
}
tx = tx.Where("Version = ?", oldVersion).Save(p)
if err := tx.Error; err != nil {
if gormsupport.IsCheckViolation(tx.Error, "spaces_name_check") {
return nil, errors.NewBadParameterError("Name", p.Name).Expected("not empty")
}
if gormsupport.IsUniqueViolation(tx.Error, "spaces_name_idx") {
return nil, errors.NewBadParameterError("Name", p.Name).Expected("unique")
}
return nil, errors.NewInternalError(err.Error())
}
if tx.RowsAffected == 0 {
return nil, errors.NewVersionConflictError("version conflict")
}
log.Info(ctx, map[string]interface{}{
"pkg": "space",
"spaceID": p.ID,
}, "space updated successfully")
return p, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:34,代码来源:space.go
示例5: Create
// Create creates a new work item in the repository
// returns BadParameterError, ConversionError or InternalError
func (r *GormWorkItemTypeRepository) Create(ctx context.Context, extendedTypeName *string, name string, fields map[string]app.FieldDefinition) (*app.WorkItemType, error) {
existing, _ := r.LoadTypeFromDB(ctx, name)
if existing != nil {
log.Error(ctx, map[string]interface{}{"witName": name}, "unable to create new work item type")
return nil, errors.NewBadParameterError("name", name)
}
allFields := map[string]FieldDefinition{}
path := name
if extendedTypeName != nil {
extendedType := WorkItemType{}
db := r.db.First(&extendedType, "name = ?", extendedTypeName)
if db.RecordNotFound() {
return nil, errors.NewBadParameterError("extendedTypeName", *extendedTypeName)
}
if err := db.Error; err != nil {
return nil, errors.NewInternalError(err.Error())
}
// copy fields from extended type
for key, value := range extendedType.Fields {
allFields[key] = value
}
path = extendedType.Path + pathSep + name
}
// now process new fields, checking whether they are ok to add.
for field, definition := range fields {
existing, exists := allFields[field]
ct, err := convertFieldTypeToModels(*definition.Type)
if err != nil {
return nil, errs.WithStack(err)
}
converted := FieldDefinition{
Required: definition.Required,
Type: ct,
}
if exists && !compatibleFields(existing, converted) {
return nil, fmt.Errorf("incompatible change for field %s", field)
}
allFields[field] = converted
}
created := WorkItemType{
Version: 0,
Name: name,
Path: path,
Fields: allFields,
}
if err := r.db.Save(&created).Error; err != nil {
return nil, errors.NewInternalError(err.Error())
}
result := convertTypeFromModels(&created)
return &result, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:57,代码来源:workitemtype_repository.go
示例6: TestNewBadParameterError
func TestNewBadParameterError(t *testing.T) {
t.Parallel()
resource.Require(t, resource.UnitTest)
param := "assigness"
value := 10
expectedValue := 11
err := errors.NewBadParameterError(param, value)
assert.Equal(t, fmt.Sprintf("Bad value for parameter '%s': '%v'", param, value), err.Error())
err = errors.NewBadParameterError(param, value).Expected(expectedValue)
assert.Equal(t, fmt.Sprintf("Bad value for parameter '%s': '%v' (expected: '%v')", param, value, expectedValue), err.Error())
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:11,代码来源:errors_blackbox_test.go
示例7: validateCreateSpace
func validateCreateSpace(ctx *app.CreateSpaceContext) error {
if ctx.Payload.Data == nil {
return errors.NewBadParameterError("data", nil).Expected("not nil")
}
if ctx.Payload.Data.Attributes == nil {
return errors.NewBadParameterError("data.attributes", nil).Expected("not nil")
}
if ctx.Payload.Data.Attributes.Name == nil {
return errors.NewBadParameterError("data.attributes.name", nil).Expected("not nil")
}
return nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:12,代码来源:space.go
示例8: Update
// Update does PATCH workitem
func (c *WorkitemController) Update(ctx *app.UpdateWorkitemContext) error {
return application.Transactional(c.db, func(appl application.Application) error {
if ctx.Payload == nil || ctx.Payload.Data == nil || ctx.Payload.Data.ID == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("missing data.ID element in request", nil))
}
wi, err := appl.WorkItems().Load(ctx, *ctx.Payload.Data.ID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, fmt.Sprintf("Failed to load work item with id %v", *ctx.Payload.Data.ID)))
}
// Type changes of WI are not allowed which is why we overwrite it the
// type with the old one after the WI has been converted.
oldType := wi.Type
err = ConvertJSONAPIToWorkItem(appl, *ctx.Payload.Data, wi)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, err)
}
wi.Type = oldType
wi, err = appl.WorkItems().Save(ctx, *wi)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, "Error updating work item"))
}
wi2 := ConvertWorkItem(ctx.RequestData, wi)
resp := &app.WorkItem2Single{
Data: wi2,
Links: &app.WorkItemLinks{
Self: buildAbsoluteURL(ctx.RequestData),
},
}
return ctx.OK(resp)
})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:32,代码来源:workitem.go
示例9: Create
// Create creates a new work item link type in the repository.
// Returns BadParameterError, ConversionError or InternalError
func (r *GormWorkItemLinkTypeRepository) Create(ctx context.Context, name string, description *string, sourceTypeName, targetTypeName, forwardName, reverseName, topology string, linkCategoryID satoriuuid.UUID) (*app.WorkItemLinkTypeSingle, error) {
linkType := &WorkItemLinkType{
Name: name,
Description: description,
SourceTypeName: sourceTypeName,
TargetTypeName: targetTypeName,
ForwardName: forwardName,
ReverseName: reverseName,
Topology: topology,
LinkCategoryID: linkCategoryID,
}
if err := linkType.CheckValidForCreation(); err != nil {
return nil, errs.WithStack(err)
}
// Check link category exists
linkCategory := WorkItemLinkCategory{}
db := r.db.Where("id=?", linkType.LinkCategoryID).Find(&linkCategory)
if db.RecordNotFound() {
return nil, errors.NewBadParameterError("work item link category", linkType.LinkCategoryID)
}
if db.Error != nil {
return nil, errors.NewInternalError(fmt.Sprintf("Failed to find work item link category: %s", db.Error.Error()))
}
db = r.db.Create(linkType)
if db.Error != nil {
return nil, errors.NewInternalError(db.Error.Error())
}
// Convert the created link type entry into a JSONAPI response
result := ConvertLinkTypeFromModel(*linkType)
return &result, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:34,代码来源:type_repository.go
示例10: Create
// Create runs the create action.
func (c *SpaceIterationsController) Create(ctx *app.CreateSpaceIterationsContext) error {
_, err := login.ContextIdentity(ctx)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrUnauthorized(err.Error()))
}
spaceID, err := uuid.FromString(ctx.ID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
// Validate Request
if ctx.Payload.Data == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("data", nil).Expected("not nil"))
}
reqIter := ctx.Payload.Data
if reqIter.Attributes.Name == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("data.attributes.name", nil).Expected("not nil"))
}
return application.Transactional(c.db, func(appl application.Application) error {
_, err = appl.Spaces().Load(ctx, spaceID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
newItr := iteration.Iteration{
SpaceID: spaceID,
Name: *reqIter.Attributes.Name,
StartAt: reqIter.Attributes.StartAt,
EndAt: reqIter.Attributes.EndAt,
}
if reqIter.Attributes.Description != nil {
newItr.Description = reqIter.Attributes.Description
}
err = appl.Iterations().Create(ctx, &newItr)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, err)
}
res := &app.IterationSingle{
Data: ConvertIteration(ctx.RequestData, &newItr),
}
ctx.ResponseData.Header().Set("Location", rest.AbsoluteURL(ctx.RequestData, app.IterationHref(res.Data.ID)))
return ctx.Created(res)
})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:47,代码来源:space-iterations.go
示例11: getVersion
func getVersion(version interface{}) (int, error) {
if version != nil {
v, err := strconv.Atoi(fmt.Sprintf("%v", version))
if err != nil {
return -1, errors.NewBadParameterError("data.attributes.version", version)
}
return v, nil
}
return -1, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:10,代码来源:workitem.go
示例12: Create
// Create runs the create action.
func (c *SpaceAreasController) Create(ctx *app.CreateSpaceAreasContext) error {
_, err := login.ContextIdentity(ctx)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrUnauthorized(err.Error()))
}
spaceID, err := uuid.FromString(ctx.ID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
// Validate Request
if ctx.Payload.Data == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("data", nil).Expected("not nil"))
}
reqIter := ctx.Payload.Data
if reqIter.Attributes.Name == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("data.attributes.name", nil).Expected("not nil"))
}
return application.Transactional(c.db, func(appl application.Application) error {
_, err = appl.Spaces().Load(ctx, spaceID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
newArea := area.Area{
SpaceID: spaceID,
Name: *reqIter.Attributes.Name,
}
err = appl.Areas().Create(ctx, &newArea)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, err)
}
res := &app.AreaSingle{
Data: ConvertArea(appl, ctx.RequestData, &newArea, addResolvedPath),
}
ctx.ResponseData.Header().Set("Location", rest.AbsoluteURL(ctx.RequestData, app.AreaHref(res.Data.ID)))
return ctx.Created(res)
})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:44,代码来源:space-areas.go
示例13: Create
// Create creates a new Space in the db
// returns BadParameterError or InternalError
func (r *GormRepository) Create(ctx context.Context, space *Space) (*Space, error) {
space.ID = satoriuuid.NewV4()
tx := r.db.Create(space)
if err := tx.Error; err != nil {
if gormsupport.IsCheckViolation(tx.Error, "spaces_name_check") {
return nil, errors.NewBadParameterError("Name", space.Name).Expected("not empty")
}
if gormsupport.IsUniqueViolation(tx.Error, "spaces_name_idx") {
return nil, errors.NewBadParameterError("Name", space.Name).Expected("unique")
}
return nil, errors.NewInternalError(err.Error())
}
log.Info(ctx, map[string]interface{}{
"pkg": "space",
"spaceID": space.ID,
}, "Space created successfully")
return space, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:22,代码来源:space.go
示例14: CanStartIteration
// CanStartIteration checks the rule - Only one iteration from a space can have state=start at a time.
// More rules can be added as needed in this function
func (m *GormIterationRepository) CanStartIteration(ctx context.Context, i *Iteration) (bool, error) {
var count int64
m.db.Model(&Iteration{}).Where("space_id=? and state=?", i.SpaceID, IterationStateStart).Count(&count)
if count != 0 {
log.Error(ctx, map[string]interface{}{
"iterationID": i.ID,
"spaceID": i.SpaceID,
}, "one iteration from given space is already running!")
return false, errors.NewBadParameterError("state", "One iteration from given space is already running")
}
return true, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:14,代码来源:iteration.go
示例15: Render
// Render runs the render action.
func (c *RenderController) Render(ctx *app.RenderRenderContext) error {
content := ctx.Payload.Data.Attributes.Content
markup := ctx.Payload.Data.Attributes.Markup
if !rendering.IsMarkupSupported(markup) {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("Unsupported markup type", markup))
}
htmlResult := rendering.RenderMarkupToHTML(content, markup)
res := &app.MarkupRenderingSingle{Data: &app.MarkupRenderingData{
ID: uuid.NewV4().String(),
Type: RenderingType,
Attributes: &app.MarkupRenderingDataAttributes{
RenderedContent: htmlResult,
}}}
return ctx.OK(res)
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:16,代码来源:render.go
示例16: Create
// Create creates a new work item link category in the repository.
// Returns BadParameterError, ConversionError or InternalError
func (r *GormWorkItemLinkCategoryRepository) Create(ctx context.Context, name *string, description *string) (*app.WorkItemLinkCategorySingle, error) {
if name == nil || *name == "" {
return nil, errors.NewBadParameterError("name", name)
}
created := WorkItemLinkCategory{
// Omit "lifecycle" and "ID" fields as they will be filled by the DB
Name: *name,
Description: description,
}
db := r.db.Create(&created)
if db.Error != nil {
return nil, errors.NewInternalError(db.Error.Error())
}
// Convert the created link category entry into a JSONAPI response
result := ConvertLinkCategoryFromModel(created)
return &result, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:19,代码来源:category_repository.go
示例17: Save
// Save updates the given work item link in storage. Version must be the same as the one int the stored version.
// returns NotFoundError, VersionConflictError, ConversionError or InternalError
func (r *GormWorkItemLinkRepository) Save(ctx context.Context, lt app.WorkItemLinkSingle) (*app.WorkItemLinkSingle, error) {
res := WorkItemLink{}
if lt.Data.ID == nil {
return nil, errors.NewBadParameterError("work item link", nil)
}
db := r.db.Model(&res).Where("id=?", *lt.Data.ID).First(&res)
if db.RecordNotFound() {
log.Error(ctx, map[string]interface{}{
"wilID": *lt.Data.ID,
}, "work item link not found")
return nil, errors.NewNotFoundError("work item link", *lt.Data.ID)
}
if db.Error != nil {
log.Error(ctx, map[string]interface{}{
"wilID": *lt.Data.ID,
"err": db.Error,
}, "unable to find work item link")
return nil, errors.NewInternalError(db.Error.Error())
}
if lt.Data.Attributes.Version == nil || res.Version != *lt.Data.Attributes.Version {
return nil, errors.NewVersionConflictError("version conflict")
}
if err := ConvertLinkToModel(lt, &res); err != nil {
return nil, errs.WithStack(err)
}
res.Version = res.Version + 1
if err := r.ValidateCorrectSourceAndTargetType(ctx, res.SourceID, res.TargetID, res.LinkTypeID); err != nil {
return nil, errs.WithStack(err)
}
db = r.db.Save(&res)
if db.Error != nil {
log.Error(ctx, map[string]interface{}{
"wilID": res.ID,
"err": db.Error,
}, "unable to save work item link")
return nil, errors.NewInternalError(db.Error.Error())
}
log.Info(ctx, map[string]interface{}{
"pkg": "link",
"wilID": res.ID,
}, "Work item link updated")
result := ConvertLinkFromModel(res)
return &result, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:47,代码来源:link_repository.go
示例18: CreateChild
// CreateChild runs the create-child action.
func (c *AreaController) CreateChild(ctx *app.CreateChildAreaContext) error {
_, err := login.ContextIdentity(ctx)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrUnauthorized(err.Error()))
}
parentID, err := uuid.FromString(ctx.ID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
return application.Transactional(c.db, func(appl application.Application) error {
parent, err := appl.Areas().Load(ctx, parentID)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error()))
}
reqArea := ctx.Payload.Data
if reqArea.Attributes.Name == nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("data.attributes.name", nil).Expected("not nil"))
}
childPath := area.ConvertToLtreeFormat(parentID.String())
if parent.Path != "" {
childPath = parent.Path + pathSepInDatabase + childPath
}
newArea := area.Area{
SpaceID: parent.SpaceID,
Path: childPath,
Name: *reqArea.Attributes.Name,
}
err = appl.Areas().Create(ctx, &newArea)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, err)
}
res := &app.AreaSingle{
Data: ConvertArea(appl, ctx.RequestData, &newArea, addResolvedPath),
}
ctx.ResponseData.Header().Set("Location", rest.AbsoluteURL(ctx.RequestData, app.AreaHref(res.Data.ID)))
return ctx.Created(res)
})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:45,代码来源:area.go
示例19: List
// List runs the list action.
// Prev and Next links will be present only when there actually IS a next or previous page.
// Last will always be present. Total Item count needs to be computed from the "Last" link.
func (c *WorkitemController) List(ctx *app.ListWorkitemContext) error {
var additionalQuery []string
exp, err := query.Parse(ctx.Filter)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("could not parse filter", err))
}
if ctx.FilterAssignee != nil {
assignee := ctx.FilterAssignee
exp = criteria.And(exp, criteria.Equals(criteria.Field("system.assignees"), criteria.Literal([]string{*assignee})))
additionalQuery = append(additionalQuery, "filter[assignee]="+*assignee)
}
if ctx.FilterIteration != nil {
iteration := ctx.FilterIteration
exp = criteria.And(exp, criteria.Equals(criteria.Field(workitem.SystemIteration), criteria.Literal(string(*iteration))))
additionalQuery = append(additionalQuery, "filter[iteration]="+*iteration)
}
if ctx.FilterWorkitemtype != nil {
wit := ctx.FilterWorkitemtype
exp = criteria.And(exp, criteria.Equals(criteria.Field("Type"), criteria.Literal([]string{*wit})))
additionalQuery = append(additionalQuery, "filter[workitemtype]="+*wit)
}
if ctx.FilterArea != nil {
area := ctx.FilterArea
exp = criteria.And(exp, criteria.Equals(criteria.Field(workitem.SystemArea), criteria.Literal(string(*area))))
additionalQuery = append(additionalQuery, "filter[area]="+*area)
}
offset, limit := computePagingLimts(ctx.PageOffset, ctx.PageLimit)
return application.Transactional(c.db, func(tx application.Application) error {
result, tc, err := tx.WorkItems().List(ctx.Context, exp, &offset, &limit)
count := int(tc)
if err != nil {
return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, "Error listing work items"))
}
response := app.WorkItem2List{
Links: &app.PagingLinks{},
Meta: &app.WorkItemListResponseMeta{TotalCount: count},
Data: ConvertWorkItems(ctx.RequestData, result),
}
setPagingLinks(response.Links, buildAbsoluteURL(ctx.RequestData), len(result), offset, limit, count, additionalQuery...)
return ctx.OK(&response)
})
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:45,代码来源:workitem.go
示例20: parseSearchString
// parseSearchString accepts a raw string and generates a searchKeyword object
func parseSearchString(rawSearchString string) (searchKeyword, error) {
// TODO remove special characters and exclaimations if any
rawSearchString = strings.Trim(rawSearchString, "/") // get rid of trailing slashes
rawSearchString = strings.Trim(rawSearchString, "\"")
parts := strings.Fields(rawSearchString)
var res searchKeyword
for _, part := range parts {
// QueryUnescape is required in case of encoded url strings.
// And does not harm regular search strings
// but this processing is required because at this moment, we do not know if
// search input is a regular string or a URL
part, err := url.QueryUnescape(part)
if err != nil {
log.Warn(nil, map[string]interface{}{
"pkg": "search",
"part": part,
}, "unable to escape url!")
}
// IF part is for search with id:1234
// TODO: need to find out the way to use ID fields.
if strings.HasPrefix(part, "id:") {
res.id = append(res.id, strings.TrimPrefix(part, "id:")+":*A")
} else if strings.HasPrefix(part, "type:") {
typeName := strings.TrimPrefix(part, "type:")
if len(typeName) == 0 {
return res, errors.NewBadParameterError("Type name must not be empty", part)
}
res.workItemTypes = append(res.workItemTypes, typeName)
} else if govalidator.IsURL(part) {
part := strings.ToLower(part)
part = trimProtocolFromURLString(part)
searchQueryFromURL := getSearchQueryFromURLString(part)
res.words = append(res.words, searchQueryFromURL)
} else {
part := strings.ToLower(part)
part = sanitizeURL(part)
res.words = append(res.words, part+":*")
}
}
return res, nil
}
开发者ID:Ritsyy,项目名称:almighty-core,代码行数:43,代码来源:search_repository.go
注:本文中的github.com/almighty/almighty-core/errors.NewBadParameterError函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论