extended datastore to get the images that should be uploaded
This commit is contained in:
parent
798b74d071
commit
066f8f5f95
@ -24,11 +24,12 @@ type ImageMetaData struct {
|
||||
}
|
||||
|
||||
func (img *ImageMetaData) String() string {
|
||||
return fmt.Sprintf("ImageMetaData{ImageId:%d, PiwigoId:%d, CategoryId:%d, RelPath:%s, File:%s, Md5:%s, Change:%sS, catpath:%s}", img.ImageId, img.PiwigoId, img.CategoryId, img.RelativeImagePath, img.Filename, img.Md5Sum, img.LastChange.String(), img.CategoryPath)
|
||||
return fmt.Sprintf("ImageMetaData{ImageId:%d, PiwigoId:%d, CategoryId:%d, RelPath:%s, File:%s, Md5:%s, Change:%sS, catpath:%s, UploadRequired: %t}", img.ImageId, img.PiwigoId, img.CategoryId, img.RelativeImagePath, img.Filename, img.Md5Sum, img.LastChange.String(), img.CategoryPath, img.UploadRequired)
|
||||
}
|
||||
|
||||
type ImageMetadataProvider interface {
|
||||
GetImageMetadata(relativePath string) (ImageMetaData, error)
|
||||
GetImageMetadataToUpload() ([]*ImageMetaData, error)
|
||||
SaveImageMetadata(m ImageMetaData) error
|
||||
}
|
||||
|
||||
@ -76,7 +77,7 @@ func (d *localDataStore) GetImageMetadata(relativePath string) (ImageMetaData, e
|
||||
defer rows.Close()
|
||||
|
||||
if rows.Next() {
|
||||
err = rows.Scan(&img.ImageId, &img.PiwigoId, &img.RelativeImagePath, &img.Filename, &img.Md5Sum, &img.LastChange, &img.CategoryPath, &img.CategoryId, &img.UploadRequired)
|
||||
err = ReadImageMetadataFromRow(rows, &img)
|
||||
if err != nil {
|
||||
return img, err
|
||||
}
|
||||
@ -88,6 +89,40 @@ func (d *localDataStore) GetImageMetadata(relativePath string) (ImageMetaData, e
|
||||
return img, err
|
||||
}
|
||||
|
||||
func (d *localDataStore) GetImageMetadataToUpload() ([]*ImageMetaData, error) {
|
||||
logrus.Tracef("Query all image metadata that represent files queued to upload")
|
||||
|
||||
db, err := d.openDatabase()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
rows, err := db.Query("SELECT imageId, piwigoId, relativePath, fileName, md5sum, lastChanged, categoryPath, categoryId, uploadRequired FROM image WHERE uploadRequired = 1")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
images := []*ImageMetaData{}
|
||||
for rows.Next() {
|
||||
img := &ImageMetaData{}
|
||||
err = ReadImageMetadataFromRow(rows, img)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
images = append(images, img)
|
||||
}
|
||||
err = rows.Err()
|
||||
|
||||
return images, err
|
||||
}
|
||||
|
||||
func ReadImageMetadataFromRow(rows *sql.Rows, img *ImageMetaData) error {
|
||||
err := rows.Scan(&img.ImageId, &img.PiwigoId, &img.RelativeImagePath, &img.Filename, &img.Md5Sum, &img.LastChange, &img.CategoryPath, &img.CategoryId, &img.UploadRequired)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *localDataStore) SaveImageMetadata(img ImageMetaData) error {
|
||||
logrus.Tracef("Saving imagemetadata: %s", img.String())
|
||||
db, err := d.openDatabase()
|
||||
|
@ -40,6 +40,33 @@ func TestSaveAndLoadMetadata(t *testing.T) {
|
||||
cleanupDatabase(t)
|
||||
}
|
||||
|
||||
func TestSaveAndQueryForUploadRecords(t *testing.T) {
|
||||
if !dbinitOk {
|
||||
t.Skip("Skipping test as TestDataStoreInitialize failed!")
|
||||
}
|
||||
dataStore := setupDatabase(t)
|
||||
|
||||
filePath := "blah/foo/bar.jpg"
|
||||
img := getExampleImageMetadata(filePath)
|
||||
|
||||
saveImageShouldNotFail("toupload", dataStore, img, t)
|
||||
img.ImageId = 1
|
||||
|
||||
images, err := dataStore.GetImageMetadataToUpload()
|
||||
if err != nil {
|
||||
t.Fatalf("Could not query images to upload! %s", err)
|
||||
}
|
||||
|
||||
if len(images)<1 {
|
||||
t.Fatal("Did not get any saved images to upload!")
|
||||
}
|
||||
|
||||
imgLoad := images[0]
|
||||
EnsureMetadataAreEqual("toupload", img, *imgLoad, t)
|
||||
|
||||
cleanupDatabase(t)
|
||||
}
|
||||
|
||||
func TestLoadMetadataNotFound(t *testing.T) {
|
||||
if !dbinitOk {
|
||||
t.Skip("Skipping test as TestDataStoreInitialize failed!")
|
||||
@ -114,6 +141,7 @@ func getExampleImageMetadata(filePath string) ImageMetaData {
|
||||
Filename: "bar.jpg",
|
||||
CategoryPath: "blah/foo",
|
||||
CategoryId: 100,
|
||||
UploadRequired: true,
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user