From 16f04813a901342f3a24ceb3d74fda9682f386dd Mon Sep 17 00:00:00 2001 From: Andrei Duvakin Date: Sun, 2 Feb 2025 14:57:06 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=B2=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D1=8B=D0=B5=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/domain/entities/__init__.py | 3 +++ api/app/domain/models/appointment_files.py | 16 ++++++++++++++ api/app/domain/models/appointments.py | 2 ++ api/app/domain/models/mailing.py | 21 +++++++++++++++++++ .../domain/models/mailing_delivery_methods.py | 13 ++++++++++++ api/app/domain/models/mailing_options.py | 16 ++++++++++++++ api/app/domain/models/patients.py | 1 + api/app/domain/models/recipients.py | 16 ++++++++++++++ api/app/domain/models/users.py | 1 + 9 files changed, 89 insertions(+) create mode 100644 api/app/domain/entities/__init__.py create mode 100644 api/app/domain/models/appointment_files.py create mode 100644 api/app/domain/models/mailing.py create mode 100644 api/app/domain/models/mailing_delivery_methods.py create mode 100644 api/app/domain/models/mailing_options.py create mode 100644 api/app/domain/models/recipients.py diff --git a/api/app/domain/entities/__init__.py b/api/app/domain/entities/__init__.py new file mode 100644 index 0000000..7c2377a --- /dev/null +++ b/api/app/domain/entities/__init__.py @@ -0,0 +1,3 @@ +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() \ No newline at end of file diff --git a/api/app/domain/models/appointment_files.py b/api/app/domain/models/appointment_files.py new file mode 100644 index 0000000..8567af3 --- /dev/null +++ b/api/app/domain/models/appointment_files.py @@ -0,0 +1,16 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.orm import relationship + +from app.domain.models import Base + + +class AppointmentFile(Base): + __tablename__ = 'appointment_files' + + id = Column(Integer, primary_key=True, autoincrement=True) + file_path = Column(String, nullable=False) + file_title = Column(String, nullable=False) + + appointment_id = Column(Integer, ForeignKey('appointments.id'), nullable=False) + + appointment = relationship('Appointment', back_populates='files') \ No newline at end of file diff --git a/api/app/domain/models/appointments.py b/api/app/domain/models/appointments.py index 29f00fa..dc127e5 100644 --- a/api/app/domain/models/appointments.py +++ b/api/app/domain/models/appointments.py @@ -18,3 +18,5 @@ class Appointment(Base): patient = relationship('Patient', back_populates='appointments') doctor = relationship('User', back_populates='appointments') type = relationship('AppointmentType', back_populates='appointments') + + files = relationship('AppointmentFile', back_populates='appointment') diff --git a/api/app/domain/models/mailing.py b/api/app/domain/models/mailing.py new file mode 100644 index 0000000..f5ba465 --- /dev/null +++ b/api/app/domain/models/mailing.py @@ -0,0 +1,21 @@ +from sqlalchemy import Column, Integer, String, DateTime, ForeignKey +from sqlalchemy.sql import func +from sqlalchemy.orm import relationship + +from app.domain.models import Base + + +class Mailing(Base): + __tablename__ = 'mailing' + + id = Column(Integer, primary_key=True, autoincrement=True) + text = Column(String, nullable=False) + title = Column(String, nullable=False) + datetime = Column(DateTime, nullable=False, default=func.utcnow) + + user_id = Column(Integer, ForeignKey('users.id'), nullable=False) + + user = relationship('User', back_populates='mailing') + + recipients = relationship('Recipient', back_populates='mailing') + mailing_options = relationship('MailingOption', back_populates='mailing') diff --git a/api/app/domain/models/mailing_delivery_methods.py b/api/app/domain/models/mailing_delivery_methods.py new file mode 100644 index 0000000..3bd3e86 --- /dev/null +++ b/api/app/domain/models/mailing_delivery_methods.py @@ -0,0 +1,13 @@ +from sqlalchemy import Column, Integer, VARCHAR +from sqlalchemy.orm import relationship + +from app.domain.models import Base + + +class MailingDeliveryMethod(Base): + __tbalename__ = 'mailing_delivery_methods' + + id = Column(Integer, primary_key=True, autoincrement=True) + title = Column(VARCHAR(200), nullable=False) + + mailing = relationship('MailingOption', back_populates='option') diff --git a/api/app/domain/models/mailing_options.py b/api/app/domain/models/mailing_options.py new file mode 100644 index 0000000..69c27b9 --- /dev/null +++ b/api/app/domain/models/mailing_options.py @@ -0,0 +1,16 @@ +from sqlalchemy import Column, Integer, ForeignKey +from sqlalchemy.orm import relationship + +from app.domain.models import Base + + +class MailingOption(Base): + __tablename__ = 'mailing_options' + + id = Column(Integer, primary_key=True, autoincrement=True) + + option_id = Column(Integer, ForeignKey('patients.id'), nullable=False) + mailing_id = Column(Integer, ForeignKey('mailing.id'), nullable=False) + + option = relationship('Patient', back_populates='mailing') + mailing = relationship('Mailing', back_populates='mailing_options') diff --git a/api/app/domain/models/patients.py b/api/app/domain/models/patients.py index 4de950e..bd60eb3 100644 --- a/api/app/domain/models/patients.py +++ b/api/app/domain/models/patients.py @@ -20,3 +20,4 @@ class Patient(Base): lens_issues = relationship('LensIssue', back_populates='patient') appointments = relationship('Appointment', back_populates='patient') + mailing = relationship('Mailing', back_populates='patient') diff --git a/api/app/domain/models/recipients.py b/api/app/domain/models/recipients.py new file mode 100644 index 0000000..607ab04 --- /dev/null +++ b/api/app/domain/models/recipients.py @@ -0,0 +1,16 @@ +from sqlalchemy import Column, Integer, ForeignKey +from sqlalchemy.orm import relationship + +from app.domain.models import Base + + +class Recipient(Base): + __tbalename__ = 'recipients' + + id = Column(Integer, primary_key=True, autoincrement=True) + + patient_id = Column(Integer, ForeignKey('mailing_delivery_methods.id'), nullable=False) + mailing_id = Column(Integer, ForeignKey('mailing.id'), nullable=False) + + patient = relationship('MailingDeliveryMethod', back_populates='mailing') + mailing = relationship('Mailing', back_populates='recipients') diff --git a/api/app/domain/models/users.py b/api/app/domain/models/users.py index f6ca4c7..050144f 100644 --- a/api/app/domain/models/users.py +++ b/api/app/domain/models/users.py @@ -20,3 +20,4 @@ class User(Base): lens_issues = relationship('LensIssue', back_populates='doctor') appointments = relationship('Appointment', back_populates='doctor') + mailing = relationship('Mailing', back_populates='user')