From db6c11f4551ffa524e97ef0fcd72f13bb6f16c0f Mon Sep 17 00:00:00 2001 From: Nikita Tokarchuk Date: Fri, 6 Mar 2020 00:21:17 +0100 Subject: [PATCH] Remove custom err type err --- mongox/base/getid.go | 9 +++++---- mongox/common/common.go | 4 ++-- mongox/common/count.go | 7 ++++--- mongox/common/deletearray.go | 14 +++++++------- mongox/common/deleteone.go | 8 ++++---- mongox/common/loadarray.go | 10 +++++----- mongox/common/loadone.go | 10 +++++++--- mongox/common/loadstream.go | 17 ++++++++++++----- mongox/common/saveone.go | 3 +-- mongox/database/database.go | 4 ++-- mongox/errors/internalerror.go | 16 ---------------- mongox/errors/malformed.go | 16 ---------------- mongox/errors/notfound.go | 16 ---------------- mongox/query/compose.go | 5 +++-- 14 files changed, 52 insertions(+), 87 deletions(-) delete mode 100644 mongox/errors/internalerror.go delete mode 100644 mongox/errors/malformed.go delete mode 100644 mongox/errors/notfound.go diff --git a/mongox/base/getid.go b/mongox/base/getid.go index fe04d38..928b6ea 100644 --- a/mongox/base/getid.go +++ b/mongox/base/getid.go @@ -1,10 +1,11 @@ package base import ( + "fmt" + "go.mongodb.org/mongo-driver/bson/primitive" "github.com/mainnika/mongox-go-driver/v2/mongox" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" ) // GetID returns source document id @@ -18,7 +19,7 @@ func GetID(source interface{}) (id interface{}) { case mongox.BaseObject: return getObjectOrPanic(doc) default: - panic(errors.Malformedf("source contains malformed document, %v", source)) + panic(fmt.Errorf("source contains malformed document, %v", source)) } } @@ -42,7 +43,7 @@ func getStringIDOrPanic(source mongox.BaseString) (id string) { return id } - panic(errors.Malformedf("victim contains malformed document, %v", source)) + panic(fmt.Errorf("source contains malformed document, %v", source)) } func getObjectOrPanic(source mongox.BaseObject) (id primitive.D) { @@ -52,5 +53,5 @@ func getObjectOrPanic(source mongox.BaseObject) (id primitive.D) { return id } - panic(errors.Malformedf("victim contains malformed document, %v", source)) + panic(fmt.Errorf("source contains malformed document, %v", source)) } diff --git a/mongox/common/common.go b/mongox/common/common.go index e4973f1..f7ea8fb 100644 --- a/mongox/common/common.go +++ b/mongox/common/common.go @@ -1,6 +1,7 @@ package common import ( + "fmt" "reflect" "strconv" "strings" @@ -10,7 +11,6 @@ import ( "go.mongodb.org/mongo-driver/mongo/options" "github.com/mainnika/mongox-go-driver/v2/mongox" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -62,7 +62,7 @@ func createAggregateLoad(db mongox.Database, target interface{}, composed *query } jsonTag, ok := tag.Lookup("json") if jsonTag == "-" { - return nil, errors.Malformedf("preload private field is impossible") + return nil, fmt.Errorf("preload private field is impossible") } jsonData := strings.SplitN(jsonTag, ",", 2) diff --git a/mongox/common/count.go b/mongox/common/count.go index fd01434..825f78b 100644 --- a/mongox/common/count.go +++ b/mongox/common/count.go @@ -1,11 +1,12 @@ package common import ( + "fmt" + "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "github.com/mainnika/mongox-go-driver/v2/mongox" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -22,10 +23,10 @@ func Count(db mongox.Database, target interface{}, filters ...interface{}) (int6 result, err := collection.CountDocuments(db.Context(), composed.M(), opts) if err == mongo.ErrNoDocuments { - return 0, errors.NotFoundErrorf("%s", err) + return 0, err } if err != nil { - return 0, errors.InternalErrorf("can't decode desult: %s", err) + return 0, fmt.Errorf("can't decode desult: %w", err) } return result, nil diff --git a/mongox/common/deletearray.go b/mongox/common/deletearray.go index ec8a2f9..2102409 100644 --- a/mongox/common/deletearray.go +++ b/mongox/common/deletearray.go @@ -1,6 +1,7 @@ package common import ( + "fmt" "reflect" "go.mongodb.org/mongo-driver/bson/primitive" @@ -8,7 +9,6 @@ import ( "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" ) // DeleteArray removes documents list from a database by their ids @@ -19,18 +19,18 @@ func DeleteArray(db mongox.Database, target interface{}) error { targetK := targetV.Kind() if targetK != reflect.Ptr { - panic(errors.Malformedf("target is not a ptr")) + panic(fmt.Errorf("target is not a ptr")) } targetSliceV := targetV.Elem() targetSliceT := targetT.Elem() if targetSliceT.Kind() != reflect.Slice { - panic(errors.Malformedf("target should be a ptr to a slice")) + panic(fmt.Errorf("target should be a ptr to a slice")) } targetSliceElemT := targetSliceT.Elem() if targetSliceElemT.Kind() != reflect.Ptr { - panic(errors.Malformedf("target slice should contain ptrs")) + panic(fmt.Errorf("target slice should contain ptrs")) } zeroElem := reflect.Zero(targetSliceElemT) @@ -45,15 +45,15 @@ func DeleteArray(db mongox.Database, target interface{}) error { } if len(ids) == 0 { - return errors.Malformedf("can't delete zero elements") + return fmt.Errorf("can't delete zero elements") } result, err := collection.DeleteMany(db.Context(), primitive.M{"_id": primitive.M{"$in": ids}}, opts) if err != nil { - return errors.NotFoundErrorf("can't create find and delete result: %s", err) + return fmt.Errorf("can't create find and delete result: %w", err) } if result.DeletedCount != int64(targetLen) { - return errors.InternalErrorf("can't verify delete result: removed count mismatch %d != %d", result.DeletedCount, targetLen) + return fmt.Errorf("can't verify delete result: removed count mismatch %d != %d", result.DeletedCount, targetLen) } return nil diff --git a/mongox/common/deleteone.go b/mongox/common/deleteone.go index 95cad05..280b2ed 100644 --- a/mongox/common/deleteone.go +++ b/mongox/common/deleteone.go @@ -1,6 +1,7 @@ package common import ( + "fmt" "time" "go.mongodb.org/mongo-driver/bson/primitive" @@ -9,7 +10,6 @@ import ( "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -35,15 +35,15 @@ func DeleteOne(db mongox.Database, target interface{}, filters ...interface{}) e result := collection.FindOneAndDelete(db.Context(), composed.M(), opts) if result.Err() != nil { - return errors.InternalErrorf("can't create find one and delete result: %s", result.Err()) + return fmt.Errorf("can't create find one and delete result: %w", result.Err()) } err := result.Decode(target) if err == mongo.ErrNoDocuments { - return errors.NotFoundErrorf("%s", err) + return err } if err != nil { - return errors.InternalErrorf("can't decode result: %s", err) + return fmt.Errorf("can't decode result: %w", err) } return nil diff --git a/mongox/common/loadarray.go b/mongox/common/loadarray.go index 3692528..30c9c42 100644 --- a/mongox/common/loadarray.go +++ b/mongox/common/loadarray.go @@ -1,13 +1,13 @@ package common import ( + "fmt" "reflect" "go.mongodb.org/mongo-driver/mongo" "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -19,18 +19,18 @@ func LoadArray(db mongox.Database, target interface{}, filters ...interface{}) e targetK := targetV.Kind() if targetK != reflect.Ptr { - panic(errors.InternalErrorf("target is not a ptr")) + panic(fmt.Errorf("target is not a ptr")) } targetSliceV := targetV.Elem() targetSliceT := targetT.Elem() if targetSliceT.Kind() != reflect.Slice { - panic(errors.InternalErrorf("target should be a ptr to a slice")) + panic(fmt.Errorf("target should be a ptr to a slice")) } targetSliceElemT := targetSliceT.Elem() if targetSliceElemT.Kind() != reflect.Ptr { - panic(errors.InternalErrorf("target slice should contain ptrs")) + panic(fmt.Errorf("target slice should contain ptrs")) } composed := query.Compose(filters...) @@ -46,7 +46,7 @@ func LoadArray(db mongox.Database, target interface{}, filters ...interface{}) e result, err = createSimpleLoad(db, zeroElem.Interface(), composed) } if err != nil { - return errors.InternalErrorf("can't create find result: %s", err) + return fmt.Errorf("can't create find result: %w", err) } defer result.Close(db.Context()) diff --git a/mongox/common/loadone.go b/mongox/common/loadone.go index da26016..b8ecd56 100644 --- a/mongox/common/loadone.go +++ b/mongox/common/loadone.go @@ -1,11 +1,12 @@ package common import ( + "fmt" + "go.mongodb.org/mongo-driver/mongo" "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -24,12 +25,15 @@ func LoadOne(db mongox.Database, target interface{}, filters ...interface{}) err result, err = createSimpleLoad(db, target, composed) } if err != nil { - return errors.InternalErrorf("can't create find result: %s", err) + return fmt.Errorf("can't create find result: %w", err) } hasNext := result.Next(db.Context()) + if result.Err() != nil { + return err + } if !hasNext { - return errors.NotFoundErrorf("can't find result: %s", result.Err()) + return mongo.ErrNoDocuments } base.Reset(target) diff --git a/mongox/common/loadstream.go b/mongox/common/loadstream.go index 32ba1c2..5cf2aaa 100644 --- a/mongox/common/loadstream.go +++ b/mongox/common/loadstream.go @@ -2,12 +2,12 @@ package common import ( "context" + "fmt" "go.mongodb.org/mongo-driver/mongo" "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -23,15 +23,18 @@ func (l *StreamLoader) DecodeNext() error { hasNext := l.Cursor.Next(l.ctx) + if l.Cursor.Err() != nil { + return l.Cursor.Err() + } if !hasNext { - return errors.NotFoundErrorf("%s", mongo.ErrNoDocuments) + return mongo.ErrNoDocuments } base.Reset(l.target) err := l.Decode(l.target) if err != nil { - return errors.InternalErrorf("can't decode desult: %s", err) + return fmt.Errorf("can't decode desult: %w", err) } return nil @@ -41,8 +44,12 @@ func (l *StreamLoader) DecodeNext() error { func (l *StreamLoader) Next() error { hasNext := l.Cursor.Next(l.ctx) + + if l.Cursor.Err() != nil { + return l.Cursor.Err() + } if !hasNext { - return errors.NotFoundErrorf("%s", mongo.ErrNoDocuments) + return mongo.ErrNoDocuments } return nil @@ -69,7 +76,7 @@ func LoadStream(db mongox.Database, target interface{}, filters ...interface{}) cursor, err = createSimpleLoad(db, target, composed) } if err != nil { - return nil, errors.InternalErrorf("can't create find result: %s", err) + return nil, fmt.Errorf("can't create find result: %w", err) } l := &StreamLoader{Cursor: cursor, ctx: db.Context(), target: target} diff --git a/mongox/common/saveone.go b/mongox/common/saveone.go index a395888..eb6d221 100644 --- a/mongox/common/saveone.go +++ b/mongox/common/saveone.go @@ -9,7 +9,6 @@ import ( "github.com/mainnika/mongox-go-driver/v2/mongox" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" "github.com/mainnika/mongox-go-driver/v2/mongox/query" ) @@ -33,7 +32,7 @@ func SaveOne(db mongox.Database, source interface{}) error { result := collection.FindOneAndReplace(db.Context(), composed.M(), source, opts) if result.Err() != nil { - return errors.NotFoundErrorf("%s", result.Err()) + return result.Err() } return result.Decode(source) diff --git a/mongox/database/database.go b/mongox/database/database.go index ae53680..e780cc7 100644 --- a/mongox/database/database.go +++ b/mongox/database/database.go @@ -2,12 +2,12 @@ package database import ( "context" + "fmt" "reflect" "go.mongodb.org/mongo-driver/mongo" "github.com/mainnika/mongox-go-driver/v2/mongox" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" ) // Database handler @@ -78,5 +78,5 @@ func (d *Database) GetCollectionOf(document interface{}) mongox.MongoCollection return d.client.Database(d.dbname).Collection(found) } - panic(errors.InternalErrorf("document %v does not have a collection tag", document)) + panic(fmt.Errorf("document %v does not have a collection tag", document)) } diff --git a/mongox/errors/internalerror.go b/mongox/errors/internalerror.go deleted file mode 100644 index 287c13f..0000000 --- a/mongox/errors/internalerror.go +++ /dev/null @@ -1,16 +0,0 @@ -package errors - -import "fmt" - -// InternalError error -type InternalError string - -// Error message -func (ie InternalError) Error() string { - return fmt.Sprintf("internal error, %s", string(ie)) -} - -// InternalErrorf function creates an instance of InternalError -func InternalErrorf(format string, params ...interface{}) error { - return InternalError(fmt.Sprintf(format, params...)) -} diff --git a/mongox/errors/malformed.go b/mongox/errors/malformed.go deleted file mode 100644 index 113a8a3..0000000 --- a/mongox/errors/malformed.go +++ /dev/null @@ -1,16 +0,0 @@ -package errors - -import "fmt" - -// Malformed error -type Malformed string - -// Error message -func (m Malformed) Error() string { - return fmt.Sprintf("Malformed, %s", string(m)) -} - -// Malformedf creates an instance of Malformed -func Malformedf(format string, params ...interface{}) error { - return Malformed(fmt.Sprintf(format, params...)) -} diff --git a/mongox/errors/notfound.go b/mongox/errors/notfound.go deleted file mode 100644 index 5ddef39..0000000 --- a/mongox/errors/notfound.go +++ /dev/null @@ -1,16 +0,0 @@ -package errors - -import "fmt" - -// NotFound error -type NotFound string - -// Error message -func (nf NotFound) Error() string { - return fmt.Sprintf("can not find, %s", string(nf)) -} - -// NotFoundErrorf function creates an instance of BadRequestError -func NotFoundErrorf(format string, params ...interface{}) error { - return NotFound(fmt.Sprintf(format, params...)) -} diff --git a/mongox/query/compose.go b/mongox/query/compose.go index affb4fd..0553fec 100644 --- a/mongox/query/compose.go +++ b/mongox/query/compose.go @@ -1,11 +1,12 @@ package query import ( + "fmt" + "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "github.com/mainnika/mongox-go-driver/v2/mongox/base" - "github.com/mainnika/mongox-go-driver/v2/mongox/errors" ) // Compose is a function to compose filters into a single query @@ -15,7 +16,7 @@ func Compose(filters ...interface{}) *Query { for _, f := range filters { if !Push(q, f) { - panic(errors.InternalErrorf("unknown filter %v", f)) + panic(fmt.Errorf("unknown filter %v", f)) } }