mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package src
|
|
|
|
import (
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
type MetadataService struct {
|
|
database *sqlx.DB
|
|
}
|
|
|
|
func (s MetadataService) GetMetadata(path string, sha string) (*MediaInfo, error) {
|
|
var ret MediaInfo
|
|
rows, err := s.database.Queryx(`
|
|
select * from info as i where i.sha=$1;
|
|
select * from videos as v where v.sha=$1;
|
|
select * from audios as a where a.sha=$1;
|
|
select * from subtitles as s where s.sha=$1;
|
|
select * from chapters as c where c.sha=$1;
|
|
`,
|
|
sha,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
if !rows.Next() {
|
|
if err = rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
// TODO: retrieve mediainfo from file + store them in db.
|
|
return &ret, nil
|
|
}
|
|
rows.StructScan(ret)
|
|
|
|
rows.NextResultSet()
|
|
for rows.Next() {
|
|
var video Video
|
|
rows.StructScan(video)
|
|
ret.Videos = append(ret.Videos, video)
|
|
}
|
|
|
|
rows.NextResultSet()
|
|
for rows.Next() {
|
|
var audio Audio
|
|
rows.StructScan(audio)
|
|
ret.Audios = append(ret.Audios, audio)
|
|
}
|
|
|
|
rows.NextResultSet()
|
|
for rows.Next() {
|
|
var subtitle Subtitle
|
|
rows.StructScan(subtitle)
|
|
ret.Subtitles = append(ret.Subtitles, subtitle)
|
|
}
|
|
|
|
rows.NextResultSet()
|
|
for rows.Next() {
|
|
var chapter Chapter
|
|
rows.StructScan(chapter)
|
|
ret.Chapters = append(ret.Chapters, chapter)
|
|
}
|
|
|
|
return &ret, nil
|
|
}
|