65 lines
1.9 KiB
Go
65 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 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
|
|
}
|