[TC-221]: init template-backend-service (#1)

https://eva.avroid.tech/desk/cards?obj=Task:TC-221

Начальная версия сервиса-шаблона

Co-authored-by: Nadezhda <nadezhda.lavrentieva@avroid.team>
Reviewed-on: https://git.avroid.tech/Templates/template-backend-service/pulls/1
Reviewed-by: Victor Stratov <victor.stratov@avroid.tech>
This commit is contained in:
Nadezhda Lavrentieva
2024-10-15 10:22:28 +03:00
parent 85e1f7dbaf
commit a4b2c99c25
38 changed files with 2368 additions and 0 deletions

0
src/database/__init__.py Normal file
View File

View File

@@ -0,0 +1,17 @@
from sqlalchemy import MetaData, create_engine
from sqlalchemy.orm import Session, declarative_base, sessionmaker
from src.settings import WebAppSettings
class PGConnector:
def __init__(self, settings: WebAppSettings) -> None:
self.pg_engine = create_engine(
f"postgresql://{settings.postgres_user}:{settings.postgres_password}@{settings.postgres_host}:"
f"{settings.postgres_port}/{settings.postgres_db}",
)
self.pg_session = sessionmaker(self.pg_engine, class_=Session)
PGBase = declarative_base()
pg_metadata = MetaData()

23
src/database/scylla.py Normal file
View File

@@ -0,0 +1,23 @@
from cassandra.auth import PlainTextAuthProvider
from cassandra.cluster import Cluster
from cassandra.cqlengine import connection
from src.settings import WebAppSettings
class ScyllaConnector:
def __init__(self, settings: WebAppSettings) -> None:
self.auth_provider = PlainTextAuthProvider(
username=settings.scylladb_user,
password=settings.scylladb_password,
)
self.cluster = Cluster(
[settings.scylladb_host],
auth_provider=self.auth_provider,
port=settings.scylladb_port,
)
self.scylladb_session = self.cluster.connect(keyspace=settings.scylladb_keyspace)
connection.register_connection("main_cluster", session=self.scylladb_session)
connection.set_default_connection("main_cluster")