/**
 * Encapsulates a destroy operation as performed by a {@link Ext.data.proxy.Proxy proxy}.
 *
 * This class is instantiated by {@link Ext.data.Store stores} and {@link Ext.data.Model records}
 * and should not need to be instantiated in user code.
 */
Ext.define('Ext.data.operation.Destroy', {
    extend: 'Ext.data.operation.Operation',
    alias: 'data.operation.destroy',
    
    action: 'destroy',
 
    isDestroyOperation: true,
 
    order: 30,
 
    foreignKeyDirection: -1,
 
    doProcess: function(/* resultSet, request, response */) {
        var clientRecords = this.getRecords(),
            clientLen = clientRecords.length,
            i;
        
        for (= 0; i < clientLen; ++i) {
            clientRecords[i].setErased();
        }
    },
    
    doExecute: function() {
        return this.getProxy().erase(this);
    },
 
    getRecordData: function(record, operation) {
        var data = {},
            idField = record.idField,
            nameProperty = this.getNameProperty() || 'name';
 
        data[idField[nameProperty]] = record.id;
 
        return data;
    }
});