Sha256: f3241b5314579fb61d197bf7350144b0d52e8e1bdbf8f24262aca0f450bb2d32
Contents?: true
Size: 1.17 KB
Versions: 4
Compression:
Stored size: 1.17 KB
Contents
module JsonapiCompliable class DSL attr_accessor :sideloads, :default_filters, :extra_fields, :filters, :sorting, :pagination def initialize @sideloads = {} @filters = {} @default_filters = {} @extra_fields = {} @sorting = nil @pagination = nil end def includes(whitelist: nil, &blk) whitelist = JSONAPI::IncludeDirective.new(whitelist) if whitelist @sideloads = { whitelist: whitelist, custom_scope: blk } end def allow_filter(name, *args, &blk) opts = args.extract_options! aliases = [name, opts[:aliases]].flatten.compact @filters[name.to_sym] = { aliases: aliases, if: opts[:if], filter: blk } end def default_filter(name, &blk) @default_filters[name.to_sym] = { filter: blk } end def sort(&blk) @sorting = blk end def paginate(&blk) @pagination = blk end def extra_field(field, &blk) @extra_fields[field.keys.first] ||= [] @extra_fields[field.keys.first] << { name: field.values.first, proc: blk } end end end
Version data entries
4 entries across 4 versions & 1 rubygems