couchdb_basic 0.0.1.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/couchdb_basic.rb +90 -0
  2. metadata +111 -0
@@ -0,0 +1,90 @@
1
+ require 'multi_json'
2
+ require 'rest-client'
3
+ require 'uri-handler'
4
+
5
+ class Couchdb
6
+
7
+ def initialize(url)
8
+ @url = url
9
+ end
10
+
11
+ def _get(url="")
12
+ r = RestClient.get "#{@url}#{url}"
13
+ MultiJson.load(r.to_str, :symbolize_keys => true)
14
+ end
15
+
16
+ def _post(data,bulk=false)
17
+ begin
18
+ url = @url
19
+ if bulk
20
+ url = "#{url}/_bulk_docs"
21
+ end
22
+ r = RestClient.post "#{url}", MultiJson.dump(data), :content_type => :json, :accept => :json
23
+ rescue RestClient::Forbidden => e
24
+ puts e.response.to_str
25
+ r = e.response
26
+ end
27
+ MultiJson.load(r.to_str, :symbolize_keys => true)
28
+ end
29
+
30
+ def db()
31
+ _get()
32
+ end
33
+
34
+ def create(doc)
35
+ r = _post(doc)
36
+ doc[:_id] = r[:id]
37
+ doc[:_rev] = r[:rev]
38
+ doc
39
+ end
40
+
41
+ def create_bulk(docs)
42
+ docs = {:docs=>docs}
43
+ _post(docs,true)
44
+ end
45
+
46
+ def update(doc)
47
+ r = _post(doc)
48
+ doc[:_rev] = r[:rev]
49
+ doc
50
+ end
51
+
52
+ def get(id)
53
+ begin
54
+ _get "/#{id.to_uri}"
55
+ rescue RestClient::ResourceNotFound
56
+ nil
57
+ rescue RestClient::BadRequest => e
58
+ puts e.response.to_str
59
+ nil
60
+ end
61
+ end
62
+
63
+ def delete(doc)
64
+ r = RestClient.delete "#{@url}/#{doc[:_id]}?rev=#{doc[:_rev]}", :content_type => :json
65
+ nil
66
+ end
67
+
68
+ def view(design,view,args={})
69
+ url = "/_design/#{design}/_view/#{view}?"
70
+ if args.has_key?(:key)
71
+ key = MultiJson.dump(args[:key]).to_uri
72
+ url << "&key=#{key}"
73
+ end
74
+ if args.has_key?(:group)
75
+ key = MultiJson.dump(args[:group]).to_uri
76
+ url << "&group=#{key}"
77
+ end
78
+ if args.has_key?(:reduce)
79
+ key = MultiJson.dump(args[:reduce]).to_uri
80
+ url << "&reduce=#{key}"
81
+ end
82
+ _get(url)[:rows]
83
+ end
84
+
85
+ def get_all()
86
+ docs = []
87
+ _get("/_all_docs?include_docs=true")[:rows].each{ | row | docs << row[:doc ] }
88
+ docs
89
+ end
90
+ end
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: couchdb_basic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.beta
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Diogo Silva
9
+ - Bruno Giminiani
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-03-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: multi_json
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rest_client
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: uri-handler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ description: A lib for documents database operations.
80
+ email: diogo@cncflora.jbrj.gov.br
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - lib/couchdb_basic.rb
86
+ homepage: https://github.com/CNCFlora/couchdb-basic
87
+ licenses:
88
+ - Apache License 2.0
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>'
103
+ - !ruby/object:Gem::Version
104
+ version: 1.3.1
105
+ requirements: []
106
+ rubyforge_project:
107
+ rubygems_version: 1.8.23
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: A basic couchdb database lib.
111
+ test_files: []