/
base.rb
100 lines (82 loc) · 2.03 KB
/
base.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# coding: utf-8
module Stoplight
module DataStore
class Base
# @return [Array<String>]
def names
fail NotImplementedError
end
# @param _name [String]
# @param _error [Exception]
def record_failure(_name, _error)
fail NotImplementedError
end
# @param _name [String]
def clear_failures(_name)
fail NotImplementedError
end
# @param _name [String]
# @return [Array<Failure>]
def failures(_name)
fail NotImplementedError
end
# @param _name [String]
# @return [Integer]
def threshold(_name)
fail NotImplementedError
end
# @param _name [String]
# @param _threshold [Integer]
# @return (see #threshold)
def set_threshold(_name, _threshold)
fail NotImplementedError
end
# @param _name [String]
# @return (see #attempts)
def record_attempt(_name)
fail NotImplementedError
end
# @param _name [String]
def clear_attempts(_name)
fail NotImplementedError
end
# @param _name [String]
# @return [Integer]
def attempts(_name)
fail NotImplementedError
end
# @param _name [String]
# @return [String]
def state(_name)
fail NotImplementedError
end
# @param _name [String]
# @param _state [String]
# @return [String]
def set_state(_name, _state)
# REVIEW: Should we clear failures here?
fail NotImplementedError
end
private
def validate_state!(state)
return if DataStore::STATES.include?(state)
fail ArgumentError, 'Invalid state'
end
def attempts_key
key('attempts')
end
def failures_key(name)
key('failures', name)
end
def states_key
key('states')
end
def thresholds_key
key('thresholds')
end
def key(slug, name = nil)
[KEY_PREFIX, name, slug].compact.join(':')
end
end
end
end