init
This commit is contained in:
commit
fa47df6d89
22 changed files with 1724 additions and 0 deletions
55
db.go
Normal file
55
db.go
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"stream-poc2/model"
|
||||
)
|
||||
|
||||
func pathForMedia(mediaID string) string {
|
||||
return path.Join("db", mediaID)
|
||||
}
|
||||
|
||||
var metadataCache = make(map[string]model.MediaMetadata) // metadata is currently immutable, so we can make it simple here
|
||||
|
||||
func loadMediaMetadata(id string) (model.MediaMetadata, error) {
|
||||
var metadata model.MediaMetadata
|
||||
var ok bool
|
||||
|
||||
metadata, ok = metadataCache[id]
|
||||
if ok {
|
||||
return metadata, nil
|
||||
}
|
||||
|
||||
log.Printf("metadata for %s not found in cache... loading...", id)
|
||||
|
||||
mediaPath := pathForMedia(id)
|
||||
if !isDir(mediaPath) {
|
||||
log.Println("media path dir does not exists", mediaPath)
|
||||
return model.MediaMetadata{}, os.ErrNotExist
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(path.Join(mediaPath, "meta.json"), os.O_RDONLY, 0)
|
||||
if err != nil {
|
||||
log.Println("Failed ot open file:", err)
|
||||
return model.MediaMetadata{}, err
|
||||
}
|
||||
defer func(f *os.File) {
|
||||
err := f.Close()
|
||||
if err != nil {
|
||||
log.Println("failed to close metadata file:", err)
|
||||
}
|
||||
}(f)
|
||||
|
||||
err = json.NewDecoder(f).Decode(&metadata)
|
||||
if err != nil {
|
||||
log.Println("Failed to load metadata:", metadata)
|
||||
return model.MediaMetadata{}, err
|
||||
}
|
||||
|
||||
metadataCache[id] = metadata
|
||||
|
||||
return metadata, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue