dapr 0.3.2 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9b1861855feb00e3a85702db26126a648ed46ca976fa7067a65dcbea385bef6
4
- data.tar.gz: a394aef5db23216f4ae71bf245898224f4e5f1460a2ff3ca7f1c48b7c7f31919
3
+ metadata.gz: 5cef0f3267e0f07b9ccedcfb29297c49cd9c5cbc5d16e556c72c82821c1ff4c8
4
+ data.tar.gz: 23d4d7a6e7b0aa1e9482c08eae87290deb7b23508820c88bcb31f1e34432dad9
5
5
  SHA512:
6
- metadata.gz: 85fb99c3f34aacfaf3c90bf7fcde6d7eb5a8bc4e5821211fa54911e7ebc65c5304450b1dc426911683204fb8d7c1c5fa4d8d1596615574cdb7d5818a436111e2
7
- data.tar.gz: fc3e8692862885bf2b09efa26b09c8604f9fd19ceae1a681a7b6e24b3f4a66f2b16f474966b287bf9e4bbb3b63974497f40e792916c011ced5d6a7529310a48f
6
+ metadata.gz: d6f5d917f97ad175316c3552f48b02e3600e585f9cc13dd38ec7f511f84004c6596edc9891e0e2d4ad84797be87b6d5a587093b79c81b83b1054bf7404aac96c
7
+ data.tar.gz: 6516a0a52f7538992c413d0fdf8e888124d5840e3f149bdd9247a191763256fdd4a4912037acadccd4bfd87d3b736de163af77f917fee3e5cedb2c1d81a5889e
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.3.2"
2
+ ".": "0.4.0"
3
3
  }
data/.version.txt CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.4.0](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.3...v0.4.0) (2024-10-23)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **state:** Adds state management component ([#74](https://github.com/rubyists/dapr-ruby-client/issues/74))
9
+
10
+ ### Features
11
+
12
+ * **state:** Adds state management component ([#74](https://github.com/rubyists/dapr-ruby-client/issues/74)) ([2fc596d](https://github.com/rubyists/dapr-ruby-client/commit/2fc596dad1439c5d52a03bdf763d8b0d38aa9bab))
13
+
14
+ ## [0.3.3](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.2...v0.3.3) (2024-10-08)
15
+
16
+
17
+ ### Features
18
+
19
+ * **grpc:** Update grpc to 1.66 in container ([#71](https://github.com/rubyists/dapr-ruby-client/issues/71)) ([da78331](https://github.com/rubyists/dapr-ruby-client/commit/da783315276b27c4a1b37996198021f415adf4cf))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **lock:** Updates lock/unlock to append _alpha1 ([#72](https://github.com/rubyists/dapr-ruby-client/issues/72)) ([847d091](https://github.com/rubyists/dapr-ruby-client/commit/847d0910265df8c37edf5d2af4eed0c0f6d4feb0))
25
+
3
26
  ## [0.3.2](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.1...v0.3.2) (2024-07-19)
4
27
 
5
28
 
@@ -1 +1 @@
1
- {"timestamp":1716154010,"command_name":"Unit Tests","files":[{"filename":"/home/bougyman/rubyists/dapr/lib/dapr.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,null,1,1,5,null,null,null,1,1,1,1,1,null,null]},"covered_strength":1.4,"covered_lines":10,"lines_of_code":10},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,1,1,1,null,1,1,null,1,1,1,1,1,null,1,4,null,1,1,null,null,1,9,null,null,1,1,null,null,1,12,null,null,null,1,1,null,1,5,null,null,1,1,1,1,null,1,null,null,1,1,null,null,null,null,null]},"covered_strength":1.7878787878787878,"covered_lines":33,"lines_of_code":33},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/configuration.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,1,1,1,null,null,null,null,null,null,null,1,1,1,1,null,null,1,1,1,null,null,null,null,null]},"covered_strength":1.0,"covered_lines":21,"lines_of_code":21},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/lock.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,1,6,6,null,null,null,null,null,null,1,6,6,null,null,null,1,6,6,5,5,null,null,1,null,null,null,1,4,4,4,null,3,3,null,null,1,null,null,1,18,null,null,null,null,null]},"covered_strength":3.0606060606060606,"covered_lines":33,"lines_of_code":33}],"metrics":{"covered_percent":100.0,"covered_strength":2.0103092783505154,"covered_lines":97,"total_lines":97}}
1
+ {"timestamp":1729718516,"command_name":"Unit Tests","files":[{"filename":"/home/bougyman/rubyists/dapr/lib/dapr.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,null,1,1,7,null,null,null,1,1,1,1,1,null,null]},"covered_strength":1.6,"covered_lines":10,"lines_of_code":10},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,1,1,1,null,1,1,null,1,1,1,1,1,1,null,1,4,null,1,1,null,null,1,11,null,null,1,1,null,null,1,14,null,null,null,1,1,null,1,5,null,null,1,1,1,1,null,1,null,null,1,1,null,null,null,null,null]},"covered_strength":1.8823529411764706,"covered_lines":34,"lines_of_code":34},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/configuration.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,1,1,1,null,null,null,null,null,null,null,1,1,1,1,null,null,1,1,1,null,null,null,null,null]},"covered_strength":1.0,"covered_lines":21,"lines_of_code":21},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/lock.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,null,null,null,null,null,1,6,6,null,null,null,null,null,null,1,6,6,null,null,null,1,6,6,5,5,null,null,1,null,null,null,1,4,4,4,null,3,3,null,null,1,null,null,1,18,null,null,null,null,null,1,6,null,null,null,null,null]},"covered_strength":3.085714285714286,"covered_lines":35,"lines_of_code":35},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/state.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,null,1,1,1,null,null,1,null,1,1,null,1,null,1,1,1,1,1,1,null,null,null,null,null,null,1,1,null,null,null,null,null,null,null,1,1,null,null,null,null,null,1,2,null,null,null,null,null,null,1,1,1,1,null,null,null,null,1,3,1,1,1,null,null,null,null,null]},"covered_strength":1.103448275862069,"covered_lines":29,"lines_of_code":29},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/version.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,1,null,null,null]},"covered_strength":1.0,"covered_lines":3,"lines_of_code":3}],"metrics":{"covered_percent":100.0,"covered_strength":1.8484848484848484,"covered_lines":132,"total_lines":132}}
@@ -21,6 +21,11 @@ module Rubyists
21
21
  UnlockRequest = ::Dapr::Proto::Runtime::V1::UnlockRequest
22
22
  DEFAULT_STORE_NAME = 'locker'
23
23
 
24
+ # @param resource_id [String] The unique ID of the resource to lock
25
+ # @param store_name [String] The name of the Dapr lock store component to use
26
+ # @param ttl [Integer] The time-to-live for the lock in seconds
27
+ #
28
+ # @return [Lock] The lock object
24
29
  def self.acquire(resource_id, store_name: DEFAULT_STORE_NAME, ttl: 10)
25
30
  lock = new(store_name, resource_id)
26
31
  lock.lock!(ttl:)
@@ -37,7 +42,7 @@ module Rubyists
37
42
 
38
43
  # @param ttl [Integer] The time-to-live for the lock in seconds
39
44
  def lock!(ttl: 10)
40
- response = singleton.try_lock(LockRequest.new(store_name:, resource_id:, lock_owner:, expiry_in_seconds: ttl))
45
+ response = singleton.try_lock_alpha1 lock_request
41
46
  if response.success
42
47
  logger.info('Acquired lock', store_name:, resource_id:, ttl:, lock_owner:)
43
48
  return self
@@ -48,7 +53,7 @@ module Rubyists
48
53
  end
49
54
 
50
55
  def unlock!
51
- response = singleton.unlock(UnlockRequest.new(store_name:, resource_id:, lock_owner:))
56
+ response = singleton.unlock_alpha1(UnlockRequest.new(store_name:, resource_id:, lock_owner:))
52
57
  status = response.status
53
58
  return true if status == :SUCCESS
54
59
 
@@ -62,6 +67,13 @@ module Rubyists
62
67
  def lock_owner
63
68
  @lock_owner ||= SecureRandom.uuid
64
69
  end
70
+
71
+ # @param ttl [Integer] The time-to-live for the lock in seconds
72
+ #
73
+ # @return [LockRequest] The lock request
74
+ def lock_request(ttl: 10)
75
+ @lock_request ||= LockRequest.new(store_name:, resource_id:, lock_owner:, expiry_in_seconds: ttl)
76
+ end
65
77
  end
66
78
  end
67
79
  end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../client'
4
+
5
+ module Rubyists
6
+ module Dapr
7
+ module Client
8
+ # The State class is a client for the Dapr State Management Building block
9
+ # Info here: https://docs.dapr.io/developing-applications/building-blocks/state-management/
10
+ class State
11
+ # Include the client module
12
+ include Client
13
+ include SemanticLogger::Loggable
14
+
15
+ attr_reader :store_name
16
+
17
+ Empty = Google::Protobuf::Empty
18
+ Runtime = Client::Runtime
19
+ GetBulkStateResponse = Runtime::GetBulkStateResponse
20
+ GetStateRequest = Runtime::GetBulkStateRequest
21
+ SaveStateRequest = Runtime::SaveStateRequest
22
+ DEFAULT_STORE_NAME = 'statestore'
23
+
24
+ # @param keys [Array<String>] keys to retrieve from the state store
25
+ # @param store_name [String] name of the State Management component, defaults to 'dapr-statestore'
26
+ # @param metadata [Hash] metadata to include
27
+ #
28
+ # @return [GetBulkStateResponse] The response from the Dapr State Management component
29
+ def self.get(*keys, store_name: DEFAULT_STORE_NAME, metadata: {})
30
+ new(store_name).get(keys, metadata:)
31
+ end
32
+
33
+ # @param states [Hash] states to set in the state store, key/value pairs
34
+ # @param store_name [String] name of the State Management component, defaults to 'dapr-statestore'
35
+ # @param metadata [Hash] metadata to include
36
+ #
37
+ # @return [Empty] The response from the Dapr State Management component
38
+ def self.set(states, store_name: DEFAULT_STORE_NAME, metadata: {})
39
+ new(store_name).set(states, metadata:)
40
+ end
41
+
42
+ # Initialize the State Management client
43
+ #
44
+ # @param store_name [String] name of the Dapr Configuration component to use
45
+ def initialize(store_name)
46
+ @store_name = store_name
47
+ end
48
+
49
+ # @param keys [Array<String>] keys to retrieve from the state store
50
+ # @param metadata [Hash] metadata to include
51
+ #
52
+ # @return [Array<BulkStateItem>] Array of items returned by the state store
53
+ def get(keys, metadata: {})
54
+ logger.debug('Getting state', keys:, store_name:, metadata:)
55
+ response = singleton.get_bulk_state GetStateRequest.new(store_name:, keys:, metadata:)
56
+ response.items
57
+ end
58
+
59
+ # @param states [Hash] states to set (key/values in the state store)
60
+ # @param metadata [Hash] metadata to include
61
+ def set(states, metadata: {})
62
+ states = states.map { |key, value| { key:, value:, metadata: } }
63
+ request = SaveStateRequest.new(store_name:, states:)
64
+ logger.debug('Setting state', states:, store_name:)
65
+ singleton.save_state request
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
data/lib/dapr/client.rb CHANGED
@@ -11,9 +11,10 @@ module Rubyists
11
11
  # The namespace for the Dapr client
12
12
  module Client
13
13
  include SemanticLogger::Loggable
14
+ Runtime = ::Dapr::Proto::Runtime::V1
14
15
  DAPR_PORT = ENV.fetch('DAPR_GRPC_PORT', nil)
15
16
  DAPR_URI = ENV.fetch('DAPR_GRPC_HOST', 'localhost')
16
- DAPR_STUB = ::Dapr::Proto::Runtime::V1::Dapr::Stub
17
+ DAPR_STUB = Runtime::Dapr::Stub
17
18
 
18
19
  def self.client(dapr_port: DAPR_PORT, dapr_uri: DAPR_URI)
19
20
  return DummyClient.new if dapr_port.nil?
data/lib/dapr/version.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Rubyists
4
4
  module Dapr
5
5
  # x-release-please-start-version
6
- VERSION = '0.3.2'
6
+ VERSION = '0.4.0'
7
7
  # x-release-please-end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tj (bougyman) Vanderpoel
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-07-19 00:00:00.000000000 Z
12
+ date: 2024-10-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dapr-ruby
@@ -63,6 +63,7 @@ files:
63
63
  - lib/dapr/client/configuration.rb
64
64
  - lib/dapr/client/lock.rb
65
65
  - lib/dapr/client/publisher.rb
66
+ - lib/dapr/client/state.rb
66
67
  - lib/dapr/service.rb
67
68
  - lib/dapr/service/subscriber.rb
68
69
  - lib/dapr/version.rb