создал новые таблицы

This commit is contained in:
Андрей Дувакин 2025-01-26 15:20:08 +05:00
parent afb348167d
commit 0a4f3920a9
5 changed files with 39 additions and 1 deletions

View File

@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, VARCHAR, String, ForeignKey, Date, Boolean
from sqlalchemy import Column, Integer, ForeignKey, Date, Boolean
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship

View File

@ -18,3 +18,4 @@ class Course(Base):
owner_user = relationship('User', back_populates='owned_courses')
students = relationship('CourseStudent', back_populates='course')
notifications = relationship('Notification', back_populates='course')

View File

@ -0,0 +1,14 @@
from sqlalchemy import Column, Integer, VARCHAR, String
from sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base
class NotificationType(Base):
__tablename__ = 'notification_types'
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(VARCHAR(100), nullable=False)
description = Column(String, nullable=False)
notifications = relationship('Notification', back_populates='type')

View File

@ -0,0 +1,22 @@
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
class Notification(Base):
__tablename__ = 'notifications'
id = Column(Integer, primary_key=True, autoincrement=True)
text = Column(String, nullable=False)
datetime_notification = Column(DateTime, nullable=False, default=func.utcnow)
is_read = Column(Boolean, nullable=False, default=False)
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
type_id = Column(Integer, ForeignKey('notification_types.id'), nullable=False)
course_id = Column(Integer, ForeignKey('courses.id'))
user = relationship('User', back_populates='notifications')
type = relationship('NotificationType', back_populates='notifications')
course = relationship('Course', back_populates='notifications')

View File

@ -35,6 +35,7 @@ class User(Base):
appeals = relationship('Appeal', back_populates='user')
owned_courses = relationship('Course', back_populates='owned_courses')
enrolled_courses = relationship('CourseStudent', back_populates='user')
notifications = relationship('Notification', back_populates='user')
def check_password(self, password):
return check_password_hash(self.password, password)