コード例 #1
0
ファイル: index.go プロジェクト: redspread/spread
func (p *Project) AddDocumentToIndex(doc *pb.Document) error {
	oid, size, err := p.createDocument(doc)
	if err != nil {
		return fmt.Errorf("object couldn't be created: %v", err)
	}

	info := doc.GetInfo()
	if info == nil {
		return ErrNilObjectInfo
	}

	entry := &git.IndexEntry{
		Mode: git.FilemodeBlob,
		Size: uint32(size),
		Id:   oid,
		Path: info.Path,
	}

	index, err := p.repo.Index()
	if err != nil {
		return fmt.Errorf("could not retreive index: %v", err)
	}

	err = index.Add(entry)
	if err != nil {
		return err
	}

	return index.Write()
}
コード例 #2
0
ファイル: document.go プロジェクト: redspread/spread
func getObjectFromDoc(doc *pb.Document) (*pb.Object, error) {
	root := doc.GetRoot()
	if root == nil {
		return nil, fmt.Errorf("document '%s' does not have a root", doc.Name)
	}

	obj := root.GetObject()
	if obj == nil {
		return nil, fmt.Errorf("root field of document '%s' does not have an object as it's value", doc.Name)
	}
	return obj, nil
}
コード例 #3
0
ファイル: document.go プロジェクト: redspread/spread
// GetFieldFromDocument returns a pointer to field in doc based on the given field path.
func GetFieldFromDocument(doc *pb.Document, fieldpath string) (*pb.Field, error) {
	root := doc.GetRoot()
	if root == nil {
		return nil, fmt.Errorf("root for document '%s' was nil", doc.Name)
	}

	field, err := ResolveRelativeField(root, fieldpath)
	if err != nil {
		return nil, fmt.Errorf("could not resolve '%s': %v", fieldpath, err)
	}
	return field, err
}