package models

// VideoSubInfo 属于 IMDBInfo，IMDBInfoID 是外键，使用了 GORM 的 HasMany 关联
type VideoSubInfo struct {
	Feature      string `gorm:"primaryKey" json:"feature"  binding:"required"` // 特征码，这个未必有，比如是蓝光格式，分散成多个视频文件的时候，暂定使用本程序的特征提前方式
	SubName      string `json:"sub_name" binding:"required"`                   // 字幕的文件名
	Season       int    `json:"season"`                                        // 如果对应的是电影则可能是 0，没有
	Episode      int    `json:"episode"`                                       // 如果对应的是电影则可能是 0，没有
	LanguageISO  string `json:"language_iso" binding:"required"`               // 字幕的语言，目标语言，就算是双语，中英，也应该是中文。ISO_639-1_codes 标准，见 ISOLanguage.go 文件，这里无法区分简体繁体
	IsDouble     bool   `json:"is_double" binding:"required"`                  // 是否是双语，上面是主体语言，比如是中文，
	ChineseISO   string `json:"chinese_iso" binding:"required"`                // 中文语言编码变种，见 ISOLanguage.go 文件，这里区分简体、繁体等，如果语言是非中文则这里是空
	MyLanguage   string `json:"my_language" binding:"required"`                // 这个是本程序定义的语言类型，见 my_language.go 文件
	StoreRPath   string `json:"store_r_path"`                                  // 字幕存在出本地的哪里相对路径上，cache/CSF-ShareSubCache
	ExtraPreName string `json:"extra_pre_name" binding:"required"`             // 字幕额外的命名信息，指 Emby 字幕命名格式(简英,subhd)，的 subhd
	SHA256       string `json:"sha_256" binding:"required"`                    // 当前文件的 sha256 的值
	IsSend       bool   `json:"is_send"`                                       // 是否已经发送
	IsMovie      bool   `json:"is_movie"`                                      // 不是电影就是连续剧
	IMDBInfoID   string `json:"imdb_info_id"  binding:"required"`              // IMDB ID
}

func NewVideoSubInfo(feature string, subName string, languageISO string, isDouble bool, chineseISO string, myLanguage string, storeFPath string, extraPreName string, sha256String string, IsMovie bool) *VideoSubInfo {
	return &VideoSubInfo{Feature: feature, SubName: subName, LanguageISO: languageISO, IsDouble: isDouble, ChineseISO: chineseISO, MyLanguage: myLanguage, StoreRPath: storeFPath, ExtraPreName: extraPreName, SHA256: sha256String, IsMovie: IsMovie}
}
