incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Shorin <kxe...@gmail.com>
Subject Re: Database information from validate_doc_update
Date Sat, 09 Nov 2013 15:21:25 GMT
Hm..it works for me on CouchDB 1.5, but as Robert said, using native
query server is dangerous and since it's completely undocumented and
may use internal CouchDB API there is no any warranties that code will
work correctly in future releases.
--
,,,^..^,,,


On Sat, Nov 9, 2013 at 1:02 PM, first-leon@yandex.ru
<first-leon@yandex.ru> wrote:
> It is very good!
> But, i create validation function and see error:
>
> Error: EXIT
>
> {{badmatch,[]},
>  [{couch_query_servers,new_process,3,
> [{file,"couch_query_servers.erl"},{line,472}]},
>   {couch_query_servers,lang_proc,3,
> [{file,"couch_query_servers.erl"},{line,462}]},
>   {couch_query_servers,handle_call,3,
> [{file,"couch_query_servers.erl"},{line,322}]},
>   {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},
> {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
>
> I am not understand Erlang code, and not see error details.
> You have it working?
>
> In /etc/couchdb/local.ini i added
> [native_query_servers]
> erlang = {couch_native_process, start_link, []}
>
>
>> Currently, this is possible only via native Erlang query server:
>>
>> fun(NewDoc, OldDoc, {UserCtx}, SecObj) ->
>>    DbName = couch_util:get_value(<<"db">>, UserCtx),
>>    {ok, Db} = couch_db:open_int(DbName, [{user_ctx, UserCtx}]),
>>    {ok, Info} = couch_db:get_db_info(Db),
>>    DiskSize = couch_util:get_value(disk_size, Info),
>>    case DiskSize < 100000 of  %% ~100KB
>>      true ->
>>        ok;
>>      false ->
>>        throw({[{<<"forbidden">>, <<"quota limit reached">>}]})
>>    end,
>>    1
>> end.
>>
>>
>>
>> --
>> ,,,^..^,,,
>>
>>
>> On Sat, Nov 9, 2013 at 7:56 AM, first-leon@yandex.ru
>> <first-leon@yandex.ru> wrote:
>>>
>>> Hello.
>>>
>>> Can I get information about the database as a function of
>>> validate_doc_update? For example, to find out the size of the database or
>>> the number of documents.
>>>
>>> Example:
>>> function(newDoc, oldDoc, userCtx) {
>>>   if ( thisDb.disk_size > 1000 ) throw({forbidden : 'you have exceeded
>>> the
>>> limit'});
>>> }
>>>
>>> It is possible?
>>>
>>> Thanks.
>
>

Mime
View raw message