mgodb

package
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2019 License: MIT Imports: 7 Imported by: 0

README

Mgodb

Orm Active Record http://en.wikipedia.org/wiki/ActiveRecord for mongodb, wrapper from http://labix.org/v2/mgo Example usage in framework http://robfig.github.io/revel/ see example/init.revel.go and example/model.revel.go, support hooks concept from https://github.com/coopernurse/gorp

CRUD

Example usage default CRUD:

var err error
user := models.NewUser()
user.Username = "Bar"
user.Password = "ssdf"
err = user.Save() //Insert object
if err != nil {
    panic(err)
}
fmt.Println(user)
user.Username = "Foo"
err = user.Save() //Update object
if err != nil {
    panic(err)
}
fmt.Println(user)
loadUser, err := models.FindUser(user.GetId()) //Get object
if err != nil {
    panic(err)
}
fmt.Println(loadUser)
loadUser.Username = "NewFoo"
err = loadUser.Save() //Update object
if err != nil {
    panic(err)
}
fmt.Println(loadUser)
err = loadUser.Delete() //Delete object
if err != nil {
    panic(err)
}
More examples

Example search one by field "Username" = "Foo":

user, err := models.FindUserBy(&models.User{Username: "Foo"})
if err != nil {
  panic(err)
}
fmt.Println(user.GetId())//Get object
user.Username = "Bar"
err = user.Save() //Update object
if err != nil {
  panic(err)
}
fmt.Println(user.GetId())

Example get count by field "Username" = "Foo":

count, err := models.CountUsers(&models.User{Username: "Foo"})
if err != nil {
  panic(err)
}
fmt.Println(count)

Example get all by field "Username" = "Bar":

query := mgodb.Query{QueryDoc: &models.User{Username: "Bar"}, Limit: 0, Skip: 0}
users, err := models.FindUsers(query) //Get users
if err != nil {
  panic(err)
}
for _, item := range users {
  item.Username = "Foo"
  if err = item.Save(); err != nil { //Update users
    panic(err)
  }
}
Hooks

Use hooks to before/after saving/delete to the db.

//Full list of hooks that you can implement:
func (self *SomeModelName) BeforeInsert() error {}
func (self *SomeModelName) AfterInsert() error {}

func (self *SomeModelName) BeforeUpdate() error {}
func (self *SomeModelName) AfterUpdate() error {}

func (self *SomeModelName) BeforeDelete() error {}
func (self *SomeModelName) AfterDelete() error {}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DbmInstance *Dbm
	Debug       bool
)
View Source
var (
	SortedDesc string = "-"
	SortedAsk  string = ""
)

Functions

func ObjectIdHex

func ObjectIdHex(s string) bson.ObjectId

Types

type Dbm

type Dbm struct {
	Database *mgo.Database
}

func (*Dbm) Delete

func (self *Dbm) Delete(collectionName, id string, doc interface{}) error

func (*Dbm) DeleteAll

func (self *Dbm) DeleteAll(collectionName string, selector interface{}) (*mgo.ChangeInfo, error)

func (*Dbm) Find

func (self *Dbm) Find(collectionName string, query interface{}) *mgo.Query

func (*Dbm) GetCollection

func (self *Dbm) GetCollection(collectionName string) *mgo.Collection

func (*Dbm) GetInstance

func (self *Dbm) GetInstance() *Dbm

func (*Dbm) Init

func (self *Dbm) Init(connectUrl string, dbName string, timeout time.Duration) error

func (*Dbm) Insert

func (self *Dbm) Insert(collectionName string, doc interface{}) error

func (*Dbm) InsertAll

func (self *Dbm) InsertAll(collectionName string, docs ...interface{}) error

func (*Dbm) Update

func (self *Dbm) Update(collectionName, id string, doc interface{}) error

func (*Dbm) UpdateAll

func (self *Dbm) UpdateAll(collectionName string, selector interface{}, change interface{}) (*mgo.ChangeInfo, error)

type Model

type Model struct {

	//Crutch for success encoding gob
	Tmp *bool `bson:"-" json:"-" xml:"-"`
	// contains filtered or unexported fields
}

func (*Model) Count

func (self *Model) Count(queryDoc interface{}) (n int, err error)

func (*Model) Delete

func (self *Model) Delete() (err error)

func (*Model) Find

func (self *Model) Find(query interface{}) (*mgo.Query, error)

func (*Model) FindAll

func (self *Model) FindAll(query Query, docs interface{}) (err error)

func (*Model) FindByPk

func (self *Model) FindByPk(id string, doc interface{}) (err error)

func (*Model) FindOne

func (self *Model) FindOne(queryDoc interface{}, doc interface{}) (err error)

func (*Model) MergeDoc

func (self *Model) MergeDoc(docOld interface{}, docNew interface{}) error

func (*Model) ReloadDoc

func (self *Model) ReloadDoc(doc interface{})

func (*Model) Save

func (self *Model) Save() (err error)

func (*Model) SetDoc

func (self *Model) SetDoc(doc interface{})

type Query

type Query struct {
	QueryDoc interface{}
	Limit    int
	Skip     int
	// contains filtered or unexported fields
}

func (*Query) SetSort

func (self *Query) SetSort(doc interface{}, sorted string) (err error)

Example:

query := mgodb.Query{QueryDoc: &models.User{}}
query.SetSort(&models.User{Created: 0})
users, err := models.FindUsers(query)

http://godoc.org/labix.org/v2/mgo#Query.Sort

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL