rename model methods
- rename FindAll -> Find - rename Find -> FindRaw
This commit is contained in:
parent
08ea2d9627
commit
14ac93b327
23
model.go
23
model.go
@ -54,8 +54,8 @@ type HasIDSlice []HasID
|
|||||||
type IModel interface {
|
type IModel interface {
|
||||||
Append(field string, a ...interface{}) error
|
Append(field string, a ...interface{}) error
|
||||||
Delete() error
|
Delete() error
|
||||||
Find(query interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error)
|
FindRaw(query interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error)
|
||||||
FindAll(query interface{}, opts ...*options.FindOptions) (*Query, error)
|
Find(query interface{}, opts ...*options.FindOptions) (*Query, error)
|
||||||
FindByID(id interface{}) (*Query, error)
|
FindByID(id interface{}) (*Query, error)
|
||||||
FindOne(query interface{}, options ...*options.FindOneOptions) (*Query, error)
|
FindOne(query interface{}, options ...*options.FindOneOptions) (*Query, error)
|
||||||
FindPaged(query interface{}, page int64, perPage int64, options ...*options.FindOptions) (*Query, error)
|
FindPaged(query interface{}, page int64, perPage int64, options ...*options.FindOptions) (*Query, error)
|
||||||
@ -120,13 +120,16 @@ func (m *Model) getParsedIdxs() map[string][]InternalIndex {
|
|||||||
return ri.Indexes
|
return ri.Indexes
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Model) Find(query interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error) {
|
// FindRaw - find documents satisfying `query` and return a plain mongo cursor.
|
||||||
|
func (m *Model) FindRaw(query interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error) {
|
||||||
coll := m.getColl()
|
coll := m.getColl()
|
||||||
cursor, err := coll.Find(context.TODO(), query, opts...)
|
cursor, err := coll.Find(context.TODO(), query, opts...)
|
||||||
return cursor, err
|
return cursor, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Model) FindAll(query interface{}, opts ...*options.FindOptions) (*Query, error) {
|
// Find - find all documents satisfying `query`.
|
||||||
|
// returns a pointer to a Query for further chaining.
|
||||||
|
func (m *Model) Find(query interface{}, opts ...*options.FindOptions) (*Query, error) {
|
||||||
qqn := ModelRegistry.new_(m.typeName)
|
qqn := ModelRegistry.new_(m.typeName)
|
||||||
qqv := reflect.New(reflect.SliceOf(reflect.TypeOf(qqn).Elem()))
|
qqv := reflect.New(reflect.SliceOf(reflect.TypeOf(qqn).Elem()))
|
||||||
qqv.Elem().Set(reflect.Zero(qqv.Elem().Type()))
|
qqv.Elem().Set(reflect.Zero(qqv.Elem().Type()))
|
||||||
@ -136,7 +139,7 @@ func (m *Model) FindAll(query interface{}, opts ...*options.FindOptions) (*Query
|
|||||||
doc: qqv.Interface(),
|
doc: qqv.Interface(),
|
||||||
Op: OP_FIND_ALL,
|
Op: OP_FIND_ALL,
|
||||||
}
|
}
|
||||||
q, err := m.Find(query, opts...)
|
q, err := m.FindRaw(query, opts...)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
rawRes := bson.A{}
|
rawRes := bson.A{}
|
||||||
@ -155,6 +158,8 @@ func (m *Model) FindAll(query interface{}, opts ...*options.FindOptions) (*Query
|
|||||||
return qq, err
|
return qq, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindPaged - Wrapper around FindAll with the Skip and Limit options populated.
|
||||||
|
// returns a pointer to a Query for further chaining.
|
||||||
func (m *Model) FindPaged(query interface{}, page int64, perPage int64, opts ...*options.FindOptions) (*Query, error) {
|
func (m *Model) FindPaged(query interface{}, page int64, perPage int64, opts ...*options.FindOptions) (*Query, error) {
|
||||||
skipAmt := perPage * (page - 1)
|
skipAmt := perPage * (page - 1)
|
||||||
if skipAmt < 0 {
|
if skipAmt < 0 {
|
||||||
@ -165,15 +170,19 @@ func (m *Model) FindPaged(query interface{}, page int64, perPage int64, opts ...
|
|||||||
} else {
|
} else {
|
||||||
opts = append(opts, options.Find().SetSkip(skipAmt).SetLimit(perPage))
|
opts = append(opts, options.Find().SetSkip(skipAmt).SetLimit(perPage))
|
||||||
}
|
}
|
||||||
q, err := m.FindAll(query, opts...)
|
q, err := m.Find(query, opts...)
|
||||||
q.Op = OP_FIND_PAGED
|
q.Op = OP_FIND_PAGED
|
||||||
return q, err
|
return q, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindByID - find a single document by its _id field.
|
||||||
|
// Wrapper around FindOne with an ID query as its first argument
|
||||||
func (m *Model) FindByID(id interface{}) (*Query, error) {
|
func (m *Model) FindByID(id interface{}) (*Query, error) {
|
||||||
return m.FindOne(bson.D{{"_id", id}})
|
return m.FindOne(bson.D{{"_id", id}})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindOne - find a single document satisfying `query`.
|
||||||
|
// returns a pointer to a Query for further chaining.
|
||||||
func (m *Model) FindOne(query interface{}, options ...*options.FindOneOptions) (*Query, error) {
|
func (m *Model) FindOne(query interface{}, options ...*options.FindOneOptions) (*Query, error) {
|
||||||
coll := m.getColl()
|
coll := m.getColl()
|
||||||
rip := coll.FindOne(context.TODO(), query, options...)
|
rip := coll.FindOne(context.TODO(), query, options...)
|
||||||
@ -330,6 +339,8 @@ func (m *Model) Swap(field string, i, j int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save - updates this Model in the database,
|
||||||
|
// or inserts it if it doesn't exist
|
||||||
func (m *Model) Save() error {
|
func (m *Model) Save() error {
|
||||||
val := valueOf(m.self)
|
val := valueOf(m.self)
|
||||||
if val.Kind() == reflect.Slice {
|
if val.Kind() == reflect.Slice {
|
||||||
|
@ -81,7 +81,7 @@ func TestModel_FindAll(t *testing.T) {
|
|||||||
initTest()
|
initTest()
|
||||||
createAndSave(t, &iti_multi)
|
createAndSave(t, &iti_multi)
|
||||||
smodel := Create(story{}).(*story)
|
smodel := Create(story{}).(*story)
|
||||||
query, err := smodel.FindAll(bson.M{}, options.Find())
|
query, err := smodel.Find(bson.M{}, options.Find())
|
||||||
assert.Equal(t, nil, err)
|
assert.Equal(t, nil, err)
|
||||||
final := make([]story, 0)
|
final := make([]story, 0)
|
||||||
query.Exec(&final)
|
query.Exec(&final)
|
||||||
@ -94,7 +94,7 @@ func TestModel_PopulateMulti(t *testing.T) {
|
|||||||
saveDoc(t, bandDoc)
|
saveDoc(t, bandDoc)
|
||||||
createAndSave(t, &iti_multi)
|
createAndSave(t, &iti_multi)
|
||||||
smodel := Create(story{}).(*story)
|
smodel := Create(story{}).(*story)
|
||||||
query, err := smodel.FindAll(bson.M{}, options.Find())
|
query, err := smodel.Find(bson.M{}, options.Find())
|
||||||
assert.Equal(t, nil, err)
|
assert.Equal(t, nil, err)
|
||||||
final := make([]story, 0)
|
final := make([]story, 0)
|
||||||
query.Populate("Author", "Chapters.Bands").Exec(&final)
|
query.Populate("Author", "Chapters.Bands").Exec(&final)
|
||||||
|
Loading…
Reference in New Issue
Block a user