infoalloggi-monorepo/apps/backend/queries/images.go
2026-05-19 18:42:34 +02:00

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
}