esse-redis_storage 0.0.2 → 0.1.1

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: 1c05d60be8578e56e72f8eaa1ed86bd0e2ddc4155aa4e401b46f1baea2644887
4
- data.tar.gz: fcf6aebf13c1dda145e8be6f1eab49a8f7fe70a4d5dd5e48be9d07c77e8ae712
3
+ metadata.gz: ad734caa5a5772b8d7ba66bd2f40a031203b96edade5aa0547e5bf574c228094
4
+ data.tar.gz: 4efb7b6b025a32e69819f12902e97abc0fac887aaee7cf34082b8e6bcc77b50f
5
5
  SHA512:
6
- metadata.gz: 153cb2cfa231b6f4657e779923db891e164a99f6c6401afaa5cae1b9c2e8893e2675cf26dc7cfc22f3d950ba04995b443c7a729a153ea2b457ef92c45edd5dcf
7
- data.tar.gz: ff228cfae97984539f88920de7888df7809517d9c4a25aa2b842b530f06bb0a6864ecaf2c4db29cd0fff54060eac494c0c169f43fd0239d9a8a10c261d5f5dd6
6
+ metadata.gz: 5e66697c37188316303ca3e9ce7466a3ae4a46255d33a75f6b4ed15c28b060cb7a3e1094b6bc2648238341becd6abb080175bcc0edf15d57e04b6fa8fcfd7ef6
7
+ data.tar.gz: 2e0991b872d1c15f07fd76398c0d52c01a934efada5a6b26ba1e04cfb7ecc3e66eb4e6362e011cfb39d8a3a385131a0d031ac7faeff5de2a83f28ea2493944e8
data/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 0.1.1 - 2024-08-06
8
+ * Add TTL to the enqueued items in the queue.
9
+ * Included current time in the rand batch id to be more human readable.
10
+
11
+ ## 0.1.0 - 2024-07-31
12
+ * Adjusting queue to allow to enqueue complex objects like Ruby hash and also preserve the primitive type.
13
+
7
14
  ## 0.0.2 - 2024-07-18
8
15
  * The `Esse::RedisStorage::Queue.for` method now support both `repo:` and `attribute_name:` options.
9
16
 
data/Gemfile.lock CHANGED
@@ -1,17 +1,18 @@
1
1
  GIT
2
2
  remote: https://github.com/marcosgz/esse.git
3
- revision: ebbe8016650c2d090873a8799e8b127a39a592bf
3
+ revision: 7d8fef8646a2f6acc3bfa475f351cfcd7d88fe17
4
4
  branch: main
5
5
  specs:
6
- esse (0.2.6)
6
+ esse (0.3.4)
7
7
  multi_json
8
8
  thor (>= 0.19)
9
9
 
10
10
  PATH
11
11
  remote: .
12
12
  specs:
13
- esse-redis_storage (0.0.2)
14
- esse (>= 0.2.4)
13
+ esse-redis_storage (0.1.1)
14
+ esse (>= 0.3.2)
15
+ multi_json (>= 1.0.0)
15
16
  redis (>= 4.0.0)
16
17
 
17
18
  GEM
@@ -13,7 +13,7 @@ module Esse
13
13
  attr_reader :name
14
14
 
15
15
  def self.batch_id
16
- SecureRandom.uuid
16
+ String.new(Time.now.strftime("%Y%m%d%H%M%S%L-")) << SecureRandom.hex(4)
17
17
  end
18
18
 
19
19
  def self.for(repo:, attribute_name: nil)
@@ -28,12 +28,14 @@ module Esse
28
28
  # Enqueue a batch of ids to process
29
29
  # @param id [String] The batch id
30
30
  # @param values [Array<String>] The values of the batch
31
- def enqueue(id: nil, values: [])
31
+ def enqueue(id: nil, values: [], ttl: nil)
32
32
  return if values.nil? || values.empty?
33
33
 
34
+ values = ::Esse::ArrayUtils.wrap(values)
34
35
  batch_id = id || self.class.batch_id
35
36
  with do |conn|
36
- conn.hset(name, batch_id, values.join(","))
37
+ conn.hset(name, batch_id, ::MultiJson.dump(values))
38
+ conn.expire(name, ttl) if ttl
37
39
  end
38
40
  batch_id
39
41
  end
@@ -46,7 +48,7 @@ module Esse
46
48
  values = conn.hget(name, batch_id)
47
49
  return unless values
48
50
 
49
- yield values.split(",")
51
+ yield ::MultiJson.load(values)
50
52
  conn.hdel(name, batch_id)
51
53
  end
52
54
  end
@@ -75,7 +77,7 @@ module Esse
75
77
  def each
76
78
  with do |conn|
77
79
  conn.hscan_each(name, count: 1000) do |batch_id, values|
78
- yield batch_id, values.split(",")
80
+ yield batch_id, ::MultiJson.load(values)
79
81
  end
80
82
  end
81
83
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Esse
4
4
  module RedisStorage
5
- VERSION = "0.0.2"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "esse"
4
4
  require "redis"
5
+ require "multi_json"
5
6
  require "forwardable"
6
7
  require "securerandom"
7
8
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esse-redis_storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos G. Zimmermann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-18 00:00:00.000000000 Z
11
+ date: 2024-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: esse
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.4
19
+ version: 0.3.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.4
26
+ version: 0.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 4.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: connection_pool
43
57
  requirement: !ruby/object:Gem::Requirement