rom-changeset 1.0.0.beta2 → 1.0.0.beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rom/changeset/delete.rb +0 -4
- data/lib/rom/changeset/pipe.rb +1 -9
- data/lib/rom/changeset/stateful.rb +2 -1
- data/lib/rom/changeset/update.rb +0 -4
- data/lib/rom/changeset/version.rb +1 -1
- data/lib/rom/changeset.rb +0 -18
- data/lib/rom/plugins/relation/changeset.rb +45 -1
- metadata +3 -4
- data/lib/rom/changeset/restricted.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e974c1c36fcff82e3b23b9f2a3cfea2e6b8de4a
|
4
|
+
data.tar.gz: c87a7913578f4091f9496b9b7676ebb8d797963e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63d0b84a39845c77a5ca20a2806cb736b010867549290d8a41a132f16703278d02e4d9ed75bf34c30c9dca7510e920cbfc9371ab6b2d62211a3f8d0a33ebb18f
|
7
|
+
data.tar.gz: dd10e1c4f3b82c80b576aa77c46b122e2355e7979df82a69e70f9b29518a6b060ed0d69f50e07f2b52f28731d1808e986a5cc372cac47889040f4acba46a728b
|
data/lib/rom/changeset/delete.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rom/changeset/restricted'
|
2
|
-
|
3
1
|
module ROM
|
4
2
|
class Changeset
|
5
3
|
# Changeset specialization for delete commands
|
@@ -9,8 +7,6 @@ module ROM
|
|
9
7
|
#
|
10
8
|
# @api public
|
11
9
|
class Delete < Changeset
|
12
|
-
include Restricted
|
13
|
-
|
14
10
|
command_type :delete
|
15
11
|
end
|
16
12
|
end
|
data/lib/rom/changeset/pipe.rb
CHANGED
@@ -76,16 +76,8 @@ module ROM
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def with(opts)
|
80
|
-
if opts.empty?
|
81
|
-
self
|
82
|
-
else
|
83
|
-
Pipe.new(processor, options.merge(opts))
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
79
|
def new(processor, opts = EMPTY_HASH)
|
88
|
-
Pipe.new(processor, options.merge(opts))
|
80
|
+
Pipe.new(processor, opts.empty? ? options : options.merge(opts))
|
89
81
|
end
|
90
82
|
end
|
91
83
|
end
|
@@ -92,13 +92,14 @@ module ROM
|
|
92
92
|
def self.inherited(klass)
|
93
93
|
return if klass == ROM::Changeset
|
94
94
|
super
|
95
|
-
klass.instance_variable_set(:@__pipes__, pipes
|
95
|
+
klass.instance_variable_set(:@__pipes__, pipes.dup)
|
96
96
|
end
|
97
97
|
|
98
98
|
# @api private
|
99
99
|
def self.pipes
|
100
100
|
@__pipes__
|
101
101
|
end
|
102
|
+
@__pipes__ = EMPTY_ARRAY
|
102
103
|
|
103
104
|
# Pipe changeset's data using custom steps define on the pipe
|
104
105
|
#
|
data/lib/rom/changeset/update.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rom/changeset/restricted'
|
2
|
-
|
3
1
|
module ROM
|
4
2
|
class Changeset
|
5
3
|
# Changeset specialization for update commands
|
@@ -15,8 +13,6 @@ module ROM
|
|
15
13
|
#
|
16
14
|
# @api public
|
17
15
|
class Update < Stateful
|
18
|
-
include Restricted
|
19
|
-
|
20
16
|
command_type :update
|
21
17
|
|
22
18
|
# Commit update changeset if there's a diff
|
data/lib/rom/changeset.rb
CHANGED
@@ -71,24 +71,6 @@ module ROM
|
|
71
71
|
}
|
72
72
|
end
|
73
73
|
|
74
|
-
# Return a new changeset with updated options
|
75
|
-
#
|
76
|
-
# @example
|
77
|
-
# class NewUser < ROM::Changeset::Create[:users]
|
78
|
-
# option :token_generator
|
79
|
-
# end
|
80
|
-
#
|
81
|
-
# changeset = user_repo.changeset(NewUser).with(token_generator: my_token_gen)
|
82
|
-
#
|
83
|
-
# @param [Hash] new_options The new options
|
84
|
-
#
|
85
|
-
# @return [Changeset]
|
86
|
-
#
|
87
|
-
# @api public
|
88
|
-
def with(new_options)
|
89
|
-
self.class.new(relation, options.merge(new_options))
|
90
|
-
end
|
91
|
-
|
92
74
|
# Return a new changeset with provided relation
|
93
75
|
#
|
94
76
|
# New options can be provided too
|
@@ -24,7 +24,51 @@ module ROM
|
|
24
24
|
|
25
25
|
# Create a changeset for a relation
|
26
26
|
#
|
27
|
-
# @
|
27
|
+
# @overload changeset(type, data)
|
28
|
+
# Create a changeset of one of predefined types
|
29
|
+
#
|
30
|
+
# @example creating a record
|
31
|
+
# users.
|
32
|
+
# changeset(:create, name: 'Jane').
|
33
|
+
# commit
|
34
|
+
# # => #<ROM::Struct::User id=1 name="Jane">
|
35
|
+
#
|
36
|
+
# @example updating a record
|
37
|
+
# users.
|
38
|
+
# by_pk(1).
|
39
|
+
# changeset(:update, name: 'Jack').
|
40
|
+
# commit
|
41
|
+
# # => #<ROM::Struct::User id=1 name="Jane">
|
42
|
+
#
|
43
|
+
# @example providing data as a separate step
|
44
|
+
# changeset = users.changeset(:create)
|
45
|
+
# jack = changeset.data(name: 'Jack').commit
|
46
|
+
# jane = changeset.data(name: 'Jane').commit
|
47
|
+
#
|
48
|
+
# @example using a command graph
|
49
|
+
# users.
|
50
|
+
# changeset(
|
51
|
+
# :create,
|
52
|
+
# name: "Jane",
|
53
|
+
# posts: [{ title: "Something about aliens" }]
|
54
|
+
# )
|
55
|
+
#
|
56
|
+
# @param [Symbol] type The changeset type
|
57
|
+
# @param [Hash] data
|
58
|
+
# @return [Changeset]
|
59
|
+
#
|
60
|
+
# @overload changeset(changeset_class, data)
|
61
|
+
# @example using a custom changeset class
|
62
|
+
# class NewUser < ROM::Changeset::Create
|
63
|
+
# map do |tuple|
|
64
|
+
# { **tuple, name: tuple.values_at(:first_name, :last_name).join(' ') }
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# users.changeset(NewUser, first_name: 'John', last_name: 'Doe').commit
|
69
|
+
#
|
70
|
+
# @param [Class] changeset_class A custom changeset class
|
71
|
+
# @return [Changeset]
|
28
72
|
#
|
29
73
|
# @api public
|
30
74
|
def changeset(type, data = EMPTY_HASH)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-changeset
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-core
|
@@ -101,7 +101,6 @@ files:
|
|
101
101
|
- lib/rom/changeset/create.rb
|
102
102
|
- lib/rom/changeset/delete.rb
|
103
103
|
- lib/rom/changeset/pipe.rb
|
104
|
-
- lib/rom/changeset/restricted.rb
|
105
104
|
- lib/rom/changeset/stateful.rb
|
106
105
|
- lib/rom/changeset/update.rb
|
107
106
|
- lib/rom/changeset/version.rb
|
@@ -126,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
125
|
version: 1.3.1
|
127
126
|
requirements: []
|
128
127
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.6.
|
128
|
+
rubygems_version: 2.6.11
|
130
129
|
signing_key:
|
131
130
|
specification_version: 4
|
132
131
|
summary: Changeset abstraction for rom-rb
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module ROM
|
2
|
-
class Changeset
|
3
|
-
module Restricted
|
4
|
-
# Return a command restricted by the changeset's relation
|
5
|
-
#
|
6
|
-
# @see Changeset#command
|
7
|
-
#
|
8
|
-
# @api private
|
9
|
-
def command
|
10
|
-
super.new(relation)
|
11
|
-
end
|
12
|
-
|
13
|
-
# Restrict changeset's relation by its PK
|
14
|
-
#
|
15
|
-
# @example
|
16
|
-
# repo.changeset(UpdateUser).by_pk(1).data(name: "Jane")
|
17
|
-
#
|
18
|
-
# @param [Object] pk
|
19
|
-
#
|
20
|
-
# @return [Changeset]
|
21
|
-
#
|
22
|
-
# @api public
|
23
|
-
def by_pk(pk, data = EMPTY_HASH)
|
24
|
-
new(relation.by_pk(pk), __data__: data)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|