示例#1
0
func convertMongoError(err error) errors.Error {
	if mongoErr, ok := err.(*mgo.LastError); ok {
		if mongoErr.Code == 11000 {
			return buildMongoDuplicatedError()
		}
	}
	return errors.Wraps(err, 500)
}
示例#2
0
// NewItemSchemaFromReader return a new ItemSchema by an io.Reader.
// return a error if the buffer not is valid.
func NewItemSchemaFromReader(r io.Reader) (*ItemSchema, errors.Error) {
	itemSchema := &ItemSchema{}
	err := json.NewDecoder(r).Decode(itemSchema)
	if err != nil {
		return nil, errors.Wraps(err, 400)
	}
	itemSchema.fillDefaultValues()
	return itemSchema, itemSchema.validate()
}
示例#3
0
func (m *MongoDB) DeleteItemSchemaByCollectionName(collectionName string) errors.Error {
	session := m.session.Clone()
	defer session.Close()

	err := session.DB("").C(schemas.ItemSchemaCollectionName).RemoveId(collectionName)
	if err == mgo.ErrNotFound {
		return db.ItemSchemaNotFound
	} else if err != nil {
		return errors.Wraps(err, 500)
	}
	return nil
}
示例#4
0
func (m *MongoDB) FindItemSchemaByCollectionName(collectionName string) (*schemas.ItemSchema, errors.Error) {
	session := m.session.Clone()
	defer session.Close()

	itemSchema := &schemas.ItemSchema{}
	err := session.DB("").C(schemas.ItemSchemaCollectionName).FindId(collectionName).One(&itemSchema)

	if err == mgo.ErrNotFound {
		return nil, db.ItemSchemaNotFound
	} else if err != nil {
		return nil, errors.Wraps(err, 500)
	}

	return itemSchema, nil
}
示例#5
0
func (m *MongoDB) FindItemSchema(filter *db.Filter) (*db.ItemSchemasReply, errors.Error) {
	session := m.session.Clone()
	defer session.Close()
	where := BuildMongoWhere(filter.Where, schemas.ItemSchemaPrimaryKey)
	query := session.DB("").C(schemas.ItemSchemaCollectionName).Find(where)

	reply := &db.ItemSchemasReply{}
	reply.Items = []*schemas.ItemSchema{}
	err := query.Skip(filter.Skip()).Limit(filter.PerPage).Iter().All(&reply.Items)

	if err != nil {
		return nil, errors.Wraps(err, 500)
	}

	return reply, nil
}
示例#6
0
文件: server.go 项目: ricobl/beat
func (s *Server) findItemSchema(t *transaction.Transaction) {
	filter, err := db.NewFilterFromQueryString(t.Req.URL.RawQuery)

	if err != nil {
		t.WriteError(errors.Wraps(err, 400))
		return
	}

	reply, findErr := s.DB.FindItemSchema(filter)
	if findErr != nil {
		t.WriteError(findErr)
		return
	}

	t.WriteResult(reply)
}
示例#7
0
func (m *MongoDB) FindOneItemSchema(filter *db.Filter) (*schemas.ItemSchema, errors.Error) {
	session := m.session.Clone()
	defer session.Close()
	where := BuildMongoWhere(filter.Where, schemas.ItemSchemaPrimaryKey)
	query := session.DB("").C(schemas.ItemSchemaCollectionName).Find(where)

	itemSchema := &schemas.ItemSchema{}
	err := query.One(&itemSchema)

	if err == mgo.ErrNotFound {
		return nil, db.ItemSchemaNotFound
	} else if err != nil {
		return nil, errors.Wraps(err, 500)
	}

	return itemSchema, nil
}
示例#8
0
func (s *Server) findOneItemSchema(t *transaction.Transaction) {
	filter, err := db.NewFilterFromQueryString(t.Req.URL.RawQuery)

	if err != nil {
		t.WriteError(errors.Wraps(err, 400))
		return
	}

	itemSchema, findErr := s.DB.FindOneItemSchema(filter)
	if findErr != nil {
		t.WriteError(findErr)
		return
	}

	itemSchema.AttachDefaultLinks(t.BaseUrl())
	t.WriteResult(itemSchema)
}
示例#9
0
func (s *Server) findItemSchema(t *transaction.Transaction) {
	filter, err := db.NewFilterFromQueryString(t.Req.URL.RawQuery)

	if err != nil {
		t.WriteError(errors.Wraps(err, 400))
		return
	}

	reply, findErr := s.DB.FindItemSchema(filter)
	if findErr != nil {
		t.WriteError(findErr)
		return
	}

	baseUrl := t.BaseUrl()
	for _, itemSchema := range reply.Items {
		itemSchema.AttachDefaultLinks(baseUrl)
	}

	t.WriteResult(reply)
}