本文整理汇总了Golang中github.com/almighty/almighty-core/errors.NewInternalError函数的典型用法代码示例。如果您正苦于以下问题:Golang NewInternalError函数的具体用法?Golang NewInternalError怎么用?Golang NewInternalError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewInternalError函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: 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
}
示例2: 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
}
示例3: 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})
}
示例4: Save
// Save updates the given iteration in the db. Version must be the same as the one in the stored version
// returns NotFoundError, VersionConflictError or InternalError
func (m *GormIterationRepository) Save(ctx context.Context, i Iteration) (*Iteration, error) {
itr := Iteration{}
tx := m.db.Where("id=?", i.ID).First(&itr)
if tx.RecordNotFound() {
log.Error(ctx, map[string]interface{}{
"iterationID": i.ID,
}, "iteration cannot be found")
// treating this as a not found error: the fact that we're using number internal is implementation detail
return nil, errors.NewNotFoundError("iteration", i.ID.String())
}
if err := tx.Error; err != nil {
log.Error(ctx, map[string]interface{}{
"iterationID": i.ID,
"err": err,
}, "unknown error happened when searching the iteration")
return nil, errors.NewInternalError(err.Error())
}
tx = tx.Save(&i)
if err := tx.Error; err != nil {
log.Error(ctx, map[string]interface{}{
"iterationID": i.ID,
"err": err,
}, "unable to save the iterations")
return nil, errors.NewInternalError(err.Error())
}
return &i, nil
}
示例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
}
示例6: Delete
// Delete deletes the space with the given id
// returns NotFoundError or InternalError
func (r *GormRepository) Delete(ctx context.Context, ID satoriuuid.UUID) error {
if ID == satoriuuid.Nil {
log.Error(ctx, map[string]interface{}{
"spaceID": ID.String(),
}, "unable to find the space by ID")
return errors.NewNotFoundError("space", ID.String())
}
space := Space{ID: ID}
tx := r.db.Delete(space)
if err := tx.Error; err != nil {
log.Error(ctx, map[string]interface{}{
"spaceID": ID.String(),
}, "unable to delete the space")
return errors.NewInternalError(err.Error())
}
if tx.RowsAffected == 0 {
log.Error(ctx, map[string]interface{}{
"spaceID": ID.String(),
}, "none row was affected by the deletion operation")
return errors.NewNotFoundError("space", ID.String())
}
return nil
}
示例7: SearchFullText
// 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
}
示例8: Delete
// Delete implements application.WorkItemRepository
func (r *UndoableWorkItemRepository) Delete(ctx context.Context, ID string) error {
id, err := strconv.ParseUint(ID, 10, 64)
if err != nil {
// treating this as a not found error: the fact that we're using number internal is implementation detail
return errors.NewNotFoundError("work item", ID)
}
log.Info(ctx, map[string]interface{}{
"pkg": "workitem",
"id": id,
}, "Loading work iteme")
old := WorkItem{}
db := r.wrapped.db.First(&old, id)
if db.Error != nil {
return errors.NewInternalError(fmt.Sprintf("could not load %s, %s", ID, db.Error.Error()))
}
err = r.wrapped.Delete(ctx, ID)
if err == nil {
r.undo.Append(func(db *gorm.DB) error {
old.DeletedAt = nil
db = db.Save(&old)
return db.Error
})
}
return errs.WithStack(err)
}
示例9: Delete
// Delete deletes the work item link category with the given id
// returns NotFoundError or InternalError
func (r *GormWorkItemLinkCategoryRepository) Delete(ctx context.Context, ID string) error {
id, err := satoriuuid.FromString(ID)
if err != nil {
// treat as not found: clients don't know it must be a UUID
return errors.NewNotFoundError("work item link category", ID)
}
var cat = WorkItemLinkCategory{
ID: id,
}
log.Info(ctx, map[string]interface{}{
"pkg": "link",
"wilcID": ID,
}, "Work item link category to delete")
db := r.db.Delete(&cat)
if db.Error != nil {
return errors.NewInternalError(db.Error.Error())
}
if db.RowsAffected == 0 {
return errors.NewNotFoundError("work item link category", id.String())
}
return nil
}
示例10: Load
// Load returns the work item link type for the given ID.
// Returns NotFoundError, ConversionError or InternalError
func (r *GormWorkItemLinkTypeRepository) Load(ctx context.Context, ID string) (*app.WorkItemLinkTypeSingle, error) {
id, err := satoriuuid.FromString(ID)
if err != nil {
// treat as not found: clients don't know it must be a UUID
return nil, errors.NewNotFoundError("work item link type", ID)
}
log.Info(ctx, map[string]interface{}{
"pkg": "link",
"wiltID": ID,
}, "Loading work item link type")
res := WorkItemLinkType{}
db := r.db.Model(&res).Where("id=?", ID).First(&res)
if db.RecordNotFound() {
log.Error(ctx, map[string]interface{}{
"wiltID": ID,
}, "work item link type not found")
return nil, errors.NewNotFoundError("work item link type", id.String())
}
if db.Error != nil {
return nil, errors.NewInternalError(db.Error.Error())
}
// Convert the created link type entry into a JSONAPI response
result := ConvertLinkTypeFromModel(res)
return &result, nil
}
示例11: 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)
}
示例12: LoadTypeFromDB
// LoadTypeFromDB return work item type for the given id
func (r *GormWorkItemTypeRepository) LoadTypeFromDB(ctx context.Context, name string) (*WorkItemType, error) {
log.Logger().Infoln("Loading work item type", name)
res, ok := cache.Get(name)
if !ok {
log.Info(ctx, map[string]interface{}{
"pkg": "workitem",
"type": name,
}, "Work item type doesn't exist in the cache. Loading from DB...")
res = WorkItemType{}
db := r.db.Model(&res).Where("name=?", name).First(&res)
if db.RecordNotFound() {
log.Error(ctx, map[string]interface{}{
"witName": name,
}, "work item type repository not found")
return nil, errors.NewNotFoundError("work item type", name)
}
if err := db.Error; err != nil {
return nil, errors.NewInternalError(err.Error())
}
cache.Put(res)
}
return &res, nil
}
示例13: Delete
// Delete deletes the work item link with the given id
// returns NotFoundError or InternalError
func (r *GormWorkItemLinkRepository) Delete(ctx context.Context, ID string) error {
id, err := satoriuuid.FromString(ID)
if err != nil {
// treat as not found: clients don't know it must be a UUID
return errors.NewNotFoundError("work item link", ID)
}
var link = WorkItemLink{
ID: id,
}
log.Info(ctx, map[string]interface{}{
"pkg": "link",
"wilID": ID,
}, "Deleting the work item link repository")
db := r.db.Delete(&link)
if db.Error != nil {
log.Error(ctx, map[string]interface{}{
"wilID": ID,
"err": db.Error,
}, "unable to delete work item link repository")
return errors.NewInternalError(db.Error.Error())
}
if db.RowsAffected == 0 {
return errors.NewNotFoundError("work item link", id.String())
}
return nil
}
示例14: TestNewInternalError
func TestNewInternalError(t *testing.T) {
t.Parallel()
resource.Require(t, resource.UnitTest)
err := errors.NewInternalError("System disk could not be read")
// not sure what assertion to do here.
t.Log(err)
}
示例15: 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
}