Data layer restructuring (#997)

* Move query builders to sqlite package
* Add transaction system
* Wrap model resolvers in transaction
* Add error return value for StringSliceToIntSlice
* Update/refactor mutation resolvers
* Convert query builders
* Remove unused join types
* Add stash id unit tests
* Use WAL journal mode
This commit is contained in:
WithoutPants
2021-01-18 12:23:20 +11:00
committed by GitHub
parent 7bae990c67
commit 1e04deb3d4
168 changed files with 12683 additions and 10863 deletions

View File

@@ -1,77 +1,41 @@
package models
import (
"github.com/jmoiron/sqlx"
)
type ImageReader interface {
// Find(id int) (*Image, error)
Find(id int) (*Image, error)
FindMany(ids []int) ([]*Image, error)
FindByChecksum(checksum string) (*Image, error)
FindByGalleryID(galleryID int) ([]*Image, error)
// FindByPath(path string) (*Image, error)
CountByGalleryID(galleryID int) (int, error)
FindByPath(path string) (*Image, error)
// FindByPerformerID(performerID int) ([]*Image, error)
// CountByPerformerID(performerID int) (int, error)
// FindByStudioID(studioID int) ([]*Image, error)
// Count() (int, error)
Count() (int, error)
Size() (float64, error)
// SizeCount() (string, error)
// CountByStudioID(studioID int) (int, error)
// CountByTagID(tagID int) (int, error)
All() ([]*Image, error)
// Query(imageFilter *ImageFilterType, findFilter *FindFilterType) ([]*Image, int)
Query(imageFilter *ImageFilterType, findFilter *FindFilterType) ([]*Image, int, error)
GetGalleryIDs(imageID int) ([]int, error)
GetTagIDs(imageID int) ([]int, error)
GetPerformerIDs(imageID int) ([]int, error)
}
type ImageWriter interface {
Create(newImage Image) (*Image, error)
Update(updatedImage ImagePartial) (*Image, error)
UpdateFull(updatedImage Image) (*Image, error)
// IncrementOCounter(id int) (int, error)
// DecrementOCounter(id int) (int, error)
// ResetOCounter(id int) (int, error)
// Destroy(id string) error
IncrementOCounter(id int) (int, error)
DecrementOCounter(id int) (int, error)
ResetOCounter(id int) (int, error)
Destroy(id int) error
UpdateGalleries(imageID int, galleryIDs []int) error
UpdatePerformers(imageID int, performerIDs []int) error
UpdateTags(imageID int, tagIDs []int) error
}
type ImageReaderWriter interface {
ImageReader
ImageWriter
}
func NewImageReaderWriter(tx *sqlx.Tx) ImageReaderWriter {
return &imageReaderWriter{
tx: tx,
qb: NewImageQueryBuilder(),
}
}
type imageReaderWriter struct {
tx *sqlx.Tx
qb ImageQueryBuilder
}
func (t *imageReaderWriter) FindMany(ids []int) ([]*Image, error) {
return t.qb.FindMany(ids)
}
func (t *imageReaderWriter) FindByChecksum(checksum string) (*Image, error) {
return t.qb.FindByChecksum(checksum)
}
func (t *imageReaderWriter) FindByGalleryID(galleryID int) ([]*Image, error) {
return t.qb.FindByGalleryID(galleryID)
}
func (t *imageReaderWriter) All() ([]*Image, error) {
return t.qb.All()
}
func (t *imageReaderWriter) Create(newImage Image) (*Image, error) {
return t.qb.Create(newImage, t.tx)
}
func (t *imageReaderWriter) Update(updatedImage ImagePartial) (*Image, error) {
return t.qb.Update(updatedImage, t.tx)
}
func (t *imageReaderWriter) UpdateFull(updatedImage Image) (*Image, error) {
return t.qb.UpdateFull(updatedImage, t.tx)
}