Sha256: d13e7ffdaf9a52e35c1c52239060b0a6fb085ddfd8396c1bb1beeec8e5176ae4

Contents?: true

Size: 1.23 KB

Versions: 10

Compression:

Stored size: 1.23 KB

Contents

require 'sequel'
require 'clevic/model_column.rb'

module Sequel
  module Plugins
    module Meta
      # plugin :meta calls this.
      # model is the model class. The rest is whatever options are
      # in the plugin call
      #  plugin :meta
      def self.configure(model, options = {})
        model.instance_eval do
          # store model-related stuff here
        end
      end

      module ClassMethods
        def meta
          if @meta.nil?
            @meta = {}
            db_schema.each do |key,value|
              @meta[key] = ModelColumn.new( key, value.merge( :association => false ) )
            end

            association_reflections.each do |key,value|
              @meta[key] = ModelColumn.new( key, value.merge( :association => true ) )
            end
          end
          @meta
        end

        # reload from current metadata
        def meta!
          @meta = nil
          meta
        end

        # column and relations, but not keys for defined relations
        def attributes
          meta.reject do |column,model_column|
            meta.values.map( &:keys ).include?( [ column ] )
          end
        end

      end

      module InstanceMethods
      end
    end
  end
end

Sequel::Model.plugin :meta

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
clevic-0.14.6 lib/clevic/sequel_meta.rb
clevic-0.14.5 lib/clevic/sequel_meta.rb
clevic-0.14.4 lib/clevic/sequel_meta.rb
clevic-0.14.3 lib/clevic/sequel_meta.rb
clevic-0.14.2 lib/clevic/sequel_meta.rb
clevic-0.14.1 lib/clevic/sequel_meta.rb
clevic-0.14.0 lib/clevic/sequel_meta.rb
clevic-0.13.0.b12 lib/clevic/sequel_meta.rb
clevic-0.13.0.b11 lib/clevic/sequel_meta.rb
clevic-0.13.0.b10 lib/clevic/sequel_meta.rb