ab_engine 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ab_engine-0.2.4 → ab_engine-0.2.6}/PKG-INFO +1 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/driver.py +2 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/env/config.py +6 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/error.yaml +2 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/rpc/json_rpc.py +7 -6
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/rpc/rpc.py +1 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine.egg-info/PKG-INFO +1 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/pyproject.toml +1 -1
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/__init__.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/class_tools.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/__init__.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/driver_mysql.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/driver_postgresql.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/driver_sqlite.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/driver_valkey.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/option.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/processor.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/db/table.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/env/__init__.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/env/db_context.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/env/timer.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/error.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/rpc/__init__.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine/rpc/fnc.py +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine.egg-info/SOURCES.txt +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine.egg-info/dependency_links.txt +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine.egg-info/requires.txt +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/ab_engine.egg-info/top_level.txt +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/readme.md +0 -0
- {ab_engine-0.2.4 → ab_engine-0.2.6}/setup.cfg +0 -0
|
@@ -165,7 +165,8 @@ class Driver(ABC):
|
|
|
165
165
|
return reencode(var)
|
|
166
166
|
else:
|
|
167
167
|
var = ','.join(['NULL' if x is None else in_arr_str(x) for x in var])
|
|
168
|
-
|
|
168
|
+
var = var.replace("'", "''")
|
|
169
|
+
return reencode(f"{{{var}}}")
|
|
169
170
|
elif isinstance(var, set):
|
|
170
171
|
var = ','.join('NULL' if x is None else in_arr_str(x) for x in var)
|
|
171
172
|
return reencode(f"{{{var}}}")
|
|
@@ -3,7 +3,10 @@ from datetime import datetime
|
|
|
3
3
|
from json import dumps, loads
|
|
4
4
|
from json5 import loads as json5_load
|
|
5
5
|
from yaml import safe_load as yaml_load
|
|
6
|
-
|
|
6
|
+
try:
|
|
7
|
+
from tomllib import loads as toml_load
|
|
8
|
+
except:
|
|
9
|
+
toml_load = None
|
|
7
10
|
from pathlib import Path
|
|
8
11
|
from os import environ as ENV
|
|
9
12
|
import logging as LOG
|
|
@@ -123,6 +126,8 @@ class Config:
|
|
|
123
126
|
case ".yaml" | ".yml":
|
|
124
127
|
return yaml_load(data)
|
|
125
128
|
case ".toml":
|
|
129
|
+
if toml_load is None:
|
|
130
|
+
raise error("BAD_FORMAT", format_name=fn)
|
|
126
131
|
return toml_load(data)
|
|
127
132
|
case _:
|
|
128
133
|
raise error("BAD_FORMAT", format_name=fn)
|
|
@@ -39,6 +39,8 @@
|
|
|
39
39
|
class: RuntimeError
|
|
40
40
|
msg: ключ не может содержать знаков операций, открывающих круглых скобок и пробелов {key}
|
|
41
41
|
### Ошибки JsonRPC
|
|
42
|
+
- code: -32000
|
|
43
|
+
msg: Ошибка сервера # Server error -32000 to -32099 Reserved for implementation-defined server-errors.
|
|
42
44
|
- code: -32700
|
|
43
45
|
msg: Ошибка разбора сообщения # "Parse error"
|
|
44
46
|
- code: -32600
|
|
@@ -11,12 +11,11 @@ class JSON_RPC:
|
|
|
11
11
|
|
|
12
12
|
@staticmethod
|
|
13
13
|
def rpc_error(code, data=None, header=None):
|
|
14
|
-
|
|
14
|
+
if not isinstance(code, int) or code > -32000 or code < -32099:
|
|
15
|
+
code = -32000
|
|
15
16
|
err = error_msg(code)
|
|
16
17
|
if err.message is None:
|
|
17
|
-
err.message = "Server error
|
|
18
|
-
if not isinstance(code, int) or code > -32000 or code < -32099:
|
|
19
|
-
code = -32000
|
|
18
|
+
err.message = "Server error"
|
|
20
19
|
err.code = code
|
|
21
20
|
code = {
|
|
22
21
|
"code": err.code,
|
|
@@ -74,8 +73,10 @@ class JSON_RPC:
|
|
|
74
73
|
if "id" in message:
|
|
75
74
|
res["id"] = message["id"]
|
|
76
75
|
except Exception as e:
|
|
77
|
-
Config().log_level
|
|
78
|
-
|
|
76
|
+
if Config().log_level.value > LogLevel.DEBUG.value:
|
|
77
|
+
res = self.rpc_error(-32000, header=message)
|
|
78
|
+
else:
|
|
79
|
+
res = self.rpc_error(-32000, data=e, header=message)
|
|
79
80
|
if res.get("error") is not None:
|
|
80
81
|
self.log(f"{f}: ERROR:\n{res['error']}!!")
|
|
81
82
|
if env.in_transaction:
|
|
@@ -250,7 +250,7 @@ def register_list(defs:list | dict, self=None)->None:
|
|
|
250
250
|
else:
|
|
251
251
|
match fnc.get("type", "db"):
|
|
252
252
|
case "db":
|
|
253
|
-
SqlFnc(x, f"
|
|
253
|
+
SqlFnc(x, f"\\JSON {fnc['function']}(JSONB)", help=fnc.get('help'))
|
|
254
254
|
case "self":
|
|
255
255
|
fn = getattr(self, fnc['function'])
|
|
256
256
|
PythonFnc(x, fn, help = fnc.get('help') )
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|