Skip to content
Snippets Groups Projects
Commit 026e955b authored by Christian Pointner's avatar Christian Pointner
Browse files

add new api endpoint to fetch import logs

parent 4474d2f3
No related branches found
No related tags found
No related merge requests found
......@@ -81,8 +81,9 @@ func InstallHTTPHandler(r *gin.RouterGroup, st *store.Store, im *importer.Import
files.GET(":file-id", api.ReadFileOfShow)
files.PATCH(":file-id", api.PatchFileOfShow)
files.DELETE(":file-id", api.DeleteFileOfShow)
files.GET(":file-id/usage", api.ReadUsageOfFile)
files.GET(":file-id/logs", api.ReadLogsOfFile)
files.GET(":file-id/import", api.ReadImportOfFile)
files.DELETE(":file-id/import", api.CancelImportOfFile)
......
......@@ -210,3 +210,22 @@ func (api *API) ReadUsageOfFile(c *gin.Context) {
}
c.JSON(http.StatusOK, result)
}
func (api *API) ReadLogsOfFile(c *gin.Context) {
showID := c.Param("show-id")
if authorized, _ := authorizeRequest(c, showID); !authorized {
return
}
id, err := idFromString(c.Param("file-id"))
if err != nil {
c.JSON(http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()})
return
}
result := FileImportLogs{}
if result.Logs, err = api.store.GetImportLogs(showID, id); err != nil {
sendError(c, err)
return
}
c.JSON(http.StatusOK, result)
}
......@@ -67,6 +67,10 @@ type FileUsageListing struct {
} `json:"results"`
}
type FileImportLogs struct {
Logs store.ImportLogs `json:"results"`
}
// Playlists
type PlaylistsListing struct {
Playlists store.Playlists `json:"results"`
......
......@@ -119,3 +119,27 @@ func (st *Store) AddImportLog(show string, id uint64, importStep string, log *Lo
return st.db.Create(&ImportLog{File: File{ID: id, ShowName: show}, ImportStep: importStep, Encoded: encodedLog}).Error
}
func (st *Store) GetImportLogs(show string, id uint64) (logs ImportLogs, err error) {
cnt := 0
if err = st.db.Model(&File{ID: id}).Where("show_name = ?", show).Count(&cnt).Error; err != nil {
return
}
if cnt == 0 {
return nil, ErrNotFound
}
var results []ImportLog
if err = st.db.Where("file_id = ?", id).Find(&results).Error; err != nil {
return
}
logs = make(map[string]*Log)
for _, result := range results {
l := &Log{}
if err = l.decode(result.Encoded); err != nil {
return
}
logs[result.ImportStep] = l
}
return
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment