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  }