This commit is contained in:
stefanodvx 2025-04-14 13:05:43 +02:00
parent 264c97183e
commit 3faede7b1c
74 changed files with 6228 additions and 1 deletions

60
database/media.go Normal file
View file

@ -0,0 +1,60 @@
package database
import (
"fmt"
"govd/models"
"gorm.io/gorm"
)
func GetDefaultMedias(
extractorCodeName string,
contentID string,
) ([]*models.Media, error) {
var mediaList []*models.Media
err := DB.
Where(&models.Media{
ExtractorCodeName: extractorCodeName,
ContentID: contentID,
}).
Preload("Format", "is_default = ?", true).
Find(&mediaList).
Error
if err != nil {
return nil, fmt.Errorf("failed to get stored media list: %w", err)
}
return mediaList, nil
}
func StoreMedia(
extractorCodeName string,
contentID string,
media *models.Media,
) error {
return DB.Transaction(func(tx *gorm.DB) error {
if err := tx.Where(models.Media{
ExtractorCodeName: extractorCodeName,
ContentID: contentID,
}).FirstOrCreate(&media).Error; err != nil {
return fmt.Errorf("failed to get or create media: %w", err)
}
if media.Format != nil {
format := media.Format
format.MediaID = media.ID
if err := tx.Where(models.MediaFormat{
MediaID: format.MediaID,
FormatID: format.FormatID,
Type: format.Type,
}).FirstOrCreate(format).Error; err != nil {
return fmt.Errorf("failed to get or create format: %w", err)
}
}
return nil
})
}