@@ -467,11 +467,11 @@ defmodule Arangox.Connection do
467467 end
468468
469469 @ impl true
470- def handle_execute ( _q , % Request { } = request , _opts , % __MODULE__ { } = state ) do
470+ def handle_execute ( _q , % Request { } = request , opts , % __MODULE__ { } = state ) do
471471 request =
472472 request
473473 |> merge_headers ( state . headers )
474- |> maybe_prepend_database ( state )
474+ |> maybe_prepend_database ( state , opts )
475475 |> maybe_encode_body ( state )
476476
477477 case Client . request ( request , state ) do
@@ -533,17 +533,27 @@ defmodule Arangox.Connection do
533533
534534 defp sanitize_headers ( % { headers: _headers } = struct ) when is_map ( struct ) , do: struct
535535
536+ defp maybe_prepend_database ( % Request { path: path } = request , state , opts ) do
537+ case Keyword . get ( opts , :database ) do
538+ nil ->
539+ do_db_prepend ( request , state )
540+
541+ db ->
542+ % { request | path: "/_db/" <> db <> path }
543+ end
544+ end
545+
536546 # Only prepends when not velocy or nil or path already contains /_db/
537- defp maybe_prepend_database ( % Request { } = request , % { client: VelocyClient } ) ,
547+ defp do_db_prepend ( % Request { } = request , % { client: VelocyClient } ) ,
538548 do: request
539549
540- defp maybe_prepend_database ( % Request { } = request , % { database: nil } ) ,
550+ defp do_db_prepend ( % Request { } = request , % { database: nil } ) ,
541551 do: request
542552
543- defp maybe_prepend_database ( % Request { path: "/_db/" <> _ } = request , % { database: _db } ) ,
553+ defp do_db_prepend ( % Request { path: "/_db/" <> _ } = request , % { database: _db } ) ,
544554 do: request
545555
546- defp maybe_prepend_database ( % Request { path: path } = request , % { database: db } ) ,
556+ defp do_db_prepend ( % Request { path: path } = request , % { database: db } ) ,
547557 do: % { request | path: "/_db/" <> db <> path }
548558
549559 # Only encodes when not velocy or empty string
0 commit comments