qudoco-be/app/database/entity/media_library_items.entity.go

27 lines
1.4 KiB
Go
Raw Normal View History

package entity
import (
"time"
"github.com/google/uuid"
)
// MediaLibraryItem stores metadata for a single logical media asset (one public URL).
// The file may also be referenced from article_files, CMS image tables, etc.
type MediaLibraryItem struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
PublicURL string `json:"public_url" gorm:"type:varchar(2048);not null;uniqueIndex:ux_media_library_public_url"`
ObjectKey *string `json:"object_key" gorm:"type:varchar(1024)"`
OriginalFilename *string `json:"original_filename" gorm:"type:varchar(512)"`
FileCategory string `json:"file_category" gorm:"type:varchar(32);not null;default:other"` // image, video, audio, document, other
SizeBytes *int64 `json:"size_bytes" gorm:"type:int8"`
SourceType string `json:"source_type" gorm:"type:varchar(64);not null"` // article_file, cms, upload
SourceLabel *string `json:"source_label" gorm:"type:varchar(255)"`
ArticleFileID *uint `json:"article_file_id" gorm:"type:int4"`
CreatedByID int `json:"created_by_id" gorm:"type:int4;default:0"`
ClientID *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}