diff options
Diffstat (limited to 'rddb.go')
-rw-r--r-- | rddb.go | 36 |
1 files changed, 35 insertions, 1 deletions
@@ -84,6 +84,17 @@ type checkMusicGroupRequest struct { response chan checkMusicGroupResult } +type getMusicInfoResult struct { + norm_lvl int + trim_lvl int + err error +} + +type getMusicInfoRequest struct { + group string + response chan getMusicInfoResult +} + type RdDb struct { dbh *sql.DB password_cache map[string]string @@ -95,6 +106,8 @@ type RdDb struct { getShowInfoStmt *sql.Stmt checkMusicGroupChan chan checkMusicGroupRequest checkMusicGroupStmt *sql.Stmt + getMusicInfoChan chan getMusicInfoRequest + getMusicInfoStmt *sql.Stmt quit chan bool done chan bool } @@ -128,6 +141,9 @@ func (self *RdDb) init(conf *Config) (err error) { if self.checkMusicGroupStmt, err = self.dbh.Prepare("select count(*) from DROPBOXES where GROUP_NAME = ? and SET_USER_DEFINED like \"M;%\";"); err != nil { return } + if self.getMusicInfoStmt, err = self.dbh.Prepare("select NORMALIZATION_LEVEL,AUTOTRIM_LEVEL from DROPBOXES where DROPBOXES.GROUP_NAME = ?;"); err != nil { + return + } return } @@ -220,7 +236,7 @@ func (self *RdDb) getShowInfo(showid int) (title string, carts []int, norm_lvl i func (self *RdDb) checkMusicGroup(group string) (ismusic bool, err error) { var cnt int - err = self.checkMusicGroupStmt.QueryRow(group).Scan(&cnt) + err = self.getMusicInfoStmt.QueryRow(group).Scan(&cnt) if err != nil { if err == sql.ErrNoRows { err = nil @@ -232,6 +248,17 @@ func (self *RdDb) checkMusicGroup(group string) (ismusic bool, err error) { return } +func (self *RdDb) getMusicInfo(group string) (norm_lvl, trim_lvl int, err error) { + err = self.checkMusicGroupStmt.QueryRow(group).Scan(&norm_lvl, &trim_lvl) + if err != nil { + if err == sql.ErrNoRows { + err = fmt.Errorf("music pool '%d' not found", group) + } + return + } + return +} + func (self *RdDb) dispatchRequests() { defer func() { self.done <- true }() for { @@ -250,6 +277,9 @@ func (self *RdDb) dispatchRequests() { case req := <-self.checkMusicGroupChan: ismusic, err := self.checkMusicGroup(req.group) req.response <- checkMusicGroupResult{ismusic, err} + case req := <-self.getMusicInfoChan: + norm_lvl, trim_lvl, err := self.getMusicInfo(req.group) + req.response <- getMusicInfoResult{norm_lvl, trim_lvl, err} } } } @@ -275,6 +305,9 @@ func (self *RdDb) Cleanup() { if self.checkMusicGroupStmt != nil { self.checkMusicGroupStmt.Close() } + if self.getMusicInfoStmt != nil { + self.getMusicInfoStmt.Close() + } } func NewRdDb(conf *Config) (db *RdDb, err error) { @@ -287,6 +320,7 @@ func NewRdDb(conf *Config) (db *RdDb, err error) { db.getGroupOfCartChan = make(chan getGroupOfCartRequest) db.getShowInfoChan = make(chan getShowInfoRequest) db.checkMusicGroupChan = make(chan checkMusicGroupRequest) + db.getMusicInfoChan = make(chan getMusicInfoRequest) if err = db.init(conf); err != nil { return |