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 }