schemaless_rest_api 0.2.2 → 0.3.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3731a9bf8d9709cc8590747fa3393be24b2bbf08dcbf369885f6117020c55044
|
4
|
+
data.tar.gz: f9688d82dd36200103071c0145d9ba30d51e66df14ef4d25b3ba586bd62aad84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b890245a0f5a8d6ef1882bd6a84836bbffd392727b6451e163aaf10cefbc42421866308e03cd06ff285ffa849e52ef2bd96ae5752f4c1fa191f4253b6c406e47
|
7
|
+
data.tar.gz: a70a459a193612c444da3ecacc54f6484abc7a8104d3f2e3dca20a168eb6fa586319fe36d03a387f8b270fe0fb0db918ce04cbf732afde1ac61bd1291e4a62e6
|
@@ -42,6 +42,13 @@ module MongoClient
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
if ENV['mongo_root_password']
|
45
46
|
MongoClient.client = Mongo::Client.new(
|
46
47
|
[ "#{ENV['mongodb']}:27017" ],
|
47
|
-
:
|
48
|
+
database: 'api', password: ENV['mongo_root_password'],
|
49
|
+
user: 'root')
|
50
|
+
else
|
51
|
+
MongoClient.client = Mongo::Client.new(
|
52
|
+
[ "#{ENV['mongodb']}:27017" ],
|
53
|
+
database: 'api')
|
54
|
+
end
|
@@ -49,14 +49,20 @@ class RestServer < Sinatra::Base
|
|
49
49
|
status 201
|
50
50
|
end
|
51
51
|
post "/#{model.downcase}" do
|
52
|
-
id = SecureRandom.uuid
|
53
52
|
data = JSON.parse(request.body.read)
|
53
|
+
id = ''
|
54
|
+
if (data['id'])
|
55
|
+
id = data['id'].to_s
|
56
|
+
else
|
57
|
+
id = SecureRandom.uuid
|
58
|
+
data['id'] = id
|
59
|
+
end
|
54
60
|
if ENV['mongodb']
|
55
61
|
MongoClient.insert(model, data, id)
|
56
62
|
else
|
57
63
|
Entities.models[model][id] = data
|
58
64
|
end
|
59
|
-
[201, id]
|
65
|
+
[201, JSON.generate({ id: id })]
|
60
66
|
end
|
61
67
|
|
62
68
|
documentation "Retrieve all instances of #{model} or filtered by query param" do
|
@@ -73,7 +79,7 @@ class RestServer < Sinatra::Base
|
|
73
79
|
[200, JSON.generate(MongoClient.find_all(model, params))]
|
74
80
|
end
|
75
81
|
else
|
76
|
-
return
|
82
|
+
return JSON.generate(Entities.models[model].values) if params == {}
|
77
83
|
|
78
84
|
Entities.models[model].values.find_all { |val| val[params.keys[0]] == params.values[0] }
|
79
85
|
end
|
data/lib/schemaless_rest_api.rb
CHANGED
@@ -6,9 +6,15 @@ require_relative "schemaless_rest_api/entities"
|
|
6
6
|
require "json"
|
7
7
|
require "securerandom"
|
8
8
|
|
9
|
+
def models_env_not_set
|
10
|
+
!ENV["models"] || ENV["models"].empty?
|
11
|
+
end
|
12
|
+
|
9
13
|
def extract_models
|
14
|
+
return [] if (!Entities.models.empty? && models_env_not_set)
|
15
|
+
|
10
16
|
error_msg = "Make 'models' environment variable an array (e.g ['model1', 'model2'])"
|
11
|
-
raise "Please set 'models' ENV variable. #{error_msg}" if ENV["models"].nil?
|
17
|
+
raise "Please set 'models' ENV variable or create 'db.json'. #{error_msg}" if ENV["models"].nil?
|
12
18
|
|
13
19
|
models = eval(ENV["models"])
|
14
20
|
raise error_msg unless models.is_a? Array
|
@@ -16,6 +22,24 @@ def extract_models
|
|
16
22
|
models
|
17
23
|
end
|
18
24
|
|
25
|
+
SEED_FILE = 'db.json'.freeze
|
26
|
+
|
27
|
+
if File.exist? SEED_FILE
|
28
|
+
puts "Seeding db based on '#{SEED_FILE}'"
|
29
|
+
seed_data = JSON.parse(File.read(SEED_FILE))
|
30
|
+
seed_data.each do |entity, values|
|
31
|
+
Entities.models[entity.to_sym] = {} unless Entities.models[entity.to_sym]
|
32
|
+
if values.is_a? Array
|
33
|
+
values.each do |value|
|
34
|
+
next unless value['id']
|
35
|
+
Entities.models[entity.to_sym][value['id'].to_s] = value
|
36
|
+
end
|
37
|
+
else
|
38
|
+
puts "Entity 'entity' doesn't have array, skipping"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
19
43
|
extract_models.each do |model|
|
20
44
|
Entities.models[model.to_sym] = {}
|
21
45
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schemaless_rest_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Garratt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rackup
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: mongo
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
146
|
- !ruby/object:Gem::Version
|
133
147
|
version: '0'
|
134
148
|
requirements: []
|
135
|
-
rubygems_version: 3.
|
149
|
+
rubygems_version: 3.5.3
|
136
150
|
signing_key:
|
137
151
|
specification_version: 4
|
138
152
|
summary: TSimple schema less rest API that have entities configured through environment
|