mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			633 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			633 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
package driver
 | 
						|
 | 
						|
type BatchPuter interface {
 | 
						|
	BatchPut([]Write) error
 | 
						|
}
 | 
						|
 | 
						|
type Write struct {
 | 
						|
	Key   []byte
 | 
						|
	Value []byte
 | 
						|
}
 | 
						|
 | 
						|
type WriteBatch struct {
 | 
						|
	batch BatchPuter
 | 
						|
	wb    []Write
 | 
						|
}
 | 
						|
 | 
						|
func (w *WriteBatch) Put(key, value []byte) {
 | 
						|
	if value == nil {
 | 
						|
		value = []byte{}
 | 
						|
	}
 | 
						|
	w.wb = append(w.wb, Write{key, value})
 | 
						|
}
 | 
						|
 | 
						|
func (w *WriteBatch) Delete(key []byte) {
 | 
						|
	w.wb = append(w.wb, Write{key, nil})
 | 
						|
}
 | 
						|
 | 
						|
func (w *WriteBatch) Commit() error {
 | 
						|
	return w.batch.BatchPut(w.wb)
 | 
						|
}
 | 
						|
 | 
						|
func (w *WriteBatch) Rollback() error {
 | 
						|
	w.wb = w.wb[0:0]
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func NewWriteBatch(puter BatchPuter) IWriteBatch {
 | 
						|
	return &WriteBatch{puter, []Write{}}
 | 
						|
}
 |