github.com/pbberlin/tools@v0.0.0-20160910141205-7aa5421c2169/os/fsi/dsfs/31_fs_impl_other.go (about)

     1  package dsfs
     2  
     3  import (
     4  	"google.golang.org/appengine/datastore"
     5  	"google.golang.org/appengine/memcache"
     6  )
     7  
     8  // DeleteAll deletes across all roots
     9  // DeleteAll deletes by kind alone.
    10  func (fs *dsFileSys) DeleteAll() (string, error) {
    11  
    12  	msg := ""
    13  	{
    14  		q := datastore.NewQuery(tfil).KeysOnly()
    15  		var files []DsFile
    16  		keys, err := q.GetAll(fs.Ctx(), &files)
    17  		if err != nil {
    18  			msg += "could not get file keys\n"
    19  			return msg, err
    20  		}
    21  		if len(keys) >= 500 {
    22  			msg += "limited to 500 files. REPEAT operation.\n"
    23  			keys = keys[:500]
    24  		}
    25  
    26  		err = datastore.DeleteMulti(fs.Ctx(), keys)
    27  		if err != nil {
    28  			msg += "error deleting files\n"
    29  			return msg, err
    30  		}
    31  
    32  		msg += spf("%v files deleted\n", len(keys))
    33  
    34  	}
    35  
    36  	{
    37  		q := datastore.NewQuery(tdir).KeysOnly()
    38  		var dirs []DsDir
    39  		keys, err := q.GetAll(fs.Ctx(), &dirs)
    40  		if err != nil {
    41  			msg += "could not get dir keys\n"
    42  			return msg, err
    43  		}
    44  		if len(keys) >= 500 {
    45  			msg += "limited to 500 directories. REPEAT operation.\n"
    46  			keys = keys[:500]
    47  		}
    48  
    49  		err = datastore.DeleteMulti(fs.Ctx(), keys)
    50  		if err != nil {
    51  			msg += "error deleting directories\n"
    52  			return msg, err
    53  		}
    54  
    55  		msg += spf("%v directories deleted\n", len(keys))
    56  	}
    57  
    58  	err := memcache.Flush(fs.Ctx())
    59  	if err != nil {
    60  		msg += "error flushing memcache\n"
    61  		return msg, err
    62  	} else {
    63  		msg += "memcache flushed \n"
    64  	}
    65  
    66  	return msg, nil
    67  }