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 }