Package models

Source Code of models.CascadingDelete

package models;

import play.Logger;
import tasks.FileMoveDeleter;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.FetchOptions;
import com.google.common.base.Preconditions;

public class CascadingDelete {

    private CascadingDelete() {}
   
    /**
     * Performs cascading delete on all data related to the given user.
     *
     * @param user the user to delete
     */
    public static void delete(User user) {
        Preconditions.checkNotNull(user);
       
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
        // Double limit to ensure we get every single rule
        FetchOptions fo = FetchOptions.Builder.withLimit(Rule.MAX_RULES * 2);
        ds.delete(DatastoreUtil.queryKeys(Rule.byOwner(user.getKey()), fo, Rule.MAPPER));
        Logger.info("Deleted rules for user: %s", user);

        // 2. delete user
        user.delete();
        Logger.info("Deleted user: %s", user);

        // 3. enqueue a delete task to delete file moves
        FileMoveDeleter.submit(user);
    }
}
TOP

Related Classes of models.CascadingDelete

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.