Source code for orm.community

from typing import List

import sqlalchemy as sql
from sqlalchemy.orm import (
    mapped_column,
    relationship,
    Mapped,
)
from sqlalchemy.types import JSON

from app.model.orm.orm_base import OrmBase


[docs] class Community(OrmBase):
[docs] __tablename__ = "Communities"
[docs] id: Mapped[int] = mapped_column(primary_key=True)
[docs] name: Mapped[str] = mapped_column(sql.String(100), nullable=False)
# Note: convert to studyUniqueID or delete
[docs] studyId: Mapped[str] = mapped_column(sql.ForeignKey('Studies.studyId'), nullable=False)
[docs] study: Mapped['Study'] = relationship(back_populates='communities')
[docs] strainIds: Mapped[JSON] = mapped_column(JSON, nullable=False)
[docs] experiments: Mapped[List['Experiment']] = relationship(back_populates='community')
# TODO make a join table to strains, this is silly
[docs] def get_strains(self, db_session): from app.model.orm import Strain return db_session.scalars( sql.select(Strain) .where(Strain.id.in_(self.strainIds)) ).all()