mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
		
			
				
	
	
		
			93 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package hbase
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"math"
 | 
						|
 | 
						|
	pb "github.com/golang/protobuf/proto"
 | 
						|
	"github.com/pingcap/go-hbase/proto"
 | 
						|
)
 | 
						|
 | 
						|
type Put struct {
 | 
						|
	Row        []byte
 | 
						|
	Families   [][]byte
 | 
						|
	Qualifiers [][][]byte
 | 
						|
	Values     [][][]byte
 | 
						|
	Timestamp  uint64
 | 
						|
}
 | 
						|
 | 
						|
func NewPut(row []byte) *Put {
 | 
						|
	return &Put{
 | 
						|
		Row:        row,
 | 
						|
		Families:   make([][]byte, 0),
 | 
						|
		Qualifiers: make([][][]byte, 0),
 | 
						|
		Values:     make([][][]byte, 0),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) GetRow() []byte {
 | 
						|
	return p.Row
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) AddValue(family, qual, value []byte) *Put {
 | 
						|
	pos := p.posOfFamily(family)
 | 
						|
	if pos == -1 {
 | 
						|
		p.Families = append(p.Families, family)
 | 
						|
		p.Qualifiers = append(p.Qualifiers, make([][]byte, 0))
 | 
						|
		p.Values = append(p.Values, make([][]byte, 0))
 | 
						|
 | 
						|
		pos = p.posOfFamily(family)
 | 
						|
	}
 | 
						|
 | 
						|
	p.Qualifiers[pos] = append(p.Qualifiers[pos], qual)
 | 
						|
	p.Values[pos] = append(p.Values[pos], value)
 | 
						|
	return p
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) AddStringValue(family, column, value string) *Put {
 | 
						|
	return p.AddValue([]byte(family), []byte(column), []byte(value))
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) AddTimestamp(ts uint64) *Put {
 | 
						|
	if ts == 0 {
 | 
						|
		p.Timestamp = math.MaxInt64
 | 
						|
	} else {
 | 
						|
		p.Timestamp = ts
 | 
						|
	}
 | 
						|
	return p
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) posOfFamily(family []byte) int {
 | 
						|
	for p, v := range p.Families {
 | 
						|
		if bytes.Equal(family, v) {
 | 
						|
			return p
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return -1
 | 
						|
}
 | 
						|
 | 
						|
func (p *Put) ToProto() pb.Message {
 | 
						|
	put := &proto.MutationProto{
 | 
						|
		Row:        p.Row,
 | 
						|
		MutateType: proto.MutationProto_PUT.Enum(),
 | 
						|
	}
 | 
						|
 | 
						|
	for i, family := range p.Families {
 | 
						|
		cv := &proto.MutationProto_ColumnValue{
 | 
						|
			Family: family,
 | 
						|
		}
 | 
						|
 | 
						|
		for j := range p.Qualifiers[i] {
 | 
						|
			cv.QualifierValue = append(cv.QualifierValue, &proto.MutationProto_ColumnValue_QualifierValue{
 | 
						|
				Qualifier: p.Qualifiers[i][j],
 | 
						|
				Value:     p.Values[i][j],
 | 
						|
				Timestamp: pb.Uint64(p.Timestamp),
 | 
						|
			})
 | 
						|
		}
 | 
						|
 | 
						|
		put.ColumnValue = append(put.ColumnValue, cv)
 | 
						|
	}
 | 
						|
 | 
						|
	return put
 | 
						|
}
 |