module Sinja::Sequel

Constants

VERSION

Public Class Methods

registered(app) click to toggle source
# File lib/sinja/sequel.rb, line 7
def self.registered(app)
  app.helpers Helpers
end

Public Instance Methods

resource(res, try_convert=:to_i, **opts, &block) click to toggle source
Calls superclass method
# File lib/sinja/sequel.rb, line 11
def resource(res, try_convert=:to_i, **opts, &block)
  klass = opts.fetch(:class) { res.to_s.classify.constantize }

  super(res, **opts) do
    register Resource

    helpers do
      define_method(:default_dataset) do
        klass.dataset
      end

      alias_method :dataset, :default_dataset

      define_method(:find) do |id|
        dataset.with_pk(proc(&try_convert).(id))
      end
    end

    show

    show_many do |ids|
      dataset.where_all(klass.primary_key=>ids.map!(&try_convert))
    end

    index do
      dataset
    end

    create do |attr|
      next_pk klass.new(attr)
    end

    update do |attr|
      resource.set(attr)
      resource.save_changes(:validate=>false)
    end

    destroy do
      resource.destroy
    end

    instance_eval(&block) if block
  end
end