scanner: add item unchanged
This commit is contained in:
@@ -128,7 +128,8 @@ func (s *Scanner) cleanArtists() (int, error) {
|
|||||||
|
|
||||||
type ScanOptions struct {
|
type ScanOptions struct {
|
||||||
IsFull bool
|
IsFull bool
|
||||||
Path string // TODO
|
// TODO https://github.com/sentriz/gonic/issues/64
|
||||||
|
Path string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Scanner) Start(opts ScanOptions) error {
|
func (s *Scanner) Start(opts ScanOptions) error {
|
||||||
@@ -145,6 +146,7 @@ func (s *Scanner) Start(opts ScanOptions) error {
|
|||||||
s.seenTracksNew = 0
|
s.seenTracksNew = 0
|
||||||
s.seenTracksErr = 0
|
s.seenTracksErr = 0
|
||||||
// ** begin being walking
|
// ** begin being walking
|
||||||
|
log.Println("starting scan")
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
err := godirwalk.Walk(s.musicPath, &godirwalk.Options{
|
err := godirwalk.Walk(s.musicPath, &godirwalk.Options{
|
||||||
Callback: s.callbackItem,
|
Callback: s.callbackItem,
|
||||||
@@ -276,6 +278,13 @@ func (s *Scanner) callbackPost(fullPath string, info *godirwalk.Dirent) error {
|
|||||||
// ## begin handlers
|
// ## begin handlers
|
||||||
// ## begin handlers
|
// ## begin handlers
|
||||||
|
|
||||||
|
func (s *Scanner) itemUnchanged(stat, updated time.Time) bool {
|
||||||
|
if s.isFull {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return stat.Before(updated)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Scanner) handleFolder(it *item) error {
|
func (s *Scanner) handleFolder(it *item) error {
|
||||||
if s.trTxOpen {
|
if s.trTxOpen {
|
||||||
// a transaction still being open when we handle a folder can
|
// a transaction still being open when we handle a folder can
|
||||||
@@ -300,7 +309,7 @@ func (s *Scanner) handleFolder(it *item) error {
|
|||||||
First(folder).
|
First(folder).
|
||||||
Error
|
Error
|
||||||
if !gorm.IsRecordNotFoundError(err) &&
|
if !gorm.IsRecordNotFoundError(err) &&
|
||||||
it.stat.ModTime().Before(folder.UpdatedAt) {
|
s.itemUnchanged(it.stat.ModTime(), folder.UpdatedAt) {
|
||||||
// we found the record but it hasn't changed
|
// we found the record but it hasn't changed
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -334,7 +343,7 @@ func (s *Scanner) handleTrack(it *item) error {
|
|||||||
First(track).
|
First(track).
|
||||||
Error
|
Error
|
||||||
if !gorm.IsRecordNotFoundError(err) &&
|
if !gorm.IsRecordNotFoundError(err) &&
|
||||||
it.stat.ModTime().Before(track.UpdatedAt) {
|
s.itemUnchanged(it.stat.ModTime(), track.UpdatedAt) {
|
||||||
// we found the record but it hasn't changed
|
// we found the record but it hasn't changed
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user