arpakitlib 1.8.9__py3-none-any.whl → 1.8.10__py3-none-any.whl
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.
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py +2 -2
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +4 -0
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py +3 -2
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py +20 -4
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +8 -3
- arpakitlib/ar_sqlalchemy_util.py +3 -1
- {arpakitlib-1.8.9.dist-info → arpakitlib-1.8.10.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.9.dist-info → arpakitlib-1.8.10.dist-info}/RECORD +11 -11
- {arpakitlib-1.8.9.dist-info → arpakitlib-1.8.10.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.9.dist-info → arpakitlib-1.8.10.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.9.dist-info → arpakitlib-1.8.10.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ from functools import lru_cache
|
|
2
2
|
|
3
3
|
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDb
|
4
4
|
from project.core.settings import get_cached_settings
|
5
|
-
from project.sqlalchemy_db_.sqlalchemy_model
|
5
|
+
from project.sqlalchemy_db_.sqlalchemy_model import SimpleDBM
|
6
6
|
|
7
7
|
|
8
8
|
def create_sqlalchemy_db() -> SQLAlchemyDb | None:
|
@@ -13,7 +13,7 @@ def create_sqlalchemy_db() -> SQLAlchemyDb | None:
|
|
13
13
|
sync_db_url=get_cached_settings().sqlalchemy_sync_db_url,
|
14
14
|
async_db_url=get_cached_settings().sqlalchemy_async_db_url,
|
15
15
|
db_echo=get_cached_settings().sqlalchemy_db_echo,
|
16
|
-
base_dbm=
|
16
|
+
base_dbm=SimpleDBM
|
17
17
|
)
|
18
18
|
|
19
19
|
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
from arpakitlib.ar_sqlalchemy_util import get_string_info_from_declarative_base
|
1
2
|
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
2
3
|
from project.sqlalchemy_db_.sqlalchemy_model.operation import OperationDBM
|
3
4
|
from project.sqlalchemy_db_.sqlalchemy_model.story_log import StoryLogDBM
|
5
|
+
|
6
|
+
if __name__ == '__main__':
|
7
|
+
print(get_string_info_from_declarative_base(SimpleDBM))
|
@@ -33,9 +33,10 @@ class SimpleDBM(BaseDBM):
|
|
33
33
|
return f"{self.__class__.__name__.removesuffix('DBM')} (id={self.id}, slug={self.slug})"
|
34
34
|
|
35
35
|
|
36
|
-
def
|
36
|
+
def get_simple_dbm_class() -> type[SimpleDBM]:
|
37
|
+
from project.sqlalchemy_db_.sqlalchemy_model import SimpleDBM
|
37
38
|
return SimpleDBM
|
38
39
|
|
39
40
|
|
40
41
|
if __name__ == '__main__':
|
41
|
-
print(get_string_info_from_declarative_base(
|
42
|
+
print(get_string_info_from_declarative_base(get_simple_dbm_class()))
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
1
3
|
from datetime import datetime, timedelta
|
2
|
-
from typing import Any
|
4
|
+
from typing import Any, TYPE_CHECKING
|
3
5
|
|
4
6
|
import sqlalchemy
|
5
7
|
from sqlalchemy.dialects import postgresql
|
@@ -8,6 +10,9 @@ from sqlalchemy.orm import mapped_column, Mapped
|
|
8
10
|
from arpakitlib.ar_enumeration_util import Enumeration
|
9
11
|
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
10
12
|
|
13
|
+
if TYPE_CHECKING:
|
14
|
+
pass
|
15
|
+
|
11
16
|
|
12
17
|
class OperationDBM(SimpleDBM):
|
13
18
|
__tablename__ = "operation"
|
@@ -20,7 +25,7 @@ class OperationDBM(SimpleDBM):
|
|
20
25
|
|
21
26
|
class Types(Enumeration):
|
22
27
|
healthcheck_ = "healthcheck"
|
23
|
-
raise_fake_error_ = "
|
28
|
+
raise_fake_error_ = "raise_fake_error"
|
24
29
|
|
25
30
|
status: Mapped[str] = mapped_column(
|
26
31
|
sqlalchemy.TEXT, index=True, insert_default=Statuses.waiting_for_execution,
|
@@ -29,6 +34,7 @@ class OperationDBM(SimpleDBM):
|
|
29
34
|
type: Mapped[str] = mapped_column(
|
30
35
|
sqlalchemy.TEXT, index=True, insert_default=Types.healthcheck_, nullable=False
|
31
36
|
)
|
37
|
+
title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, insert_default=None, nullable=True)
|
32
38
|
execution_start_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
|
33
39
|
execution_finish_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
|
34
40
|
input_data: Mapped[dict[str, Any]] = mapped_column(
|
@@ -38,10 +44,16 @@ class OperationDBM(SimpleDBM):
|
|
38
44
|
nullable=False
|
39
45
|
)
|
40
46
|
output_data: Mapped[dict[str, Any]] = mapped_column(
|
41
|
-
postgresql.JSON,
|
47
|
+
postgresql.JSON,
|
48
|
+
insert_default={},
|
49
|
+
server_default="{}",
|
50
|
+
nullable=False
|
42
51
|
)
|
43
52
|
error_data: Mapped[dict[str, Any]] = mapped_column(
|
44
|
-
postgresql.JSON,
|
53
|
+
postgresql.JSON,
|
54
|
+
insert_default={},
|
55
|
+
server_default="{}",
|
56
|
+
nullable=False
|
45
57
|
)
|
46
58
|
|
47
59
|
def raise_if_executed_with_error(self):
|
@@ -70,6 +82,10 @@ class OperationDBM(SimpleDBM):
|
|
70
82
|
|
71
83
|
@property
|
72
84
|
def sdp_duration_total_seconds(self) -> float | None:
|
85
|
+
"""
|
86
|
+
При использовании у данной модели .simple_dict данное свойство будет представлено как поле.
|
87
|
+
То есть префикс sdp_ и даёт этот бонус.
|
88
|
+
"""
|
73
89
|
return self.duration_total_seconds
|
74
90
|
|
75
91
|
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
from
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import Any, TYPE_CHECKING
|
2
4
|
|
3
5
|
import sqlalchemy
|
4
6
|
from sqlalchemy.dialects import postgresql
|
@@ -7,6 +9,9 @@ from sqlalchemy.orm import mapped_column, Mapped
|
|
7
9
|
from arpakitlib.ar_enumeration_util import Enumeration
|
8
10
|
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
9
11
|
|
12
|
+
if TYPE_CHECKING:
|
13
|
+
pass
|
14
|
+
|
10
15
|
|
11
16
|
class StoryLogDBM(SimpleDBM):
|
12
17
|
__tablename__ = "story_log"
|
@@ -23,8 +28,8 @@ class StoryLogDBM(SimpleDBM):
|
|
23
28
|
level: Mapped[str] = mapped_column(
|
24
29
|
sqlalchemy.TEXT, insert_default=Levels.info, server_default=Levels.info, index=True, nullable=False
|
25
30
|
)
|
26
|
-
type: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True,
|
27
|
-
title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT,
|
31
|
+
type: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, insert_default=None, nullable=True)
|
32
|
+
title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, insert_default=None, nullable=True)
|
28
33
|
data: Mapped[dict[str, Any]] = mapped_column(
|
29
34
|
postgresql.JSON, insert_default={}, server_default="{}", nullable=False
|
30
35
|
)
|
arpakitlib/ar_sqlalchemy_util.py
CHANGED
@@ -57,6 +57,8 @@ def generate_sqlalchemy_url(
|
|
57
57
|
|
58
58
|
class BaseDBM(DeclarativeBase):
|
59
59
|
__abstract__ = True
|
60
|
+
__table_args__ = {"extend_existing": True}
|
61
|
+
|
60
62
|
_bus_data: dict[str, Any] | None = None
|
61
63
|
|
62
64
|
@property
|
@@ -102,7 +104,7 @@ class BaseDBM(DeclarativeBase):
|
|
102
104
|
def simple_dict_with_sd_properties(self) -> dict[str, Any]:
|
103
105
|
return self.simple_dict(include_sd_properties=True)
|
104
106
|
|
105
|
-
def
|
107
|
+
def simple_dict_json(self, *, include_sd_properties: bool = True) -> str:
|
106
108
|
return safely_transfer_obj_to_json_str(self.simple_dict(include_sd_properties=include_sd_properties))
|
107
109
|
|
108
110
|
|
@@ -168,11 +168,11 @@ arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py,sha256=
|
|
168
168
|
arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view.py,sha256=JcrO6FoAuJHslqURbZSHimPR5TxQpebgzQr0bJnx49M,2334
|
169
169
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
171
|
-
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=
|
172
|
-
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=
|
173
|
-
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=
|
174
|
-
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=
|
175
|
-
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=
|
171
|
+
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=1y3FaMFzm_5UM2poqtBve_UP_mh1vjs--krq6yO8PsA,742
|
172
|
+
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=9UheLINBHeqprpoFvWFG2keqd8QrMP_DscTnxVpJD6M,386
|
173
|
+
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=cm2gPgOTv1IqX9rwKZ7TTLaed0C0l8BKn04Z8ggnpLg,1537
|
174
|
+
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=ZyK6jRVYM7K_ze2LDaYBwqTP6MkTFjtQMTD-HroX0jg,3293
|
175
|
+
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=NKJVph0xO6uu3GBeujus9hAvDFhuvGyS-QbuMDfNhaU,1232
|
176
176
|
arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/util.py,sha256=QSA_nT6aWdtE412-Uj3VTd7yh3dzS4HugDK9FivjTPo,570
|
177
177
|
arpakitlib/_arpakit_project_template_v_2/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
178
178
|
arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_1.py,sha256=yRKf6HYZ2do2g7tAUB172nHA_u-yS9cyHhbinahc7sc,285
|
@@ -249,7 +249,7 @@ arpakitlib/ar_schedule_uust_api_client_util.py,sha256=rXI2_3OTaIBgR-GixM1Ti-Ue1f
|
|
249
249
|
arpakitlib/ar_settings_util.py,sha256=Y5wi_cmsjDjfJpM0VJHjbo0NoVPKfypKaD1USowwDtQ,1327
|
250
250
|
arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
|
251
251
|
arpakitlib/ar_sqladmin_util.py,sha256=Jd33EX_fAso4bvrcDhNEYOUlUHkudbadNGOJDg7rqhQ,301
|
252
|
-
arpakitlib/ar_sqlalchemy_util.py,sha256=
|
252
|
+
arpakitlib/ar_sqlalchemy_util.py,sha256=82brTPqx_poWq-DJ9sDqbdhMvEYKl8HXNBklx05pfnw,9300
|
253
253
|
arpakitlib/ar_ssh_runner_util.py,sha256=e9deuUdBW7Eh0Exx2nTBhk57SaOZYaJaSjNk8q6dbJk,6804
|
254
254
|
arpakitlib/ar_steam_payment_api_client_util.py,sha256=onvb3jt9bWfsCLbVLaApbN_-cqCu1CduVhM9GhG5yTA,250
|
255
255
|
arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,3378
|
@@ -257,8 +257,8 @@ arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,40
|
|
257
257
|
arpakitlib/ar_wata_api_client.py,sha256=gdHOqDbuqxhTjVDtRW1DvkRJLdDofCrOq51GTctzLns,242
|
258
258
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
259
259
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
260
|
-
arpakitlib-1.8.
|
261
|
-
arpakitlib-1.8.
|
262
|
-
arpakitlib-1.8.
|
263
|
-
arpakitlib-1.8.
|
264
|
-
arpakitlib-1.8.
|
260
|
+
arpakitlib-1.8.10.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
261
|
+
arpakitlib-1.8.10.dist-info/METADATA,sha256=Uruudz0SOQJJOLfVA8K_hRAMXy1NFNGb5H7COxaIKDo,3317
|
262
|
+
arpakitlib-1.8.10.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
263
|
+
arpakitlib-1.8.10.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
264
|
+
arpakitlib-1.8.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|