Sha256: 2814dffb6b60e8db9e7c1e8469d3242e16e6137ce38599569d0c591a9b5c75bd

Contents?: true

Size: 1.49 KB

Versions: 14

Compression:

Stored size: 1.49 KB

Contents

module ActiveMocker
  module ActiveRecord

    class Schema

      def self.define(options, &block)
        version = options[:version]
        search_result = search_cache(@table_search)
        search_result unless search_result.nil?
        schema = parse
        schema.instance_eval(&block)
        schema
      end

      def self.parse
        SchemaParser.new(@table_search)
      end

      def self.add_to_cache(table)
        @tables_cache ||= []
        @tables_cache << table unless table.nil?
      end

      def self.search_cache(table_name)
        @tables_cache ||= []
        @tables_cache.find do |h|
          h.name == table_name
        end
      end

      def self.clear_cache
        @tables_cache = []
      end

      def self.search(table_name)
        @table_search = table_name
        search_cache(table_name)
      end

    end

    class SchemaParser

      attr_reader :tables, :table_search

      def initialize(table_search)
        @table_search = table_search
        @tables = []
      end

      def create_table(name, options={}, &block)
        tables << Table.new(name, options[:id], CreateTable.new.instance_eval(&block))
      end

      def method_missing(meth, *args)
      end

    end
  end

  class CreateTable

    attr_reader :fields

    def initialize
      @fields = []
    end

    def method_missing(meth, *args)
      base_field meth, args
    end

    def base_field(type, args)
      fields << ActiveRecord::Field.new(args.shift, type, args)
    end

  end

end


Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
active_mocker-1.8.4 lib/active_mocker/active_record/schema.rb
active_mocker-1.8.3 lib/active_mocker/active_record/schema.rb
active_mocker-1.8.2 lib/active_mocker/active_record/schema.rb
active_mocker-1.8.1 lib/active_mocker/active_record/schema.rb
active_mocker-1.8 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.3 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.2 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.1 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.1rc lib/active_mocker/active_record/schema.rb
active_mocker-1.7 lib/active_mocker/active_record/schema.rb
active_mocker-1.7rc2 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.beta3 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.beta2 lib/active_mocker/active_record/schema.rb
active_mocker-1.7.beta1 lib/active_mocker/active_record/schema.rb