// SearchFullText Search returns work items for the given query func (r *GormSearchRepository) SearchFullText(ctx context.Context, rawSearchString string, start *int, limit *int) ([]*app.WorkItem, uint64, error) { // parse // generateSearchQuery // .... parsedSearchDict, err := parseSearchString(rawSearchString) if err != nil { return nil, 0, errs.WithStack(err) } sqlSearchQueryParameter := generateSQLSearchInfo(parsedSearchDict) var rows []workitem.WorkItem rows, count, err := r.search(ctx, sqlSearchQueryParameter, parsedSearchDict.workItemTypes, start, limit) if err != nil { return nil, 0, errs.WithStack(err) } result := make([]*app.WorkItem, len(rows)) for index, value := range rows { var err error // FIXME: Against best practice http://go-database-sql.org/retrieving.html wiType, err := r.wir.LoadTypeFromDB(ctx, value.Type) if err != nil { return nil, 0, errors.NewInternalError(err.Error()) } result[index], err = convertFromModel(*wiType, value) if err != nil { return nil, 0, errors.NewConversionError(err.Error()) } } return result, count, nil }
func TestNewConversionError(t *testing.T) { t.Parallel() resource.Require(t, resource.UnitTest) err := errors.NewConversionError("Couldn't convert workitem") // not sure what assertion to do here. t.Log(err) }
func convertWorkItemModelToApp(wiType *WorkItemType, wi *WorkItem) (*app.WorkItem, error) { result, err := wiType.ConvertFromModel(*wi) if err != nil { return nil, errors.NewConversionError(err.Error()) } if _, ok := wiType.Fields[SystemCreatedAt]; ok { result.Fields[SystemCreatedAt] = wi.CreatedAt } return result, nil }