package com.adobe.arise.database
{
    import flash.data.SQLConnection;
    import flash.data.SQLStatement;
    import flash.events.SQLEvent;
    
    public class DeleteFeed
        extends DBOperation
    {
        private var feedId:Number;
        
        public function DeleteFeed(responder:DatabaseResponder, sql:XML, connection:SQLConnection, feedId:Number)
        {
            this.feedId = feedId;
            super(responder, sql, connection);
        }
        
        public function execute():void
        {
            deleteTopics();
        }
        
        private function deleteTopics():void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, deleteAuthors);
            stmt.text = sql.topics.deleteByFeedId;
            stmt.parameters[":feed_id"] = feedId;
            stmt.execute();            
        }
        
        private function deleteAuthors(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, deletePosts);
            stmt.text = sql.authors.deleteByFeedId;
            stmt.parameters[":feed_id"] = feedId;
            stmt.execute();            
        }

        private function deletePosts(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, deleteFeed);
            stmt.text = sql.posts.deleteByFeedId;
            stmt.parameters[":feed_id"] = feedId;
            stmt.execute();            
        }

        private function deleteFeed(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, dispatchEmptyResultEvent);
            stmt.text = sql.feeds.deleteByFeedId;
            stmt.parameters[":feed_id"] = feedId;
            stmt.execute();
        }
    }
}