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')