mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 06:57:47 +01:00
refactor(backend): solve copilot comments
This commit is contained in:
@@ -1,24 +0,0 @@
|
||||
# Backend – automatické migrace (Alembic)
|
||||
|
||||
## Automatické migrace
|
||||
|
||||
Při spuštění backendu v Dockeru se automaticky provedou migrace databáze pomocí Alembic (`alembic upgrade head`).
|
||||
|
||||
## Ruční práce s migracemi
|
||||
|
||||
- Vytvoření nové migrace podle modelů:
|
||||
```sh
|
||||
export DATABASE_URL='mysql+asyncmy://root:strongpassword@localhost:3306/group_project'
|
||||
alembic revision --autogenerate -m "popis migrace"
|
||||
```
|
||||
- Aplikace migrací:
|
||||
```sh
|
||||
export DATABASE_URL='mysql+asyncmy://root:strongpassword@localhost:3306/group_project'
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
## Poznámky
|
||||
- Pro autogeneraci migrací je nutné mít nainstalován balíček `pymysql`.
|
||||
- Modely pro migrace jsou v `app/db.py`.
|
||||
- Konfigurace Alembic je v `alembic.ini` a `alembic/env.py`.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# Konfigurace a utility
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker
|
||||
from app.core.base import Base # Import Base z nového souboru
|
||||
from app.core.base import Base
|
||||
|
||||
DATABASE_URL = os.getenv("DATABASE_URL")
|
||||
if not DATABASE_URL:
|
||||
@@ -14,15 +14,11 @@ if not DATABASE_URL:
|
||||
else:
|
||||
raise Exception("Only MariaDB is supported. Please set the DATABASE_URL environment variable.")
|
||||
|
||||
# Explicitní import všech modelů, aby byly registrovány v Base.metadata
|
||||
# Load all models to register them
|
||||
|
||||
from app.models.user import User
|
||||
from app.models.transaction import Transaction
|
||||
|
||||
from app.models.user import User
|
||||
|
||||
# Pokud máš další modely, importuj je zde:
|
||||
# from app.models.other_model import OtherModel
|
||||
|
||||
ssl_enabled = os.getenv("MARIADB_HOST", "localhost") != "localhost"
|
||||
connect_args = {"ssl": {"ssl": True}} if ssl_enabled else {}
|
||||
|
||||
|
||||
@@ -32,5 +32,4 @@ def enqueue_email(to: str, subject: str, body: str) -> None:
|
||||
loop.create_task(_publish_async(message))
|
||||
except RuntimeError:
|
||||
asyncio.run(_publish_async(message))
|
||||
# ...existing code...
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# SQLAlchemy modely
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from sqlalchemy import Column, Integer, String, Float
|
||||
from ..core.db import Base
|
||||
from app.core.db import Base
|
||||
|
||||
class Transaction(Base):
|
||||
__tablename__ = "transaction"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import Column, String
|
||||
from fastapi_users.db import SQLAlchemyBaseUserTableUUID
|
||||
from ..core.base import Base # Import Base z base.py
|
||||
from app.core.base import Base # Import Base z base.py
|
||||
|
||||
class User(SQLAlchemyBaseUserTableUUID, Base):
|
||||
first_name = Column(String(length=100), nullable=True)
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# Pydantic schémata
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# Business logika
|
||||
|
||||
@@ -11,9 +11,9 @@ from fastapi_users.authentication import (
|
||||
)
|
||||
from fastapi_users.db import SQLAlchemyUserDatabase
|
||||
|
||||
from ..models.user import User
|
||||
from ..services.db import get_user_db
|
||||
from ..core.queue import enqueue_email
|
||||
from app.models.user import User
|
||||
from app.services.db import get_user_db
|
||||
from app.core.queue import enqueue_email
|
||||
|
||||
SECRET = os.getenv("SECRET", "CHANGE_ME_SECRET")
|
||||
FRONTEND_URL = os.getenv("FRONTEND_URL", "http://localhost:5173")
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# Background worker
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
aio-pika==9.5.6
|
||||
aiormq==6.8.1
|
||||
aiosqlite==0.21.0
|
||||
alembic
|
||||
alembic==1.16.5
|
||||
annotated-types==0.7.0
|
||||
anyio==4.11.0
|
||||
argon2-cffi==23.1.0
|
||||
argon2-cffi-bindings==25.1.0
|
||||
asyncmy
|
||||
asyncmy==0.2.9
|
||||
bcrypt==4.3.0
|
||||
cffi==2.0.0
|
||||
click==8.1.8
|
||||
@@ -22,6 +22,8 @@ h11==0.16.0
|
||||
httptools==0.6.4
|
||||
idna==3.10
|
||||
makefun==1.16.0
|
||||
Mako==1.3.10
|
||||
MarkupSafe==3.0.2
|
||||
multidict==6.6.4
|
||||
pamqp==3.3.0
|
||||
propcache==0.3.2
|
||||
@@ -30,12 +32,14 @@ pycparser==2.23
|
||||
pydantic==2.11.9
|
||||
pydantic_core==2.33.2
|
||||
PyJWT==2.10.1
|
||||
PyMySQL==1.1.2
|
||||
python-dotenv==1.1.1
|
||||
python-multipart==0.0.20
|
||||
PyYAML==6.0.2
|
||||
sniffio==1.3.1
|
||||
SQLAlchemy==2.0.43
|
||||
starlette==0.48.0
|
||||
tomli==2.2.1
|
||||
typing-inspection==0.4.1
|
||||
typing_extensions==4.15.0
|
||||
uvicorn==0.37.0
|
||||
@@ -43,4 +47,3 @@ uvloop==0.21.0
|
||||
watchfiles==1.1.0
|
||||
websockets==15.0.1
|
||||
yarl==1.20.1
|
||||
pymysql
|
||||
|
||||
Reference in New Issue
Block a user