69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package queries
|
|
|
|
import (
|
|
models "backend/gen/postgres/postgres/public/model"
|
|
. "backend/gen/postgres/postgres/public/table"
|
|
"backend/typesdefs"
|
|
"fmt"
|
|
"log"
|
|
|
|
. "github.com/go-jet/jet/v2/postgres"
|
|
)
|
|
|
|
func SetImagesToDB(pool *[]typesdefs.UploadedMedia) error {
|
|
if len(*pool) == 0 {
|
|
log.Println("No new images to save to DB.")
|
|
return nil
|
|
}
|
|
|
|
var to_insert []models.ImagesRefs
|
|
|
|
for _, data := range *pool {
|
|
|
|
to_insert = append(to_insert, models.ImagesRefs{
|
|
Codice: data.Codice,
|
|
Ordine: int32(data.Order),
|
|
Img: data.MediaId,
|
|
Thumb: data.ThumbId,
|
|
OgURL: data.OGUrl,
|
|
})
|
|
}
|
|
stmt := ImagesRefs.INSERT(ImagesRefs.AllColumns).MODELS(to_insert).ON_CONFLICT(ImagesRefs.Codice, ImagesRefs.Ordine).DO_UPDATE(SET(ImagesRefs.Img.SET(ImagesRefs.EXCLUDED.Img), ImagesRefs.Thumb.SET(ImagesRefs.EXCLUDED.Thumb)))
|
|
|
|
_, err := stmt.Exec(postgres)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to insert/update images batch: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func GetImagesFromDB() ([]models.ImagesRefs, error) {
|
|
var images []models.ImagesRefs
|
|
stmt := SELECT(ImagesRefs.AllColumns).FROM(ImagesRefs).ORDER_BY(ImagesRefs.Ordine.ASC())
|
|
err := stmt.Query(postgres, &images)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get images: %w", err)
|
|
}
|
|
return images, nil
|
|
}
|
|
|
|
func GetCodiceImagesFromDB(codice string) ([]models.ImagesRefs, error) {
|
|
var images []models.ImagesRefs
|
|
stmt := SELECT(ImagesRefs.AllColumns).FROM(ImagesRefs).WHERE(ImagesRefs.Codice.EQ(Text(codice))).ORDER_BY(ImagesRefs.Ordine.ASC())
|
|
err := stmt.Query(postgres, &images)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get images: %w", err)
|
|
}
|
|
return images, nil
|
|
}
|
|
|
|
func ClearImagesRefsByCodice(codice string) error {
|
|
stmt := ImagesRefs.DELETE().WHERE(ImagesRefs.Codice.EQ(Text(codice)))
|
|
_, err := stmt.Exec(postgres)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to clear images refs by codice: %w", err)
|
|
}
|
|
return nil
|
|
}
|