Class: PactBroker::Domain::OrderVersions
- Inherits:
-
Object
- Object
- PactBroker::Domain::OrderVersions
show all
- Includes:
- Logging
- Defined in:
- lib/pact_broker/domain/order_versions.rb
Defined Under Namespace
Classes: OrderableVersion
Class Method Summary
collapse
Methods included from Logging
included, #log_error, #log_with_tag, #measure_info
Class Method Details
.call(new_version) ⇒ Object
9
10
11
12
13
14
15
16
17
|
# File 'lib/pact_broker/domain/order_versions.rb', line 9
def self.call new_version
new_version.lock!
if PactBroker.configuration.order_versions_by_date
set_sequential_order(new_version)
else
set_semantic_order(new_version)
end
end
|
.increment_existing_version_order(existing_version) ⇒ Object
41
42
43
|
# File 'lib/pact_broker/domain/order_versions.rb', line 41
def self.increment_existing_version_order existing_version
set_order existing_version, existing_version.order + 1
end
|
.new_version_after_existing_version?(new_version, existing_version) ⇒ Boolean
.set_order(version, order) ⇒ Object
49
50
51
52
|
# File 'lib/pact_broker/domain/order_versions.rb', line 49
def self.set_order version, order
Sequel::Model.db[:versions].where(id: version.id).update(order: order)
end
|
.set_order_after_existing_version_order(new_version, existing_version) ⇒ Object
45
46
47
|
# File 'lib/pact_broker/domain/order_versions.rb', line 45
def self.set_order_after_existing_version_order new_version, existing_version
set_order new_version, existing_version.order + 1
end
|
.set_semantic_order(new_version) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/pact_broker/domain/order_versions.rb', line 23
def self.set_semantic_order(new_version)
order_set = false
PactBroker::Domain::Version.for_update.where(pacticipant_id: new_version.pacticipant_id).exclude(order: nil).reverse(:order).each do | existing_version |
if new_version_after_existing_version? new_version, existing_version
set_order_after_existing_version_order new_version, existing_version
order_set = true
break
else
increment_existing_version_order existing_version
end
end
if !order_set
set_order new_version, 0
end
end
|
.set_sequential_order(new_version) ⇒ Object
19
20
21
|
# File 'lib/pact_broker/domain/order_versions.rb', line 19
def self.set_sequential_order(new_version)
set_order new_version, PactBroker::Versions::Sequence.next_val
end
|