forked from ravendb/ravendb-python-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGetConnectionStringOperation.py
More file actions
73 lines (56 loc) · 3.1 KB
/
Copy pathGetConnectionStringOperation.py
File metadata and controls
73 lines (56 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import json
from typing import Dict, Optional
import requests
from ravendb import RavenCommand, ServerNode
from ravendb.documents.operations.definitions import MaintenanceOperation
from ravendb.documents.operations.etl.configuration import RavenConnectionString
from ravendb.documents.operations.etl.olap import OlapConnectionString
from ravendb.documents.operations.etl.sql import SqlConnectionString
from ravendb.serverwide.server_operation_executor import ConnectionStringType
class GetConnectionStringsResult:
def __init__(
self,
raven_connection_strings: Dict[str, RavenConnectionString] = None,
sql_connection_strings: Dict[str, SqlConnectionString] = None,
olap_connection_strings: Dict[str, OlapConnectionString] = None,
):
self.raven_connection_strings = raven_connection_strings
self.sql_connection_strings = sql_connection_strings
self.olap_connection_strings = olap_connection_strings
def to_json(self) -> Dict:
return {
"RavenConnectionStrings": self._raven_connection_strings,
"SqlConnectionStrings": self._sql_connection_strings,
"OlapConnectionStrings": self._olap_connection_strings,
}
@classmethod
def from_json(cls, json_dict: Dict) -> "GetConnectionStringsResult":
return cls(
raven_connection_strings=json_dict["RavenConnectionStrings"],
sql_connection_strings=json_dict["SqlConnectionStrings"],
olap_connection_strings=json_dict["OlapConnectionStrings"],
)
class GetConnectionStringsOperation(MaintenanceOperation[GetConnectionStringsResult]):
def __init__(self, connection_string_name: str = None, connection_string_type: ConnectionStringType = None):
self._connection_string_name = connection_string_name
self._type = connection_string_type
def get_command(self, conventions: "DocumentConventions") -> "RavenCommand[GetConnectionStringsResult]":
return self.GetConnectionStringsCommand(self._connection_string_name, self._type)
class GetConnectionStringsCommand(RavenCommand[GetConnectionStringsResult]):
def __init__(self, connection_string_name: str = None, connection_string_type: ConnectionStringType = None):
super().__init__(GetConnectionStringsResult)
self._connection_string_name = connection_string_name
self._type = connection_string_type
def is_read_request(self) -> bool:
return True
def create_request(self, node: ServerNode) -> requests.Request:
url = f"{node.url}/databases/{node.database}/admin/connection-strings"
if self._connection_string_name:
url += f"?connectionStringName={self._connection_string_name}&type={self._type.value}"
request = requests.Request("GET")
request.url = url
return request
def set_response(self, response: Optional[str], from_cache: bool) -> None:
if response is None:
self._throw_invalid_response()
self.result = GetConnectionStringsResult.from_json(json.loads(response))