github.com/GregorioDiStefano/go-file-storage@v0.0.0-20161001105139-5707ab351525/fileRemovalScheduler.go (about) 1 package main 2 3 import ( 4 "time" 5 6 "github.com/GregorioDiStefano/go-file-storage/log" 7 "github.com/GregorioDiStefano/go-file-storage/models" 8 "github.com/GregorioDiStefano/go-file-storage/utils" 9 ) 10 11 //Iterate over all file stored, and delete files that have not been accessed since DeleteAfterSecondsLastAccessed 12 func deleteUnusedFile() { 13 for { 14 time.Sleep(time.Duration(utils.Config.GetInt("file_check_freq")) * time.Second) 15 db := models.Database{Filename: models.DbFilename, Bucket: models.Bucket} 16 for _, v := range *db.GetAllKeys() { 17 sf := db.ReadStoredFile(v) 18 delta := time.Now().Sub(sf.LastAccess) 19 if sf.Deleted == false && int64(delta.Seconds()) > int64(utils.Config.GetInt("delete_after_seconds")) { 20 log.WithFields(log.Fields{"filename": sf.FileName, "last_accessed": sf.LastAccess, "upload_time": sf.UploadTime}).Infoln("Removed old file.") 21 sf.Deleted = true 22 db.WriteStoredFile(*sf) 23 } 24 } 25 } 26 }