mongo_api 0.1.0 → 0.1.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 +4 -4
- data/CHANGELOG.md +18 -1
- data/Gemfile.lock +1 -1
- data/README.md +60 -1
- data/lib/mongo_api/base.rb +8 -1
- data/lib/mongo_api/request.rb +4 -0
- data/lib/mongo_api/version.rb +1 -1
- data/mongo_api.gemspec +37 -0
- metadata +4 -5
- data/.byebug_history +0 -18
- data/.env +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e35665e93037350fedb5c17c84f80cda9524388ec20c1160a6160e233723d1f7
|
4
|
+
data.tar.gz: 20bfae5242c903349258b4ec7fc4532b461eb8ddb0ab606bd4da4aba7d1236ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f262ed2e54e7965b33137af848d08d2ed9e14efa0e7a2573b9ec829da81be1c02c7e5170ce063f32aa46add1ca2ea114d9de03744e7c7f907a9353b798fa3c61
|
7
|
+
data.tar.gz: d6391c6921483b9a9017c9295995ef531e7c68676f049b068da0a35df37e58617a7c7c19c5492942fb6688fa6fe8dd216fb49636245cb2b249d9c5af160da0e4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
|
-
|
1
|
+
# [Release]
|
2
2
|
|
3
3
|
## [0.1.0] - 2023-08-05
|
4
4
|
|
5
5
|
- Initial release
|
6
|
+
- Add class `MongoApi::Request` and `MongoApi::Base` to handle requests to the API and to handle requests to the database in a simple way on MongoDb Atlas Data API.
|
7
|
+
- `MongoApi::Request` methods:
|
8
|
+
- `#find_one`: returns a document from a collection by filter and projection
|
9
|
+
- `#insert_one`: inserts a document into a collection
|
10
|
+
- `#insert_many`: inserts multiple documents into a collection
|
11
|
+
- `#update_one`: updates a document from a collection by filter
|
12
|
+
- `#update_many`: updates multiple documents from a collection by filter
|
13
|
+
- `#replace_one`: replaces a document from a collection by filter
|
14
|
+
- `#delete_one`: deletes a document from a collection by filter
|
15
|
+
- `#delete_many`: deletes multiple documents from a collection by filter
|
16
|
+
- `MongoApi::Base` methods:
|
17
|
+
- `#all`: returns all documents from a collection
|
18
|
+
- `#find`: returns a document from a collection by filter, projection, sort and limit
|
19
|
+
- `#insert`: inserts a document into a collection
|
20
|
+
- `#update`: updates a document from a collection by filter
|
21
|
+
- `#replace`: replaces a document from a collection by filter
|
22
|
+
- `#destroy`: deletes a document from a collection by filter
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -18,17 +18,76 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
18
18
|
|
19
19
|
The gem is a simple wrapper around the MongoDb Atlas Data API to make it easier to use in Ruby applications to access data in MongoDb Atlas.
|
20
20
|
|
21
|
+
Set environment variables for the MongoDb Atlas API URL, API Key, Database Name, Collection Name and Data Source Name:
|
22
|
+
|
23
|
+
```env
|
24
|
+
MONGO_ATLAS_API_URL=https://cloud.mongodb.com/api/atlas/v1.0
|
25
|
+
MONGO_ATLAS_API_KEY=1234567890
|
26
|
+
MONGO_DATABASE_NAME=sample_mflix
|
27
|
+
MONGO_COLLECTION_NAME=users
|
28
|
+
MONGO_DATASOURCE_NAME=sample_mflix
|
29
|
+
```
|
30
|
+
|
21
31
|
### Example
|
22
32
|
|
23
33
|
```ruby
|
24
34
|
require 'mongo_api'
|
25
35
|
|
26
36
|
class Users < MongoApi::Base
|
27
|
-
|
37
|
+
base_url ENV['MONGO_ATLAS_API_URL']
|
28
38
|
default_headers 'Content-Type': 'application/json',
|
29
39
|
'api-key': ENV['MONGO_ATLAS_API_KEY'],
|
30
40
|
'Access-Control-Request-Headers': '*'
|
31
41
|
end
|
42
|
+
|
43
|
+
# Get all users
|
44
|
+
# @param [Hash] filter: The query predicate.
|
45
|
+
# @param [Hash] sort: The order in which to return matching documents.
|
46
|
+
users = Users.all(limit: 10, sort: { _id: 1 }) # => [ { "_id" => "5f9a9a9a9a9a9a9a9a9a9a9a", "name" => "John Doe" }, ... ]
|
47
|
+
|
48
|
+
# Insert a new user
|
49
|
+
# @param [Hash] document: The document to insert.
|
50
|
+
user = Users.insert({ name: 'Jane Doe' }) # => {"insertedId"=>"64cf1065f549de65c4908375"}
|
51
|
+
|
52
|
+
# Find a user by name
|
53
|
+
# @param [Hash] filter: The query predicate.
|
54
|
+
# @param [Hash] projection: The fields to return in the matching document.
|
55
|
+
# @param [Hash] sort: The order in which to return matching documents.
|
56
|
+
# @param [Integer] limit: The maximum number of documents to return.
|
57
|
+
user = Users.find(filter: { name: 'Jane Doe' }) # => [ { "_id" => "5f9a9a9a9a9a9a9a9a9a9a9a", "name" => "Jane Doe" } ]
|
58
|
+
|
59
|
+
# Update a user
|
60
|
+
# @param [Hash] where: The query predicate.
|
61
|
+
# @param [Hash] set: The fields to update in the matching document.
|
62
|
+
user = Users.update(where: { name: 'Jane Doe' }, set: { name: 'Jane Smith' }) # => {"matchedCount"=>1, "modifiedCount"=>1}
|
63
|
+
|
64
|
+
# Update All users
|
65
|
+
# @param [Hash] where: The query predicate.
|
66
|
+
# @param [Hash] set: The fields to update in the matching document.
|
67
|
+
user = Users.update_all(where: { name: 'Jane Smith' }, set: { name: 'Jane Doe' }) # => {"matchedCount"=>1, "modifiedCount"=>1}
|
68
|
+
|
69
|
+
# Destroy a user
|
70
|
+
# @param [Hash] where: The query predicate.
|
71
|
+
user = Users.destroy(where: { name: 'Jane Smith' }) # => {"deletedCount"=>1}
|
72
|
+
|
73
|
+
# Destroy All users
|
74
|
+
# @param [Hash] where: The query predicate.
|
75
|
+
user = Users.destroy_all(where: { name: 'Jane Smith' }) # => {"deletedCount"=>1}
|
76
|
+
|
77
|
+
# Count users
|
78
|
+
user = Users.count # => 10
|
79
|
+
|
80
|
+
# Others methods
|
81
|
+
Users.find_one(filter: {}, :projection: {})
|
82
|
+
Users.insert_one({})
|
83
|
+
Users.insert_many([{}, {}])
|
84
|
+
Users.update_one(filter: {}, :update: {}, upsert: false)
|
85
|
+
Users.update_many(filter: {}, :update: {}, upsert: false)
|
86
|
+
Users.delete_one(filter: {})
|
87
|
+
Users.delete_many(filter: {})
|
88
|
+
Users.replace_one(filter: {}, replacement: {}, upsert: false)
|
89
|
+
Users.aggregate(pipeline: [])
|
90
|
+
Users.count
|
32
91
|
```
|
33
92
|
|
34
93
|
## Development
|
data/lib/mongo_api/base.rb
CHANGED
@@ -90,11 +90,18 @@ module MongoApi
|
|
90
90
|
count
|
91
91
|
end
|
92
92
|
|
93
|
+
# This method sets the collection name
|
94
|
+
#
|
95
|
+
# @return [String] the collection name
|
96
|
+
def self.collection_name
|
97
|
+
ancestors.first.to_s.gsub("::", "_").downcase
|
98
|
+
end
|
99
|
+
|
93
100
|
class << self
|
94
101
|
def body
|
95
102
|
{
|
96
103
|
database: ENV["MONGO_DATABASE_NAME"],
|
97
|
-
collection:
|
104
|
+
collection: collection_name,
|
98
105
|
dataSource: ENV["MONGO_DATASOURCE_NAME"]
|
99
106
|
}
|
100
107
|
end
|
data/lib/mongo_api/request.rb
CHANGED
@@ -175,6 +175,10 @@ module MongoApi
|
|
175
175
|
class << self
|
176
176
|
private
|
177
177
|
|
178
|
+
# This method is used to parse the response
|
179
|
+
#
|
180
|
+
# @param [Block] block
|
181
|
+
# @return [Hash|Array] the documents array or the response
|
178
182
|
def parse_response(&block)
|
179
183
|
data = block.call
|
180
184
|
|
data/lib/mongo_api/version.rb
CHANGED
data/mongo_api.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/mongo_api/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "mongo_api"
|
7
|
+
spec.version = MongoApi::VERSION
|
8
|
+
spec.authors = ["Alef Ojeda de Oliveira"]
|
9
|
+
spec.email = ["alef.oliveira@dimensa.com.br"]
|
10
|
+
|
11
|
+
spec.summary = "MongoApi is a gem to help you to create a REST API using MongoDB Atlas Data API."
|
12
|
+
spec.description = "Use this gem to create a REST API using MongoDB Atlas Data API."
|
13
|
+
spec.homepage = "https://github.com/nemuba/mongo_api"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 3.2.0"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = "https://github.com/nemuba/mongo_api"
|
18
|
+
spec.metadata["source_code_uri"] = "https://github.com/nemuba/mongo_api/tree/main"
|
19
|
+
spec.metadata["changelog_uri"] = "https://github.com/nemuba/mongo_api/blob/main/CHANGELOG.md"
|
20
|
+
|
21
|
+
# Specify which files should be added to the gem when it is released.
|
22
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
|
+
spec.files = Dir.chdir(__dir__) do
|
24
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
25
|
+
(File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
# Uncomment to register a new dependency of your gem
|
33
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
34
|
+
|
35
|
+
# For more information and examples about making a new gem, check out our
|
36
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alef Ojeda de Oliveira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Use this gem to create a REST API using MongoDB Atlas Data API.
|
14
14
|
email:
|
@@ -17,8 +17,6 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
- ".byebug_history"
|
21
|
-
- ".env"
|
22
20
|
- ".rspec"
|
23
21
|
- ".rubocop.yml"
|
24
22
|
- CHANGELOG.md
|
@@ -31,6 +29,7 @@ files:
|
|
31
29
|
- lib/mongo_api/base.rb
|
32
30
|
- lib/mongo_api/request.rb
|
33
31
|
- lib/mongo_api/version.rb
|
32
|
+
- mongo_api.gemspec
|
34
33
|
- sig/mongo_api.rbs
|
35
34
|
homepage: https://github.com/nemuba/mongo_api
|
36
35
|
licenses:
|
@@ -54,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
53
|
- !ruby/object:Gem::Version
|
55
54
|
version: '0'
|
56
55
|
requirements: []
|
57
|
-
rubygems_version: 3.4.
|
56
|
+
rubygems_version: 3.4.10
|
58
57
|
signing_key:
|
59
58
|
specification_version: 4
|
60
59
|
summary: MongoApi is a gem to help you to create a REST API using MongoDB Atlas Data
|
data/.byebug_history
DELETED
data/.env
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
MONGO_ATLAS_API_URL='https://sa-east-1.aws.data.mongodb-api.com/app/data-ixudq/endpoint/data/v1'
|
2
|
-
MONGO_ATLAS_API_KEY='y2XeNaFtEH2PtFFvJtHS1v9ZnvzaR6r8vUwdPNhWTgGvJfa9XzxFjlVaVAH6aw3z'
|
3
|
-
MONGO_DATABASE_NAME='mongo_api'
|
4
|
-
MONGO_COLLECTION_NAME='users'
|
5
|
-
MONGO_DATASOURCE_NAME='ojeda'
|