mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-30 19:08:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			633 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			633 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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{}}
 | |
| }
 |