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 SetVideosToDB(pool *[]typesdefs.UploadedMedia) error { if len(*pool) == 0 { log.Println("No new videos to save to DB.") return nil } var to_insert []models.VideosRefs for _, data := range *pool { to_insert = append(to_insert, models.VideosRefs{ Codice: data.Codice, Ordine: int32(data.Order), Video: data.MediaId, Thumb: data.ThumbId, OgURL: data.OGUrl, }) } stmt := VideosRefs.INSERT(VideosRefs.AllColumns).MODELS(to_insert).ON_CONFLICT(VideosRefs.Codice, VideosRefs.Ordine).DO_UPDATE(SET(VideosRefs.Video.SET(VideosRefs.EXCLUDED.Video), VideosRefs.Thumb.SET(VideosRefs.EXCLUDED.Thumb))) _, err := stmt.Exec(postgres) if err != nil { return fmt.Errorf("failed to insert video refs: %w", err) } return nil } func GetVideosFromDB() ([]models.VideosRefs, error) { var videos []models.VideosRefs stmt := VideosRefs.SELECT(VideosRefs.AllColumns).FROM(VideosRefs).ORDER_BY(VideosRefs.Ordine.ASC()) err := stmt.Query(postgres, &videos) if err != nil { return nil, fmt.Errorf("failed to get videos: %w", err) } return videos, nil } func GetCodiceVideosFromDB(codice string) ([]models.VideosRefs, error) { var videos []models.VideosRefs stmt := VideosRefs.SELECT(VideosRefs.AllColumns).FROM(VideosRefs).WHERE(VideosRefs.Codice.EQ(Text(codice))).ORDER_BY(VideosRefs.Ordine.ASC()) err := stmt.Query(postgres, &videos) if err != nil { return nil, fmt.Errorf("failed to get videos: %w", err) } return videos, nil } func ClearVideosRefsByCodice(codice string) error { stmt := VideosRefs.DELETE().WHERE(VideosRefs.Codice.EQ(Text(codice))) _, err := stmt.Exec(postgres) if err != nil { return fmt.Errorf("failed to clear videos refs by codice: %w", err) } return nil }