add crud for custom transcode selection profile

This commit is contained in:
sentriz
2020-03-11 18:40:04 +00:00
parent 8d09e0d3b4
commit acadca6a02
8 changed files with 494 additions and 298 deletions

View File

@@ -102,15 +102,17 @@ type templateData struct {
User *db.User
Version string
// home
AlbumCount int
ArtistCount int
TrackCount int
RequestRoot string
RecentFolders []*db.Album
AllUsers []*db.User
LastScanTime time.Time
IsScanning bool
Playlists []*db.Playlist
AlbumCount int
ArtistCount int
TrackCount int
RequestRoot string
RecentFolders []*db.Album
AllUsers []*db.User
LastScanTime time.Time
IsScanning bool
Playlists []*db.Playlist
TranscodePreferences []*db.TranscodePreference
TranscodeProfiles []string
//
CurrentLastFMAPIKey string
CurrentLastFMAPISecret string

View File

@@ -9,6 +9,7 @@ import (
"senan.xyz/g/gonic/db"
"senan.xyz/g/gonic/scanner"
"senan.xyz/g/gonic/server/encode"
"senan.xyz/g/gonic/server/lastfm"
)
@@ -53,12 +54,20 @@ func (c *Controller) ServeHome(r *http.Request) *Response {
i, _ := strconv.ParseInt(tStr, 10, 64)
data.LastScanTime = time.Unix(i, 0)
}
// ** begin playlists box
//
user := r.Context().Value(CtxUser).(*db.User)
// ** begin playlists box
c.DB.
Where("user_id=?", user.ID).
Limit(20).
Find(&data.Playlists)
// ** begin transcoding box
c.DB.
Where("user_id=?", user.ID).
Find(&data.TranscodePreferences)
for profile := range encode.Profiles {
data.TranscodeProfiles = append(data.TranscodeProfiles, profile)
}
//
return &Response{
template: "home.tmpl",
@@ -294,3 +303,44 @@ func (c *Controller) ServeUploadPlaylistDo(r *http.Request) *Response {
flashW: errors,
}
}
func (c *Controller) ServeCreateTranscodePrefDo(r *http.Request) *Response {
client := r.FormValue("client")
profile := r.FormValue("profile")
if client == "" {
return &Response{
redirect: "/admin/home",
flashW: []string{"please provide a client name"},
}
}
user := r.Context().Value(CtxUser).(*db.User)
pref := db.TranscodePreference{
UserID: user.ID,
Client: client,
Profile: profile,
}
if err := c.DB.Create(&pref).Error; err != nil {
return &Response{
redirect: "/admin/home",
flashW: []string{fmt.Sprintf("could not create preference: %v", err)},
}
}
return &Response{redirect: "/admin/home"}
}
func (c *Controller) ServeDeleteTranscodePrefDo(r *http.Request) *Response {
user := r.Context().Value(CtxUser).(*db.User)
client := r.URL.Query().Get("client")
if client == "" {
return &Response{
err: "please provide a client",
code: 400,
}
}
c.DB.
Where("user_id=? AND client=?", user.ID, client).
Delete(db.TranscodePreference{})
return &Response{
redirect: "/admin/home",
}
}

View File

@@ -108,6 +108,8 @@ func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) {
routUser.Handle("/link_lastfm_do", ctrl.H(ctrl.ServeLinkLastFMDo))
routUser.Handle("/unlink_lastfm_do", ctrl.H(ctrl.ServeUnlinkLastFMDo))
routUser.Handle("/upload_playlist_do", ctrl.H(ctrl.ServeUploadPlaylistDo))
routUser.Handle("/create_transcode_pref_do", ctrl.H(ctrl.ServeCreateTranscodePrefDo))
routUser.Handle("/delete_transcode_pref_do", ctrl.H(ctrl.ServeDeleteTranscodePrefDo))
// ** begin admin routes (if session is valid, and is admin)
routAdmin := routUser.NewRoute().Subrouter()
routAdmin.Use(ctrl.WithAdminSession)