GraphQL API and utilities for the rpdata project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package mongodb
import ( "context" "git.aiterp.net/rpdata/api/models" "git.aiterp.net/rpdata/api/repositories" "github.com/globalsign/mgo" "github.com/globalsign/mgo/bson" )
type userRepository struct { users *mgo.Collection }
func newUserRepository(db *mgo.Database) (repositories.UserRepository, error) { collection := db.C("core.users")
return &userRepository{users: collection}, nil }
func (r *userRepository) Find(ctx context.Context, id string) (*models.User, error) { user := new(models.User) err := r.users.FindId(id).One(user) if err != nil { if err == mgo.ErrNotFound { return nil, repositories.ErrNotFound }
return nil, err }
return user, nil }
func (r *userRepository) List(ctx context.Context) ([]*models.User, error) { users := make([]*models.User, 0, 8) err := r.users.Find(bson.M{}).All(&users) if err != nil && err != mgo.ErrNotFound { return nil, err }
return users, nil }
func (r *userRepository) Insert(ctx context.Context, user models.User) (*models.User, error) { err := r.users.Insert(user) if err != nil { return nil, err }
return &user, nil }
|