Simple ODM wraps mgo with interface.
- Wrap MongoDB operations with interface{} for TDD development friendly. E.X. gomock
- Strongly-typed queryset.
- interface wraps for mgo.
- Strongly-typed queryset support.
- 0.1.0 release
- Test coverage
- Travis-ci support
Do not support complex mongo query for now.
More limits need to discovery :D
All API design may change in the future until reach 1.0
type user struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Name string `bson:"name"`
LastIP string `bson:"last_ip"`
LastTime time.Time `bson:"last_time"`
}
type userSelector struct {
ID *bson.ObjectId `bson:"_id"`
IDs *[]bson.ObjectId `bson:"_id"`
Name *string `bson:"name"`
}
func (us *userSelector) Database() string {
return "test"
}
func (us *userSelector) Collection() string {
return "users"
}
func main() {
sess, err := mgo.DialWithTimeout("127.0.0.1", 2*time.Second)
if err != nil {
panic(err)
}
store := mongo.NewStorage(sess)
err = store.Query(&userSelector{}).Insert(user{Name: "hello"})
if err != nil {
panic(err)
}