mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
package dataservices
 | 
						|
 | 
						|
import (
 | 
						|
	portainer "github.com/portainer/portainer/api"
 | 
						|
 | 
						|
	"golang.org/x/exp/constraints"
 | 
						|
)
 | 
						|
 | 
						|
type BaseDataServiceTx[T any, I constraints.Integer] struct {
 | 
						|
	Bucket     string
 | 
						|
	Connection portainer.Connection
 | 
						|
	Tx         portainer.Transaction
 | 
						|
}
 | 
						|
 | 
						|
func (service BaseDataServiceTx[T, I]) BucketName() string {
 | 
						|
	return service.Bucket
 | 
						|
}
 | 
						|
 | 
						|
func (service BaseDataServiceTx[T, I]) Read(ID I) (*T, error) {
 | 
						|
	var element T
 | 
						|
	identifier := service.Connection.ConvertToKey(int(ID))
 | 
						|
 | 
						|
	err := service.Tx.GetObject(service.Bucket, identifier, &element)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return &element, nil
 | 
						|
}
 | 
						|
 | 
						|
func (service BaseDataServiceTx[T, I]) ReadAll() ([]T, error) {
 | 
						|
	var collection = make([]T, 0)
 | 
						|
 | 
						|
	return collection, service.Tx.GetAll(
 | 
						|
		service.Bucket,
 | 
						|
		new(T),
 | 
						|
		AppendFn(&collection),
 | 
						|
	)
 | 
						|
}
 | 
						|
 | 
						|
func (service BaseDataServiceTx[T, I]) Update(ID I, element *T) error {
 | 
						|
	identifier := service.Connection.ConvertToKey(int(ID))
 | 
						|
	return service.Tx.UpdateObject(service.Bucket, identifier, element)
 | 
						|
}
 | 
						|
 | 
						|
func (service BaseDataServiceTx[T, I]) Delete(ID I) error {
 | 
						|
	identifier := service.Connection.ConvertToKey(int(ID))
 | 
						|
	return service.Tx.DeleteObject(service.Bucket, identifier)
 | 
						|
}
 |