1
1
import typing
2
2
3
- from ahnlich_client_py import builders , protocol
4
- from ahnlich_client_py .exceptions import AhnlichClientException
3
+ from ahnlich_client_py import builders
4
+ from ahnlich_client_py .config import AhnlichDBPoolSettings
5
5
from ahnlich_client_py .internals import db_query , db_response
6
6
from ahnlich_client_py .internals import serde_types as st
7
+ from ahnlich_client_py .internals .base_client import BaseClient
7
8
8
9
9
- class AhnlichDBClient :
10
- """Wrapper for interacting with Ahnlich database or ai """
10
+ class AhnlichDBClient ( BaseClient ) :
11
+ """Wrapper for interacting with Ahnlich database"""
11
12
12
13
def __init__ (
13
14
self ,
14
- address : str = None ,
15
- port : int = None ,
16
- timeout_sec : float = 5.0 ,
17
- connection_protocol : protocol . AhnlichProtocol = None ,
15
+ address : str ,
16
+ port : int ,
17
+ connect_timeout_sec : float = 5.0 ,
18
+ pool_settings : AhnlichDBPoolSettings = AhnlichDBPoolSettings () ,
18
19
) -> None :
19
- if not connection_protocol and ( address is None or port is None ):
20
- raise AhnlichClientException (
21
- "Either connection protocol or address and port must be provided"
22
- )
23
- self . protocol = connection_protocol or protocol . AhnlichProtocol (
24
- address = address , port = port , timeout_sec = timeout_sec
20
+
21
+ super (). __init__ (
22
+ address = address ,
23
+ port = port ,
24
+ connect_timeout_sec = connect_timeout_sec ,
25
+ pool_settings = pool_settings ,
25
26
)
27
+
26
28
self .builder = builders .AhnlichDBRequestBuilder ()
27
29
28
- def __del__ (self ):
29
- self . cleanup ()
30
+ def get_response_class (self ):
31
+ return db_response . ServerResult
30
32
31
33
def get_key (
32
34
self , store_name : str , keys : typing .Sequence [db_query .Array ]
33
35
) -> db_response .ServerResult :
34
36
35
37
self .builder .get_key (store_name = store_name , keys = keys )
36
- return self .protocol . process_request (self .builder .to_server_query ())
38
+ return self .process_request (self .builder .to_server_query ())
37
39
38
40
def get_by_predicate (
39
41
self , store_name : str , condition : db_query .PredicateCondition
40
42
) -> db_response .ServerResult :
41
43
self .builder .get_by_predicate (store_name = store_name , condition = condition )
42
- return self .protocol . process_request (self .builder .to_server_query ())
44
+ return self .process_request (self .builder .to_server_query ())
43
45
44
46
def get_sim_n (
45
47
self ,
@@ -56,13 +58,13 @@ def get_sim_n(
56
58
algorithm = algorithm ,
57
59
condition = condition ,
58
60
)
59
- return self .protocol . process_request (self .builder .to_server_query ())
61
+ return self .process_request (self .builder .to_server_query ())
60
62
61
63
def create_pred_index (
62
64
self , store_name : str , predicates : typing .Sequence [str ]
63
65
) -> db_response .ServerResult :
64
66
self .builder .create_pred_index (store_name = store_name , predicates = predicates )
65
- return self .protocol . process_request (self .builder .to_server_query ())
67
+ return self .process_request (self .builder .to_server_query ())
66
68
67
69
def drop_pred_index (
68
70
self ,
@@ -75,7 +77,7 @@ def drop_pred_index(
75
77
predicates = predicates ,
76
78
error_if_not_exists = error_if_not_exists ,
77
79
)
78
- return self .protocol . process_request (self .builder .to_server_query ())
80
+ return self .process_request (self .builder .to_server_query ())
79
81
80
82
def set (
81
83
self ,
@@ -85,27 +87,27 @@ def set(
85
87
],
86
88
) -> db_response .ServerResult :
87
89
self .builder .set (store_name = store_name , inputs = inputs )
88
- return self .protocol . process_request (self .builder .to_server_query ())
90
+ return self .process_request (self .builder .to_server_query ())
89
91
90
92
def delete_key (
91
93
self , store_name : str , keys : typing .Sequence [db_query .Array ]
92
94
) -> db_response .ServerResult :
93
95
self .builder .delete_key (store_name = store_name , keys = keys )
94
- return self .protocol . process_request (self .builder .to_server_query ())
96
+ return self .process_request (self .builder .to_server_query ())
95
97
96
98
def delete_predicate (
97
99
self , store_name : str , condition : db_query .PredicateCondition
98
100
) -> db_response .ServerResult :
99
101
self .builder .delete_predicate (store_name = store_name , condition = condition )
100
- return self .protocol . process_request (self .builder .to_server_query ())
102
+ return self .process_request (self .builder .to_server_query ())
101
103
102
104
def drop_store (
103
105
self , store_name : str , error_if_not_exists : bool
104
106
) -> db_response .ServerResult :
105
107
self .builder .drop_store (
106
108
store_name = store_name , error_if_not_exists = error_if_not_exists
107
109
)
108
- return self .protocol . process_request (self .builder .to_server_query ())
110
+ return self .process_request (self .builder .to_server_query ())
109
111
110
112
def create_store (
111
113
self ,
@@ -125,36 +127,32 @@ def create_store(
125
127
error_if_exists = error_if_exists ,
126
128
)
127
129
message = self .builder .to_server_query ()
128
- return self .protocol . process_request (message = message )
130
+ return self .process_request (message = message )
129
131
130
132
def list_stores (self ) -> db_response .ServerResult :
131
133
self .builder .list_stores ()
132
- return self .protocol . process_request (self .builder .to_server_query ())
134
+ return self .process_request (self .builder .to_server_query ())
133
135
134
136
def info_server (self ) -> db_response .ServerResult :
135
137
self .builder .info_server ()
136
- return self .protocol . process_request (
138
+ return self .process_request (
137
139
message = self .builder .to_server_query (),
138
140
)
139
141
140
142
def list_clients (self ) -> db_response .ServerResult :
141
143
self .builder .list_clients ()
142
- return self .protocol . process_request (
144
+ return self .process_request (
143
145
message = self .builder .to_server_query (),
144
146
)
145
147
146
148
def ping (self ) -> db_response .ServerResult :
147
149
self .builder .ping ()
148
- return self .protocol . process_request (message = self .builder .to_server_query ())
150
+ return self .process_request (message = self .builder .to_server_query ())
149
151
150
152
def pipeline (self ) -> builders .AhnlichDBRequestBuilder :
151
153
"""Gives you a request builder to create multple requests"""
152
154
return self .builder
153
155
154
156
def exec (self ) -> db_response .ServerResult :
155
157
"""Executes a pipelined request"""
156
- return self .protocol .process_request (message = self .builder .to_server_query ())
157
-
158
- def cleanup (self ):
159
- """closes the socket connection as well as connection pool"""
160
- self .protocol .cleanup ()
158
+ return self .process_request (message = self .builder .to_server_query ())
0 commit comments