76 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
package bolt
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/asdine/storm/v3"
 | 
						|
	"github.com/asdine/storm/v3/q"
 | 
						|
 | 
						|
	"github.com/gtsteffaniak/filebrowser/errors"
 | 
						|
	"github.com/gtsteffaniak/filebrowser/share"
 | 
						|
)
 | 
						|
 | 
						|
type shareBackend struct {
 | 
						|
	db *storm.DB
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) All() ([]*share.Link, error) {
 | 
						|
	var v []*share.Link
 | 
						|
	err := s.db.All(&v)
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return v, errors.ErrNotExist
 | 
						|
	}
 | 
						|
 | 
						|
	return v, err
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) FindByUserID(id uint) ([]*share.Link, error) {
 | 
						|
	var v []*share.Link
 | 
						|
	err := s.db.Select(q.Eq("UserID", id)).Find(&v)
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return v, errors.ErrNotExist
 | 
						|
	}
 | 
						|
 | 
						|
	return v, err
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) GetByHash(hash string) (*share.Link, error) {
 | 
						|
	var v share.Link
 | 
						|
	err := s.db.One("Hash", hash, &v)
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return nil, errors.ErrNotExist
 | 
						|
	}
 | 
						|
 | 
						|
	return &v, err
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) GetPermanent(path string, id uint) (*share.Link, error) {
 | 
						|
	var v share.Link
 | 
						|
	err := s.db.Select(q.Eq("Path", path), q.Eq("Expire", 0), q.Eq("UserID", id)).First(&v)
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return nil, errors.ErrNotExist
 | 
						|
	}
 | 
						|
 | 
						|
	return &v, err
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) Gets(path string, id uint) ([]*share.Link, error) {
 | 
						|
	var v []*share.Link
 | 
						|
	err := s.db.Select(q.Eq("Path", path), q.Eq("UserID", id)).Find(&v)
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return v, errors.ErrNotExist
 | 
						|
	}
 | 
						|
 | 
						|
	return v, err
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) Save(l *share.Link) error {
 | 
						|
	return s.db.Save(l)
 | 
						|
}
 | 
						|
 | 
						|
func (s shareBackend) Delete(hash string) error {
 | 
						|
	err := s.db.DeleteStruct(&share.Link{Hash: hash})
 | 
						|
	if err == storm.ErrNotFound {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return err
 | 
						|
}
 |