key-vortex 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +36 -0
- data/lib/key_vortex/adapter/memory.rb +7 -0
- data/lib/key_vortex/adapter.rb +4 -0
- data/lib/key_vortex/version.rb +1 -1
- data/lib/key_vortex.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc49e3b37bc928e227b99983919d05c1e2da5fc06a3c545229dbc8d26c4b3457
|
4
|
+
data.tar.gz: a8356f1144d194f56818375243348aeffd0ed2221b99f9e39dea4610e8be335f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 601d86c191a60adbb6015a66d5fdee969902c211f8c4f2071d5ef84f1014661e4d4fc4522d162260e629b630327674977288e081ec66a0b84d0e1cbdea4890b1
|
7
|
+
data.tar.gz: 66416fd173dabd98442bd38164a8e79afdce5fd2e393d74068bee34f15d0dc4a7ac78b2534d8336729c742989a07e57421a21e2cacc5baad5b1d488bde3d155c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
key-vortex (0.2.
|
4
|
+
key-vortex (0.2.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
guard (~> 2.0)
|
34
34
|
rubocop (< 2.0)
|
35
35
|
json (2.6.3)
|
36
|
-
key_vortex-contract (0.2.
|
36
|
+
key_vortex-contract (0.2.4)
|
37
37
|
rantly (~> 2.0.0)
|
38
38
|
rspec (~> 3.0)
|
39
39
|
kwalify (0.7.2)
|
@@ -80,7 +80,7 @@ GEM
|
|
80
80
|
diff-lcs (>= 1.2.0, < 2.0)
|
81
81
|
rspec-support (~> 3.12.0)
|
82
82
|
rspec-support (3.12.1)
|
83
|
-
rubocop (1.54.
|
83
|
+
rubocop (1.54.2)
|
84
84
|
json (~> 2.3)
|
85
85
|
language_server-protocol (>= 3.17.0)
|
86
86
|
parallel (~> 1.10)
|
data/README.md
CHANGED
@@ -1,5 +1,41 @@
|
|
1
1
|
# KeyVortex
|
2
2
|
|
3
|
+
KeyVortex provides a common abstraction around storing records in various datastores. It allows for the use of different adapters depending on the environment, and provides constraints to protect programmatically against differing constraints between them.
|
4
|
+
|
5
|
+
To start using KeyVortex, you'll need to define a record:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
require "key_vortex/record"
|
9
|
+
|
10
|
+
class ExampleRecord < KeyVortex::Record
|
11
|
+
field :a, String, length: 20
|
12
|
+
field :b, Integer, maximum: 100
|
13
|
+
end
|
14
|
+
```
|
15
|
+
|
16
|
+
Now you can use this object in various ways:
|
17
|
+
|
18
|
+
```
|
19
|
+
> record = ExampleRecord.new(key: "foo", a: "bar", b: 10)
|
20
|
+
=> #<ExampleRecord:0x000055fe0b5fe538 @values={:key=>"foo", :a=>"bar", :b=>10}>
|
21
|
+
> record.a
|
22
|
+
=> "bar"
|
23
|
+
> record.a = "baz"
|
24
|
+
=> "baz"
|
25
|
+
> record.a
|
26
|
+
=> "baz"
|
27
|
+
> record.b = 1000
|
28
|
+
Invalid value 1000 for b (KeyVortex::Error)
|
29
|
+
```
|
30
|
+
|
31
|
+
You may notice that a `key` field was defined as well. This can be a String up to 36 characters long, to accomodate a GUID if that's what you wish to use.
|
32
|
+
|
33
|
+
In order to save the record somewhere, you'll need to choose an adapter. To keep dependencies down, these will generally be implemented in other gems, but an in memory adapter does ship with this gem.
|
34
|
+
|
35
|
+
```
|
36
|
+
> require "key_vortex/adapter/memory"
|
37
|
+
|
38
|
+
|
3
39
|
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/key_vortex`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
40
|
|
5
41
|
TODO: Delete this and the text above, and describe your gem
|
@@ -1,10 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "key_vortex"
|
3
4
|
require "key_vortex/adapter"
|
4
5
|
|
5
6
|
class KeyVortex
|
6
7
|
class Adapter
|
7
8
|
class Memory < KeyVortex::Adapter
|
9
|
+
def self.build(items: {}, limitations: [])
|
10
|
+
new(items, limitations: limitations)
|
11
|
+
end
|
12
|
+
|
8
13
|
def initialize(items, limitations: [])
|
9
14
|
super()
|
10
15
|
@items = items
|
@@ -25,3 +30,5 @@ class KeyVortex
|
|
25
30
|
end
|
26
31
|
end
|
27
32
|
end
|
33
|
+
|
34
|
+
KeyVortex.register(KeyVortex::Adapter::Memory)
|
data/lib/key_vortex/adapter.rb
CHANGED
data/lib/key_vortex/version.rb
CHANGED
data/lib/key_vortex.rb
CHANGED
@@ -5,6 +5,21 @@ require_relative "key_vortex/version"
|
|
5
5
|
class KeyVortex
|
6
6
|
class Error < StandardError; end
|
7
7
|
|
8
|
+
def self.register(adapter_class)
|
9
|
+
@adapter_registry ||= {}
|
10
|
+
@adapter_registry[adapter_class.symbol] = adapter_class
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.vortex(adapter_symbol, record_class, **options)
|
14
|
+
puts @adapter_registry
|
15
|
+
new(
|
16
|
+
@adapter_registry[adapter_symbol].build(**options),
|
17
|
+
record_class
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :adapter, :record_class
|
22
|
+
|
8
23
|
def initialize(adapter, record_class)
|
9
24
|
@adapter = adapter
|
10
25
|
@record_class = record_class
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: key-vortex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lambda Null
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Defines abstractions that can be built on top of for key/value storage
|
14
14
|
on different technologies (file, s3, sql, redis, etc.)
|