scriva 1.2.1
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 +7 -0
- data/README.md +371 -0
- data/lib/scriva/client.rb +648 -0
- data/lib/scriva/proto/scriva_pb.rb +83 -0
- data/lib/scriva/proto/scriva_services_pb.rb +123 -0
- data/lib/scriva/version.rb +3 -0
- data/lib/scriva.rb +2 -0
- data/scriva.gemspec +22 -0
- metadata +80 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: scriva.proto
|
|
4
|
+
|
|
5
|
+
require 'google/protobuf'
|
|
6
|
+
|
|
7
|
+
require 'google/protobuf/struct_pb'
|
|
8
|
+
require 'google/protobuf/timestamp_pb'
|
|
9
|
+
require 'google/api/annotations_pb'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
descriptor_data = "\n\x0cscriva.proto\x12\tscriva.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto\"\xb8\x01\n\x06Record\x12\n\n\x02id\x18\x01 \x01(\x04\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12.\n\ndate_added\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rdate_modified\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0b\n\x03key\x18\x05 \x01(\t\x12\x0b\n\x03rev\x18\x06 \x01(\x04\"\x81\x01\n\x06\x46ilter\x12\'\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x16.scriva.v1.FieldFilterH\x00\x12#\n\x03\x61nd\x18\x02 \x01(\x0b\x32\x14.scriva.v1.AndFilterH\x00\x12!\n\x02or\x18\x03 \x01(\x0b\x32\x13.scriva.v1.OrFilterH\x00\x42\x06\n\x04kind\"L\n\x0b\x46ieldFilter\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x1f\n\x02op\x18\x02 \x01(\x0e\x32\x13.scriva.v1.FilterOp\x12\r\n\x05value\x18\x03 \x01(\t\"/\n\tAndFilter\x12\"\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x11.scriva.v1.Filter\".\n\x08OrFilter\x12\"\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x11.scriva.v1.Filter\"D\n\x17\x43reateCollectionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x13\x64\x65\x66\x61ult_ttl_seconds\x18\x02 \x01(\x03\"<\n\x18\x43reateCollectionResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\ncreated_at\x18\x02 \x01(\t\"%\n\x15\x44ropCollectionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"$\n\x16\x44ropCollectionResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"\x18\n\x16ListCollectionsRequest\"(\n\x17ListCollectionsResponse\x12\r\n\x05names\x18\x01 \x03(\t\"l\n\rInsertRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x13\n\x0bttl_seconds\x18\x03 \x01(\x03\x12\x0b\n\x03key\x18\x04 \x01(\t\"J\n\x0eInsertResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x12\n\ndate_added\x18\x02 \x01(\t\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0b\n\x03rev\x18\x04 \x01(\x04\"f\n\x11InsertManyRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12(\n\x07records\x18\x02 \x03(\x0b\x32\x17.google.protobuf.Struct\x12\x13\n\x0bttl_seconds\x18\x03 \x01(\x03\"!\n\x12InsertManyResponse\x12\x0b\n\x03ids\x18\x01 \x03(\x04\"A\n\x0f\x46indByIdRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ields\x18\x03 \x03(\t\"&\n\x07OrderBy\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x65sc\x18\x02 \x01(\x08\"\xe2\x01\n\x0b\x46indRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12!\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x11.scriva.v1.Filter\x12\r\n\x05limit\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\x12\x14\n\x08order_by\x18\x05 \x01(\tB\x02\x18\x01\x12\x16\n\ndescending\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x0e\n\x06\x66ields\x18\x07 \x03(\t\x12\x12\n\npage_token\x18\x08 \x01(\t\x12+\n\x0forder_by_fields\x18\t \x03(\x0b\x32\x12.scriva.v1.OrderBy\"E\n\x0c\x46indResponse\x12!\n\x06record\x18\x01 \x01(\x0b\x32\x11.scriva.v1.Record\x12\x12\n\npage_token\x18\x02 \x01(\t\"k\n\rUpdateRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x04\x12%\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x13\n\x0bttl_seconds\x18\x04 \x01(\x03\"M\n\x0eUpdateResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x15\n\rdate_modified\x18\x02 \x01(\t\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0b\n\x03rev\x18\x04 \x01(\x04\"/\n\rDeleteRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x04\"\x1c\n\x0e\x44\x65leteResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"W\n\rUpsertRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12%\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"3\n\x0eUpsertResponse\x12!\n\x06record\x18\x01 \x01(\x0b\x32\x11.scriva.v1.Record\"C\n\x10\x46indByKeyRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0e\n\x06\x66ields\x18\x03 \x03(\t\"\\\n\x12UpdateByKeyRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12%\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"5\n\x12\x44\x65leteByKeyRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"r\n\x12UpdateIfRevRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x14\n\x0c\x65xpected_rev\x18\x03 \x01(\x04\x12%\n\x04\x64\x61ta\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"I\n\x13UpdateIfRevResponse\x12\x0f\n\x07swapped\x18\x01 \x01(\x08\x12!\n\x06record\x18\x02 \x01(\x0b\x32\x11.scriva.v1.Record\"7\n\x12\x45nsureIndexRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\r\n\x05\x66ield\x18\x02 \x01(\t\"8\n\x13\x45nsureIndexResponse\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\r\n\x05\x66ield\x18\x02 \x01(\t\"5\n\x10\x44ropIndexRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\r\n\x05\x66ield\x18\x02 \x01(\t\"\x1f\n\x11\x44ropIndexResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"(\n\x12ListIndexesRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\"%\n\x13ListIndexesResponse\x12\x0e\n\x06\x66ields\x18\x01 \x03(\t\"$\n\x0e\x42\x65ginTxRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\" \n\x0f\x42\x65ginTxResponse\x12\r\n\x05tx_id\x18\x01 \x01(\t\" \n\x0f\x43ommitTxRequest\x12\r\n\x05tx_id\x18\x01 \x01(\t\"\x1e\n\x10\x43ommitTxResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"\"\n\x11RollbackTxRequest\x12\r\n\x05tx_id\x18\x01 \x01(\t\" \n\x12RollbackTxResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"E\n\x0cWatchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12!\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x11.scriva.v1.Filter\"\x8b\x01\n\nWatchEvent\x12\x1e\n\x02op\x18\x01 \x01(\x0e\x32\x12.scriva.v1.WatchOp\x12\x12\n\ncollection\x18\x02 \x01(\t\x12!\n\x06record\x18\x03 \x01(\x0b\x32\x11.scriva.v1.Record\x12&\n\x02ts\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x98\x01\n\x10\x41ggregateRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12!\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x11.scriva.v1.Filter\x12\x10\n\x08group_by\x18\x03 \x01(\t\x12\r\n\x05\x66ield\x18\x04 \x01(\t\x12,\n\x0c\x61ggregations\x18\x05 \x03(\x0e\x32\x16.scriva.v1.AggregateOp\"\x94\x01\n\x11\x41ggregateResponse\x12+\n\x0bgroup_value\x18\x01 \x01(\x0b\x32\x16.google.protobuf.Value\x12\r\n\x05\x63ount\x18\x02 \x01(\x04\x12\x0b\n\x03sum\x18\x03 \x01(\x01\x12\x0b\n\x03\x61vg\x18\x04 \x01(\x01\x12\x0b\n\x03min\x18\x05 \x01(\x01\x12\x0b\n\x03max\x18\x06 \x01(\x01\x12\x0f\n\x07numeric\x18\x07 \x01(\x08\",\n\x16\x43ollectionStatsRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\"\x85\x01\n\x17\x43ollectionStatsResponse\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x14\n\x0crecord_count\x18\x02 \x01(\x04\x12\x15\n\rsegment_count\x18\x03 \x01(\x04\x12\x15\n\rdirty_entries\x18\x04 \x01(\x04\x12\x12\n\nsize_bytes\x18\x05 \x01(\x04\"$\n\x0e\x43ompactRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\"\x1d\n\x0f\x43ompactResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\"\x11\n\x0fSnapshotRequest\"\x1d\n\rSnapshotChunk\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"9\n\x10ReplicateRequest\x12\x10\n\x08\x66rom_lsn\x18\x01 \x01(\x04\x12\x13\n\x0b\x66ollower_id\x18\x02 \x01(\t\"\xd6\x01\n\x11ReplicationRecord\x12\x0b\n\x03lsn\x18\x01 \x01(\x04\x12\x12\n\ncollection\x18\x02 \x01(\t\x12$\n\x02op\x18\x03 \x01(\x0e\x32\x18.scriva.v1.ReplicationOp\x12\n\n\x02id\x18\x04 \x01(\x04\x12\x0b\n\x03rev\x18\x05 \x01(\x04\x12%\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x12\n\nexpires_at\x18\x07 \x01(\x03\x12&\n\x02ts\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x18ReplicationStatusRequest\"r\n\x19ReplicationStatusResponse\x12\x12\n\nleader_lsn\x18\x01 \x01(\x04\x12,\n\tfollowers\x18\x02 \x03(\x0b\x32\x19.scriva.v1.FollowerStatus\x12\x13\n\x0b\x61pplied_lsn\x18\x03 \x01(\x04\"w\n\x0e\x46ollowerStatus\x12\x13\n\x0b\x66ollower_id\x18\x01 \x01(\t\x12\x11\n\tacked_lsn\x18\x02 \x01(\x04\x12\x0b\n\x03lag\x18\x03 \x01(\x04\x12\x30\n\x0c\x63onnected_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1f\n\x0ePromoteRequest\x12\r\n\x05\x66orce\x18\x01 \x01(\x08\"9\n\x0fPromoteResponse\x12\x0c\n\x04role\x18\x01 \x01(\t\x12\x0b\n\x03lsn\x18\x02 \x01(\x04\x12\x0b\n\x03lag\x18\x03 \x01(\x04*q\n\x08\x46ilterOp\x12\x19\n\x15\x46ILTER_OP_UNSPECIFIED\x10\x00\x12\x06\n\x02\x45Q\x10\x01\x12\x07\n\x03NEQ\x10\x02\x12\x06\n\x02GT\x10\x03\x12\x07\n\x03GTE\x10\x04\x12\x06\n\x02LT\x10\x05\x12\x07\n\x03LTE\x10\x06\x12\x0c\n\x08\x43ONTAINS\x10\x07\x12\t\n\x05REGEX\x10\x08*Y\n\x07WatchOp\x12\x18\n\x14WATCH_OP_UNSPECIFIED\x10\x00\x12\x0c\n\x08INSERTED\x10\x01\x12\x0b\n\x07UPDATED\x10\x02\x12\x0b\n\x07\x44\x45LETED\x10\x03\x12\x0c\n\x08OVERFLOW\x10\x04*n\n\x0b\x41ggregateOp\x12\x1c\n\x18\x41GGREGATE_OP_UNSPECIFIED\x10\x00\x12\r\n\tAGG_COUNT\x10\x01\x12\x0b\n\x07\x41GG_SUM\x10\x02\x12\x0b\n\x07\x41GG_AVG\x10\x03\x12\x0b\n\x07\x41GG_MIN\x10\x04\x12\x0b\n\x07\x41GG_MAX\x10\x05*_\n\rReplicationOp\x12\x1e\n\x1aREPLICATION_OP_UNSPECIFIED\x10\x00\x12\x0e\n\nREP_INSERT\x10\x01\x12\x0e\n\nREP_UPDATE\x10\x02\x12\x0e\n\nREP_DELETE\x10\x03\x32\xd8\x16\n\x06Scriva\x12w\n\x10\x43reateCollection\x12\".scriva.v1.CreateCollectionRequest\x1a#.scriva.v1.CreateCollectionResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/collections:\x01*\x12u\n\x0e\x44ropCollection\x12 .scriva.v1.DropCollectionRequest\x1a!.scriva.v1.DropCollectionResponse\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/v1/collections/{name}\x12q\n\x0fListCollections\x12!.scriva.v1.ListCollectionsRequest\x1a\".scriva.v1.ListCollectionsResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/v1/collections\x12\x62\n\x06Insert\x12\x18.scriva.v1.InsertRequest\x1a\x19.scriva.v1.InsertResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/{collection}/records:\x01*\x12t\n\nInsertMany\x12\x1c.scriva.v1.InsertManyRequest\x1a\x1d.scriva.v1.InsertManyResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/{collection}/records/batch:\x01*\x12\x66\n\x08\x46indById\x12\x1a.scriva.v1.FindByIdRequest\x1a\x17.scriva.v1.FindResponse\"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/v1/{collection}/records/{id}\x12\x63\n\x04\x46ind\x12\x16.scriva.v1.FindRequest\x1a\x17.scriva.v1.FindResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/v1/{collection}/records/find:\x01*0\x01\x12g\n\x06Update\x12\x18.scriva.v1.UpdateRequest\x1a\x19.scriva.v1.UpdateResponse\"(\x82\xd3\xe4\x93\x02\"\x1a\x1d/v1/{collection}/records/{id}:\x01*\x12\x64\n\x06\x44\x65lete\x12\x18.scriva.v1.DeleteRequest\x1a\x19.scriva.v1.DeleteResponse\"%\x82\xd3\xe4\x93\x02\x1f*\x1d/v1/{collection}/records/{id}\x12i\n\x06Upsert\x12\x18.scriva.v1.UpsertRequest\x1a\x19.scriva.v1.UpsertResponse\"*\x82\xd3\xe4\x93\x02$\"\x1f/v1/{collection}/records:upsert:\x01*\x12\x66\n\tFindByKey\x12\x1b.scriva.v1.FindByKeyRequest\x1a\x17.scriva.v1.FindResponse\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/v1/{collection}/keys/{key}\x12o\n\x0bUpdateByKey\x12\x1d.scriva.v1.UpdateByKeyRequest\x1a\x19.scriva.v1.UpdateResponse\"&\x82\xd3\xe4\x93\x02 \x1a\x1b/v1/{collection}/keys/{key}:\x01*\x12l\n\x0b\x44\x65leteByKey\x12\x1d.scriva.v1.DeleteByKeyRequest\x1a\x19.scriva.v1.DeleteResponse\"#\x82\xd3\xe4\x93\x02\x1d*\x1b/v1/{collection}/keys/{key}\x12x\n\x0bUpdateIfRev\x12\x1d.scriva.v1.UpdateIfRevRequest\x1a\x1e.scriva.v1.UpdateIfRevResponse\"*\x82\xd3\xe4\x93\x02$\"\x1f/v1/{collection}/keys/{key}:cas:\x01*\x12q\n\x0b\x45nsureIndex\x12\x1d.scriva.v1.EnsureIndexRequest\x1a\x1e.scriva.v1.EnsureIndexResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/{collection}/indexes:\x01*\x12p\n\tDropIndex\x12\x1b.scriva.v1.DropIndexRequest\x1a\x1c.scriva.v1.DropIndexResponse\"(\x82\xd3\xe4\x93\x02\"* /v1/{collection}/indexes/{field}\x12n\n\x0bListIndexes\x12\x1d.scriva.v1.ListIndexesRequest\x1a\x1e.scriva.v1.ListIndexesResponse\" \x82\xd3\xe4\x93\x02\x1a\x12\x18/v1/{collection}/indexes\x12@\n\x07\x42\x65ginTx\x12\x19.scriva.v1.BeginTxRequest\x1a\x1a.scriva.v1.BeginTxResponse\x12\x43\n\x08\x43ommitTx\x12\x1a.scriva.v1.CommitTxRequest\x1a\x1b.scriva.v1.CommitTxResponse\x12I\n\nRollbackTx\x12\x1c.scriva.v1.RollbackTxRequest\x1a\x1d.scriva.v1.RollbackTxResponse\x12\\\n\x05Watch\x12\x17.scriva.v1.WatchRequest\x1a\x15.scriva.v1.WatchEvent\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/v1/{collection}/watch:\x01*0\x01\x12o\n\tAggregate\x12\x1b.scriva.v1.AggregateRequest\x1a\x1c.scriva.v1.AggregateResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1/{collection}/aggregate:\x01*0\x01\x12x\n\x0f\x43ollectionStats\x12!.scriva.v1.CollectionStatsRequest\x1a\".scriva.v1.CollectionStatsResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/v1/{collection}/stats\x12\x65\n\x07\x43ompact\x12\x19.scriva.v1.CompactRequest\x1a\x1a.scriva.v1.CompactResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/{collection}/compact:\x01*\x12\x42\n\x08Snapshot\x12\x1a.scriva.v1.SnapshotRequest\x1a\x18.scriva.v1.SnapshotChunk0\x01\x12H\n\tReplicate\x12\x1b.scriva.v1.ReplicateRequest\x1a\x1c.scriva.v1.ReplicationRecord0\x01\x12~\n\x11ReplicationStatus\x12#.scriva.v1.ReplicationStatusRequest\x1a$.scriva.v1.ReplicationStatusResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/v1/replication/status\x12\x64\n\x07Promote\x12\x19.scriva.v1.PromoteRequest\x1a\x1a.scriva.v1.PromoteResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/replication/promote:\x01*B,Z*github.com/srjn45/scriva/internal/pb/protob\x06proto3"
|
|
13
|
+
|
|
14
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
15
|
+
pool.add_serialized_file(descriptor_data)
|
|
16
|
+
|
|
17
|
+
module Scriva
|
|
18
|
+
module V1
|
|
19
|
+
Record = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.Record").msgclass
|
|
20
|
+
Filter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.Filter").msgclass
|
|
21
|
+
FieldFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FieldFilter").msgclass
|
|
22
|
+
AndFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.AndFilter").msgclass
|
|
23
|
+
OrFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.OrFilter").msgclass
|
|
24
|
+
CreateCollectionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CreateCollectionRequest").msgclass
|
|
25
|
+
CreateCollectionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CreateCollectionResponse").msgclass
|
|
26
|
+
DropCollectionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DropCollectionRequest").msgclass
|
|
27
|
+
DropCollectionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DropCollectionResponse").msgclass
|
|
28
|
+
ListCollectionsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ListCollectionsRequest").msgclass
|
|
29
|
+
ListCollectionsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ListCollectionsResponse").msgclass
|
|
30
|
+
InsertRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.InsertRequest").msgclass
|
|
31
|
+
InsertResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.InsertResponse").msgclass
|
|
32
|
+
InsertManyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.InsertManyRequest").msgclass
|
|
33
|
+
InsertManyResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.InsertManyResponse").msgclass
|
|
34
|
+
FindByIdRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FindByIdRequest").msgclass
|
|
35
|
+
OrderBy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.OrderBy").msgclass
|
|
36
|
+
FindRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FindRequest").msgclass
|
|
37
|
+
FindResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FindResponse").msgclass
|
|
38
|
+
UpdateRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpdateRequest").msgclass
|
|
39
|
+
UpdateResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpdateResponse").msgclass
|
|
40
|
+
DeleteRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DeleteRequest").msgclass
|
|
41
|
+
DeleteResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DeleteResponse").msgclass
|
|
42
|
+
UpsertRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpsertRequest").msgclass
|
|
43
|
+
UpsertResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpsertResponse").msgclass
|
|
44
|
+
FindByKeyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FindByKeyRequest").msgclass
|
|
45
|
+
UpdateByKeyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpdateByKeyRequest").msgclass
|
|
46
|
+
DeleteByKeyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DeleteByKeyRequest").msgclass
|
|
47
|
+
UpdateIfRevRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpdateIfRevRequest").msgclass
|
|
48
|
+
UpdateIfRevResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.UpdateIfRevResponse").msgclass
|
|
49
|
+
EnsureIndexRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.EnsureIndexRequest").msgclass
|
|
50
|
+
EnsureIndexResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.EnsureIndexResponse").msgclass
|
|
51
|
+
DropIndexRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DropIndexRequest").msgclass
|
|
52
|
+
DropIndexResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.DropIndexResponse").msgclass
|
|
53
|
+
ListIndexesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ListIndexesRequest").msgclass
|
|
54
|
+
ListIndexesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ListIndexesResponse").msgclass
|
|
55
|
+
BeginTxRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.BeginTxRequest").msgclass
|
|
56
|
+
BeginTxResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.BeginTxResponse").msgclass
|
|
57
|
+
CommitTxRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CommitTxRequest").msgclass
|
|
58
|
+
CommitTxResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CommitTxResponse").msgclass
|
|
59
|
+
RollbackTxRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.RollbackTxRequest").msgclass
|
|
60
|
+
RollbackTxResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.RollbackTxResponse").msgclass
|
|
61
|
+
WatchRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.WatchRequest").msgclass
|
|
62
|
+
WatchEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.WatchEvent").msgclass
|
|
63
|
+
AggregateRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.AggregateRequest").msgclass
|
|
64
|
+
AggregateResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.AggregateResponse").msgclass
|
|
65
|
+
CollectionStatsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CollectionStatsRequest").msgclass
|
|
66
|
+
CollectionStatsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CollectionStatsResponse").msgclass
|
|
67
|
+
CompactRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CompactRequest").msgclass
|
|
68
|
+
CompactResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.CompactResponse").msgclass
|
|
69
|
+
SnapshotRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.SnapshotRequest").msgclass
|
|
70
|
+
SnapshotChunk = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.SnapshotChunk").msgclass
|
|
71
|
+
ReplicateRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ReplicateRequest").msgclass
|
|
72
|
+
ReplicationRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ReplicationRecord").msgclass
|
|
73
|
+
ReplicationStatusRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ReplicationStatusRequest").msgclass
|
|
74
|
+
ReplicationStatusResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ReplicationStatusResponse").msgclass
|
|
75
|
+
FollowerStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FollowerStatus").msgclass
|
|
76
|
+
PromoteRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.PromoteRequest").msgclass
|
|
77
|
+
PromoteResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.PromoteResponse").msgclass
|
|
78
|
+
FilterOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.FilterOp").enummodule
|
|
79
|
+
WatchOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.WatchOp").enummodule
|
|
80
|
+
AggregateOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.AggregateOp").enummodule
|
|
81
|
+
ReplicationOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("scriva.v1.ReplicationOp").enummodule
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
2
|
+
# Source: scriva.proto for package 'scriva.v1'
|
|
3
|
+
|
|
4
|
+
require 'grpc'
|
|
5
|
+
require 'scriva/proto/scriva_pb'
|
|
6
|
+
|
|
7
|
+
module Scriva
|
|
8
|
+
module V1
|
|
9
|
+
module Scriva
|
|
10
|
+
# ---------------------------------------------------------------------------
|
|
11
|
+
# Service
|
|
12
|
+
# ---------------------------------------------------------------------------
|
|
13
|
+
#
|
|
14
|
+
class Service
|
|
15
|
+
|
|
16
|
+
include ::GRPC::GenericService
|
|
17
|
+
|
|
18
|
+
self.marshal_class_method = :encode
|
|
19
|
+
self.unmarshal_class_method = :decode
|
|
20
|
+
self.service_name = 'scriva.v1.Scriva'
|
|
21
|
+
|
|
22
|
+
rpc :CreateCollection, ::Scriva::V1::CreateCollectionRequest, ::Scriva::V1::CreateCollectionResponse
|
|
23
|
+
rpc :DropCollection, ::Scriva::V1::DropCollectionRequest, ::Scriva::V1::DropCollectionResponse
|
|
24
|
+
rpc :ListCollections, ::Scriva::V1::ListCollectionsRequest, ::Scriva::V1::ListCollectionsResponse
|
|
25
|
+
# --- CRUD ---
|
|
26
|
+
#
|
|
27
|
+
rpc :Insert, ::Scriva::V1::InsertRequest, ::Scriva::V1::InsertResponse
|
|
28
|
+
rpc :InsertMany, ::Scriva::V1::InsertManyRequest, ::Scriva::V1::InsertManyResponse
|
|
29
|
+
rpc :FindById, ::Scriva::V1::FindByIdRequest, ::Scriva::V1::FindResponse
|
|
30
|
+
# Server-streaming: results are streamed back one by one.
|
|
31
|
+
rpc :Find, ::Scriva::V1::FindRequest, stream(::Scriva::V1::FindResponse)
|
|
32
|
+
rpc :Update, ::Scriva::V1::UpdateRequest, ::Scriva::V1::UpdateResponse
|
|
33
|
+
rpc :Delete, ::Scriva::V1::DeleteRequest, ::Scriva::V1::DeleteResponse
|
|
34
|
+
# --- Keyed CRUD, Upsert & compare-and-swap (N1) ---
|
|
35
|
+
#
|
|
36
|
+
# These map straight onto the embedded engine's keyed operations, giving
|
|
37
|
+
# network clients natural (caller-supplied) string keys, upsert, and
|
|
38
|
+
# optimistic-concurrency updates keyed on a per-record revision (`rev`).
|
|
39
|
+
#
|
|
40
|
+
# Upsert inserts data under key if no live record carries it, or replaces the
|
|
41
|
+
# existing record's data if one does — atomically. Returns the resulting
|
|
42
|
+
# record with its (incremented on replace) revision. This is the keyed-insert
|
|
43
|
+
# path: there is no separate InsertWithKey RPC.
|
|
44
|
+
rpc :Upsert, ::Scriva::V1::UpsertRequest, ::Scriva::V1::UpsertResponse
|
|
45
|
+
# FindByKey returns the record carrying the caller-supplied string key.
|
|
46
|
+
# A missing key yields NOT_FOUND.
|
|
47
|
+
rpc :FindByKey, ::Scriva::V1::FindByKeyRequest, ::Scriva::V1::FindResponse
|
|
48
|
+
# UpdateByKey overwrites the record carrying key, preserving the key itself.
|
|
49
|
+
# A missing key yields NOT_FOUND.
|
|
50
|
+
rpc :UpdateByKey, ::Scriva::V1::UpdateByKeyRequest, ::Scriva::V1::UpdateResponse
|
|
51
|
+
# DeleteByKey removes the record carrying key. A missing key yields NOT_FOUND.
|
|
52
|
+
rpc :DeleteByKey, ::Scriva::V1::DeleteByKeyRequest, ::Scriva::V1::DeleteResponse
|
|
53
|
+
# UpdateIfRev conditionally updates the record carrying key: the write is
|
|
54
|
+
# applied only if the record's current revision equals expected_rev. A stale
|
|
55
|
+
# revision (or a missing key) is a clean no-op reported as swapped=false, not
|
|
56
|
+
# an error.
|
|
57
|
+
rpc :UpdateIfRev, ::Scriva::V1::UpdateIfRevRequest, ::Scriva::V1::UpdateIfRevResponse
|
|
58
|
+
# --- Secondary indexes ---
|
|
59
|
+
#
|
|
60
|
+
rpc :EnsureIndex, ::Scriva::V1::EnsureIndexRequest, ::Scriva::V1::EnsureIndexResponse
|
|
61
|
+
rpc :DropIndex, ::Scriva::V1::DropIndexRequest, ::Scriva::V1::DropIndexResponse
|
|
62
|
+
rpc :ListIndexes, ::Scriva::V1::ListIndexesRequest, ::Scriva::V1::ListIndexesResponse
|
|
63
|
+
# --- Transactions ---
|
|
64
|
+
#
|
|
65
|
+
rpc :BeginTx, ::Scriva::V1::BeginTxRequest, ::Scriva::V1::BeginTxResponse
|
|
66
|
+
rpc :CommitTx, ::Scriva::V1::CommitTxRequest, ::Scriva::V1::CommitTxResponse
|
|
67
|
+
rpc :RollbackTx, ::Scriva::V1::RollbackTxRequest, ::Scriva::V1::RollbackTxResponse
|
|
68
|
+
# --- Watch (server-streaming change feed) ---
|
|
69
|
+
#
|
|
70
|
+
rpc :Watch, ::Scriva::V1::WatchRequest, stream(::Scriva::V1::WatchEvent)
|
|
71
|
+
# --- Aggregations (N4) ---
|
|
72
|
+
#
|
|
73
|
+
# Aggregate computes count and numeric aggregations (sum/avg/min/max) over the
|
|
74
|
+
# live records matching the same Filter as Find, optionally grouped by a field.
|
|
75
|
+
# It server-streams one message per group; a plain (ungrouped) aggregation
|
|
76
|
+
# streams a single message. Aggregation runs entirely in the engine — the
|
|
77
|
+
# collection is never materialised on the client.
|
|
78
|
+
rpc :Aggregate, ::Scriva::V1::AggregateRequest, stream(::Scriva::V1::AggregateResponse)
|
|
79
|
+
# --- Stats ---
|
|
80
|
+
#
|
|
81
|
+
rpc :CollectionStats, ::Scriva::V1::CollectionStatsRequest, ::Scriva::V1::CollectionStatsResponse
|
|
82
|
+
# --- Admin ---
|
|
83
|
+
#
|
|
84
|
+
# Compact runs a forced, synchronous compaction pass on a collection and
|
|
85
|
+
# returns only after it completes.
|
|
86
|
+
rpc :Compact, ::Scriva::V1::CompactRequest, ::Scriva::V1::CompactResponse
|
|
87
|
+
# Snapshot streams a consistent, gzip-compressed tar archive of the whole
|
|
88
|
+
# database. Restore by extracting it into a data directory. gRPC-only:
|
|
89
|
+
# binary streaming does not map cleanly onto the REST gateway.
|
|
90
|
+
rpc :Snapshot, ::Scriva::V1::SnapshotRequest, stream(::Scriva::V1::SnapshotChunk)
|
|
91
|
+
# --- Replication (R1) ---
|
|
92
|
+
#
|
|
93
|
+
# Replicate is the leader's log-shipping feed: a follower tails committed
|
|
94
|
+
# segment entries, each tagged with a monotonic global sequence number (LSN),
|
|
95
|
+
# and applies them through the normal write path to stay consistent. The
|
|
96
|
+
# follower asks to resume from the last LSN it applied (from_lsn); the leader
|
|
97
|
+
# streams every committed entry with lsn > from_lsn — first any recent history
|
|
98
|
+
# still buffered, then live writes as they commit. A follower too far behind
|
|
99
|
+
# for the leader's in-memory buffer gets FAILED_PRECONDITION and must
|
|
100
|
+
# re-bootstrap from a Snapshot. gRPC-only (binary, long-lived stream).
|
|
101
|
+
rpc :Replicate, ::Scriva::V1::ReplicateRequest, stream(::Scriva::V1::ReplicationRecord)
|
|
102
|
+
# ReplicationStatus reports the leader's current LSN and, for each connected
|
|
103
|
+
# follower, the last LSN shipped to it and its lag. Used for observability and
|
|
104
|
+
# to read the leader's LSN watermark before bootstrapping a fresh follower.
|
|
105
|
+
rpc :ReplicationStatus, ::Scriva::V1::ReplicationStatusRequest, ::Scriva::V1::ReplicationStatusResponse
|
|
106
|
+
# --- Failover (R3) ---
|
|
107
|
+
#
|
|
108
|
+
# Promote flips a caught-up follower into a leader: it stops replicating from
|
|
109
|
+
# its upstream, lifts the read-only guard, and begins accepting writes.
|
|
110
|
+
# Promotion is refused with FAILED_PRECONDITION when the node is not a
|
|
111
|
+
# follower, or when its replication lag (last-known leader LSN minus applied
|
|
112
|
+
# LSN) exceeds the server's configured threshold — pass force to override that
|
|
113
|
+
# guard when the leader is unrecoverable and some divergence is acceptable.
|
|
114
|
+
# This is an admin operation and requires a read-write API key. Promotion is a
|
|
115
|
+
# one-way transition; automatic leader election is out of scope.
|
|
116
|
+
rpc :Promote, ::Scriva::V1::PromoteRequest, ::Scriva::V1::PromoteResponse
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
Stub = Service.rpc_stub_class
|
|
120
|
+
end
|
|
121
|
+
# --- Collection management ---
|
|
122
|
+
end
|
|
123
|
+
end
|
data/lib/scriva.rb
ADDED
data/scriva.gemspec
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require_relative "lib/scriva/version"
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |spec|
|
|
4
|
+
spec.name = "scriva"
|
|
5
|
+
spec.version = Scriva::VERSION
|
|
6
|
+
spec.authors = ["srjn45"]
|
|
7
|
+
spec.email = ["29410402+srjn45@users.noreply.github.com"]
|
|
8
|
+
spec.summary = "Ruby gRPC client for ScrivaDB"
|
|
9
|
+
spec.description = "A thin, idiomatic Ruby wrapper over the ScrivaDB gRPC API."
|
|
10
|
+
spec.homepage = "https://github.com/srjn45/scriva"
|
|
11
|
+
spec.license = "MIT"
|
|
12
|
+
spec.required_ruby_version = ">= 3.1"
|
|
13
|
+
|
|
14
|
+
spec.files = Dir["lib/**/*.rb"] + ["README.md", "scriva.gemspec"]
|
|
15
|
+
spec.require_paths = ["lib"]
|
|
16
|
+
|
|
17
|
+
spec.add_dependency "grpc", "~> 1.60"
|
|
18
|
+
spec.add_dependency "google-protobuf", "~> 3.25"
|
|
19
|
+
|
|
20
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
21
|
+
spec.metadata["source_code_uri"] = "https://github.com/srjn45/scriva/tree/main/clients/ruby"
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: scriva
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.2.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- srjn45
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-07-23 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: grpc
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.60'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.60'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: google-protobuf
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '3.25'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '3.25'
|
|
41
|
+
description: A thin, idiomatic Ruby wrapper over the ScrivaDB gRPC API.
|
|
42
|
+
email:
|
|
43
|
+
- 29410402+srjn45@users.noreply.github.com
|
|
44
|
+
executables: []
|
|
45
|
+
extensions: []
|
|
46
|
+
extra_rdoc_files: []
|
|
47
|
+
files:
|
|
48
|
+
- README.md
|
|
49
|
+
- lib/scriva.rb
|
|
50
|
+
- lib/scriva/client.rb
|
|
51
|
+
- lib/scriva/proto/scriva_pb.rb
|
|
52
|
+
- lib/scriva/proto/scriva_services_pb.rb
|
|
53
|
+
- lib/scriva/version.rb
|
|
54
|
+
- scriva.gemspec
|
|
55
|
+
homepage: https://github.com/srjn45/scriva
|
|
56
|
+
licenses:
|
|
57
|
+
- MIT
|
|
58
|
+
metadata:
|
|
59
|
+
homepage_uri: https://github.com/srjn45/scriva
|
|
60
|
+
source_code_uri: https://github.com/srjn45/scriva/tree/main/clients/ruby
|
|
61
|
+
post_install_message:
|
|
62
|
+
rdoc_options: []
|
|
63
|
+
require_paths:
|
|
64
|
+
- lib
|
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '3.1'
|
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
requirements: []
|
|
76
|
+
rubygems_version: 3.5.22
|
|
77
|
+
signing_key:
|
|
78
|
+
specification_version: 4
|
|
79
|
+
summary: Ruby gRPC client for ScrivaDB
|
|
80
|
+
test_files: []
|