|
Whole part for interacting with the CouchDB from erlang looks like the following: (taken mostly from Hovercraft sources):- open_db(DbName) ->
- couch_db:open(DbName, [?ADMIN_USER_CTX]).
- create_db(DbName) ->
- create_db(DbName, []).
- create_db(DbName, Options) ->
- case couch_server:create(DbName, Options) of
- {ok, Db} ->
- couch_db:close(Db),
- {ok, created};
- Error ->
- {error, Error}
- end.
- delete_db(DbName) ->
- delete_db(DbName, [?ADMIN_USER_CTX]).
- delete_db(DbName, Options) ->
- case couch_server:delete(DbName, Options) of
- ok ->
- {ok, deleted};
- Error ->
- {error, Error}
- end.
- save_doc(#db{}=Db, Doc) ->
- CouchDoc = ejson_to_couch_doc(Doc),
- {ok, Rev} = couch_db:update_doc(Db, CouchDoc, []),
- {ok, {[{id, CouchDoc#doc.id}, {rev, couch_doc:rev_to_str(Rev)}]}};
- save_doc(DbName, Docs) ->
- {ok, Db} = open_db(DbName),
- save_doc(Db, Docs).
- ejson_to_couch_doc({DocProps}) ->
- Doc = case proplists:get_value(<<"_id">>, DocProps) of
- undefined ->
- DocId = couch_uuids:new(),
- {[{<<"_id">>, DocId}|DocProps]};
- _DocId ->
- {DocProps}
- end,
- couch_doc:from_json_obj(Doc).
复制代码 Full source code for the erlang script as well as ruby is available from GitHub, for Java version you can get it from ‘woodstoxex‘ example under the ‘couchdb’ branch. |
|