snfoil 0.4.1 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc47fb191f1f5d56697c25c2b962335e18f73a1e82412878abeed31598af1ca5
4
- data.tar.gz: 8b76658fdc27340fb775c3031cc77e34cf59677047e04daeae3b4b5e77784970
3
+ metadata.gz: 8691b33751a878d5963ff71517fc31a11e75d2be79fa5816155f62f13d490042
4
+ data.tar.gz: c97c4b4f5e17ccb51ba00bfca92e17243c93e591ee1e7967021bedeb8db3d5ce
5
5
  SHA512:
6
- metadata.gz: 254408859377671a1882d5737827596e6ec12b9338bc5cdd388046a70e8e684b2536dbbaff8a2851abb3c9722bfe25452a1bf9201d99ff44f55aea52830fd6b7
7
- data.tar.gz: 6aa2d31a626697299a8c5afb67cfc901395e469fffe523a5fc6c18017014ae370b2c209cc657d15fce16e1c6706dc678000b4f56e742cee2e066066c6dc55b54
6
+ metadata.gz: d40b1751013aa15d36752126f8d0950c38b53c370ec6be45b62a7ebbcfd6744bd17803dd63b3e32dba5659e07c54b5b67e5c594adc07341bd2f156344cd545b3
7
+ data.tar.gz: 8c17c0a10e1fa7507596ea19d34a4af9ca3c718e21b14bc200ef55c6f0afa18e2ecd5a999631caa67b0a67bf6eca269cab4671c9cc57252306b59366a1375cc7
@@ -10,6 +10,8 @@ require_relative 'sn_foil/contexts/destroy_context'
10
10
  require_relative 'sn_foil/context'
11
11
  require_relative 'sn_foil/policy'
12
12
  require_relative 'sn_foil/searcher'
13
+ require_relative 'sn_foil/adapters/orms/base_adapter'
14
+ require_relative 'sn_foil/adapters/orms/active_record'
13
15
  require 'active_support/core_ext/module/attribute_accessors'
14
16
  require 'logger'
15
17
 
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'base_adapter'
4
+
3
5
  module SnFoil
4
6
  module Adapters
5
7
  module ORMs
6
8
  class ActiveRecord < SnFoil::Adapters::ORMs::BaseAdapter
7
- def new(*params)
8
- self.class.new(__getobj__.new(*params))
9
+ def new(**params)
10
+ self.class.new(__getobj__.new(params))
9
11
  end
10
12
 
11
13
  def all
@@ -21,7 +23,7 @@ module SnFoil
21
23
  __getobj__.destroyed?
22
24
  end
23
25
 
24
- def attributes=(*attributes)
26
+ def attributes=(attributes)
25
27
  __getobj__.attributes = attributes
26
28
  end
27
29
  end
@@ -4,7 +4,7 @@ module SnFoil
4
4
  module Adapters
5
5
  module ORMs
6
6
  class BaseAdapter < SimpleDelegator
7
- def new(*_params)
7
+ def new(**_params)
8
8
  raise NotImplementedError, '#new not implemented in adapter'
9
9
  end
10
10
 
@@ -20,7 +20,7 @@ module SnFoil
20
20
  raise NotImplementedError, '#destroy not implemented in adapter'
21
21
  end
22
22
 
23
- def attributes=(**_attributes)
23
+ def attributes=(_attributes)
24
24
  raise NotImplementedError, '#attributes= not implemented in adapter'
25
25
  end
26
26
  end
@@ -15,8 +15,8 @@ module SnFoil
15
15
  end
16
16
 
17
17
  class_methods do
18
- def build(params:, user: nil, **options)
19
- new(user).build(**options, params: params)
18
+ def build(params:, entity: nil, **options)
19
+ new(entity).build(**options, params: params)
20
20
  end
21
21
  end
22
22
 
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_create_hooks, :i_before_create_hooks, :i_after_create_hooks,
19
19
  :i_after_create_success_hooks, :i_after_create_failure_hooks
20
- def create(params:, user: nil, **options)
21
- new(user).create(**options, params: params)
20
+ def create(params:, entity: nil, **options)
21
+ new(entity).create(**options, params: params)
22
22
  end
23
23
 
24
24
  def setup_create(method = nil, **options, &block)
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_destroy_hooks, :i_before_destroy_hooks, :i_after_destroy_hooks,
19
19
  :i_after_destroy_success_hooks, :i_after_destroy_failure_hooks
20
- def destroy(id:, user: nil, **options)
21
- new(user).destroy(**options, id: id)
20
+ def destroy(id:, entity: nil, **options)
21
+ new(entity).destroy(**options, id: id)
22
22
  end
23
23
 
24
24
  def setup_destroy(method = nil, **options, &block)
@@ -15,8 +15,8 @@ module SnFoil
15
15
  class_methods do
16
16
  attr_reader :i_searcher, :i_setup_index_hooks
17
17
 
18
- def index(params: {}, user: nil, **options)
19
- new(user).index(**options, params: params)
18
+ def index(params: {}, entity: nil, **options)
19
+ new(entity).index(**options, params: params)
20
20
  end
21
21
 
22
22
  def searcher(klass = nil)
@@ -38,13 +38,13 @@ module SnFoil
38
38
  self.class.i_setup_index_hooks || []
39
39
  end
40
40
 
41
- def index(params:, **options)
41
+ def index(**options)
42
42
  options[:action] = :index
43
43
  options = before_setup_index(**options)
44
44
  authorize(nil, :index?, **options)
45
45
  options.fetch(:searcher) { searcher }
46
46
  .new(scope: scope.resolve)
47
- .search(params: params)
47
+ .search(options.fetch(:params) { {} })
48
48
  end
49
49
 
50
50
  def setup_index(**options)
@@ -42,13 +42,13 @@ module SnFoil
42
42
  self.class.i_setup_hooks || []
43
43
  end
44
44
 
45
- attr_reader :user
46
- def initialize(user = nil)
47
- @user = user
45
+ attr_reader :entity
46
+ def initialize(entity = nil)
47
+ @entity = entity
48
48
  end
49
49
 
50
50
  def authorize(object, action, **options)
51
- return unless user # Add logging
51
+ return unless entity # Add logging
52
52
 
53
53
  policy = lookup_policy(object, options)
54
54
  raise Pundit::NotAuthorizedError, query: action, record: object, policy: policy unless policy.public_send(action)
@@ -59,7 +59,7 @@ module SnFoil
59
59
  def scope(object_class = nil, **options)
60
60
  object_class ||= model
61
61
  policy_name = lookup_policy(object_class, options).class.name
62
- "#{policy_name}::Scope".safe_constantize.new(wrap_object(object_class), user)
62
+ "#{policy_name}::Scope".safe_constantize.new(wrap_object(object_class), entity)
63
63
  end
64
64
 
65
65
  def wrap_object(object)
@@ -103,11 +103,11 @@ module SnFoil
103
103
 
104
104
  def lookup_policy(object, options)
105
105
  lookup = if options[:policy]
106
- options[:policy].new(user, object)
106
+ options[:policy].new(entity, object)
107
107
  elsif policy
108
- policy.new(user, object)
108
+ policy.new(entity, object)
109
109
  else
110
- Pundit.policy!(user, object)
110
+ Pundit.policy!(entity, object)
111
111
  end
112
112
 
113
113
  lookup.options = options if lookup.respond_to? :options=
@@ -15,8 +15,8 @@ module SnFoil
15
15
  class_methods do
16
16
  attr_reader :i_setup_show_hooks
17
17
 
18
- def show(id:, user: nil, **options)
19
- new(user).show(**options, id: id)
18
+ def show(id:, entity: nil, **options)
19
+ new(entity).show(**options, id: id)
20
20
  end
21
21
 
22
22
  def setup_show(method = nil, **options, &block)
@@ -17,8 +17,8 @@ module SnFoil
17
17
  class_methods do
18
18
  attr_reader :i_setup_update_hooks, :i_before_update_hooks, :i_after_update_hooks,
19
19
  :i_after_update_success_hooks, :i_after_update_failure_hooks
20
- def update(id:, params:, user: nil, **options)
21
- new(user).update(**options, id: id, params: params)
20
+ def update(id:, params:, entity: nil, **options)
21
+ new(entity).update(**options, id: id, params: params)
22
22
  end
23
23
 
24
24
  def setup_update(method = nil, **options, &block)
@@ -63,7 +63,7 @@ module SnFoil
63
63
  if setup.is_a?(Symbol) || setup.is_a?(String)
64
64
  send(setup, filtered_scope, params)
65
65
  else
66
- setup.call(filtered_scope, params)
66
+ instance_exec filtered_scope, params, &setup
67
67
  end
68
68
  end
69
69
 
@@ -78,7 +78,7 @@ module SnFoil
78
78
 
79
79
  return send(i_filter[:method], filtered_scope, params) if i_filter[:method]
80
80
 
81
- i_filter[:block].call(filtered_scope, params)
81
+ instance_exec filtered_scope, params, &i_filter[:block]
82
82
  end
83
83
 
84
84
  def filter_valid?(i_filter, params)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SnFoil
4
- VERSION = '0.4.1'
4
+ VERSION = '0.5.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snfoil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Howes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-04 00:00:00.000000000 Z
12
+ date: 2020-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.1'
20
+ version: 5.2.4.3
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '5.1'
27
+ version: 5.2.4.3
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: logger
30
30
  requirement: !ruby/object:Gem::Requirement