изменил архитектуру API
This commit is contained in:
parent
61f1509ae5
commit
1d8b569d3e
0
API/app/application/__init__.py
Normal file
0
API/app/application/__init__.py
Normal file
0
API/app/controllers/__init__.py
Normal file
0
API/app/controllers/__init__.py
Normal file
0
API/app/database/__init__.py
Normal file
0
API/app/database/__init__.py
Normal file
12
API/app/database/database.py
Normal file
12
API/app/database/database.py
Normal file
@ -0,0 +1,12 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from app.domain.models import Base
|
||||
from app.settings import settings
|
||||
|
||||
engine = create_engine(settings.DATABASE_URL)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
|
||||
def init_db():
|
||||
Base.metadata.create_all(bind=engine)
|
||||
@ -1,5 +1,5 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from app.infrastructure.database.database import SessionLocal
|
||||
from app.database.database import SessionLocal
|
||||
|
||||
|
||||
def get_db() -> Session:
|
||||
0
API/app/domain/__init__.py
Normal file
0
API/app/domain/__init__.py
Normal file
0
API/app/domain/entities/__init__.py
Normal file
0
API/app/domain/entities/__init__.py
Normal file
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class AnswerFile(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, Boolean, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class AnswerOption(Base):
|
||||
@ -4,7 +4,7 @@ from sqlalchemy import Column, Integer, String, DateTime, Enum, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class AppealStatusEnum(PyEnum):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class AppealsTopic(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, VARCHAR, String
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Category(Base):
|
||||
@ -2,7 +2,7 @@ from sqlalchemy import Column, Integer, ForeignKey, Date, Boolean
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class CourseStudent(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, VARCHAR, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Course(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Lectures(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Lesson(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, VARCHAR, String
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class NotificationType(Base):
|
||||
@ -2,7 +2,7 @@ from sqlalchemy import Column, Integer, Boolean, String, DateTime, ForeignKey
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Notification(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Role(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class StepTask(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class StepType(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, ForeignKey, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class Step(Base):
|
||||
@ -2,7 +2,7 @@ from sqlalchemy import Column, Integer, ForeignKey, DateTime, String, Boolean
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class TaskAnswer(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class TaskFile(Base):
|
||||
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, VARCHAR
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class TaskType(Base):
|
||||
@ -2,7 +2,7 @@ from sqlalchemy import Column, Integer, ForeignKey, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class TestAnswer(Base):
|
||||
@ -5,7 +5,7 @@ from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from werkzeug.security import check_password_hash, generate_password_hash
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
from app.domain.models import Base
|
||||
|
||||
|
||||
class UserGenderEnum(PyEnum):
|
||||
0
API/app/infrastructure/__init__.py
Normal file
0
API/app/infrastructure/__init__.py
Normal file
@ -1,39 +0,0 @@
|
||||
import os
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
|
||||
load_dotenv()
|
||||
|
||||
SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL")
|
||||
|
||||
engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
|
||||
def init_db():
|
||||
import app.infrastructure.database.models.answer_files
|
||||
import app.infrastructure.database.models.answer_options
|
||||
import app.infrastructure.database.models.appeals
|
||||
import app.infrastructure.database.models.appeals_topics
|
||||
import app.infrastructure.database.models.categories
|
||||
import app.infrastructure.database.models.course_students
|
||||
import app.infrastructure.database.models.courses
|
||||
import app.infrastructure.database.models.lectures
|
||||
import app.infrastructure.database.models.lessons
|
||||
import app.infrastructure.database.models.notification_types
|
||||
import app.infrastructure.database.models.notifications
|
||||
import app.infrastructure.database.models.roles
|
||||
import app.infrastructure.database.models.step_tasks
|
||||
import app.infrastructure.database.models.step_types
|
||||
import app.infrastructure.database.models.steps
|
||||
import app.infrastructure.database.models.task_answers
|
||||
import app.infrastructure.database.models.task_files
|
||||
import app.infrastructure.database.models.task_types
|
||||
import app.infrastructure.database.models.test_answers
|
||||
import app.infrastructure.database.models.users
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
@ -1,6 +1,6 @@
|
||||
import logging
|
||||
|
||||
from app.infrastructure.database.database import init_db
|
||||
from app.database.database import init_db
|
||||
from fastapi import FastAPI
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
|
||||
|
||||
19
API/app/settings.py
Normal file
19
API/app/settings.py
Normal file
@ -0,0 +1,19 @@
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
DATABASE_URL: str
|
||||
SECRET_KEY: str
|
||||
ALGORITHM: str
|
||||
APP_PREFIX: str = '/api/v1'
|
||||
|
||||
class Config:
|
||||
env_file = '.env'
|
||||
env_file_encoding = 'utf-8'
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
||||
|
||||
def get_auth_data():
|
||||
return {'secret_key': settings.SECRET_KEY, 'algorithm': settings.ALGORITHM}
|
||||
13
API/req.txt
Normal file
13
API/req.txt
Normal file
@ -0,0 +1,13 @@
|
||||
annotated-types==0.7.0
|
||||
asn1crypto==1.5.1
|
||||
greenlet==3.1.1
|
||||
pg8000==1.31.2
|
||||
pydantic==2.10.6
|
||||
pydantic-settings==2.7.1
|
||||
pydantic_core==2.27.2
|
||||
python-dateutil==2.9.0.post0
|
||||
python-dotenv==1.0.1
|
||||
scramp==1.4.5
|
||||
six==1.17.0
|
||||
SQLAlchemy==2.0.38
|
||||
typing_extensions==4.12.2
|
||||
Loading…
x
Reference in New Issue
Block a user