lib/svelte_on_rails/active_record_extensions.rb



# lib/svelte_on_rails/active_record_extensions.rb
module SvelteOnRails
  module ActiveRecordExtensions
    # def self.included(base)
    #   unless defined?(ActiveRecord::Base) && base.ancestors.include?(ActiveRecord::Base)
    #     raise 'SvelteOnRails::ActiveRecordExtensions can only be included in ActiveRecord models'
    #   end
    # end

    # Returns a hash of attributes, methods, and associations formatted for Svelte components
    def to_svelte(*attributes, **associations)
      @to_svelte ||= begin

                       cl = SvelteOnRails::Lib::SvelteAttributes
                       r = cl.new.calculate_instance(self, attributes, associations)
                       r.first.merge({self.class.to_s.underscore => r[1]})

                     end
    end

  end

  module ActiveRecordClassExtensions
    def to_svelte(*attributes, **associations)
      @to_svelte ||= begin
                       cl = SvelteOnRails::Lib::SvelteAttributes
                       cl.new.calculate_class(self, attributes, associations)
                     end
    end
  end

  module ActiveRecordRelationExtensions
    def to_svelte(*attributes, **associations)
      @to_svelte ||= begin
                       cl = SvelteOnRails::Lib::SvelteAttributes
                       cl.new.calculate_relation(self, attributes, associations)
                     end
    end
  end

end