Sha256: d718392088dcc3f77f47e95abf4d83da09e3d4860650ec80f2c610f1fb94e955

Contents?: true

Size: 713 Bytes

Versions: 1

Compression:

Stored size: 713 Bytes

Contents

module SQLTree::Node

  class DeleteQuery < Base

    attr_accessor :table, :where

    def initialize(table, where = nil)
      @table, @where = table, where
    end

    def to_sql
      sql = "DELETE FROM #{self.quote_var(table)}"
      sql << " WHERE #{where.to_sql}" if self.where
      sql
    end
    
    def self.parse(tokens)
      tokens.consume(SQLTree::Token::DELETE)
      tokens.consume(SQLTree::Token::FROM)
      delete_query = self.new(SQLTree::Node::Variable.parse(tokens).name)
      if tokens.peek == SQLTree::Token::WHERE
        tokens.consume(SQLTree::Token::WHERE)
        delete_query.where = SQLTree::Node::Expression.parse(tokens)
      end
      return delete_query
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sql_tree-0.1.0 lib/sql_tree/node/delete_query.rb