mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-05 10:48:12 +08:00
retrieve latest annotation from db (#1723)
* add function to retrieve latest annotation from db, db updates * dont create directory in s3
This commit is contained in:
+14
-11
@@ -1,11 +1,12 @@
|
||||
from datetime import datetime
|
||||
import uuid
|
||||
|
||||
from sqlalchemy import (
|
||||
Column,
|
||||
DateTime,
|
||||
ForeignKey,
|
||||
String,
|
||||
)
|
||||
func, JSON)
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
@@ -21,8 +22,8 @@ class CellxGeneUser(Base):
|
||||
__tablename__ = "cxguser"
|
||||
|
||||
id = Column(String, primary_key=True)
|
||||
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
|
||||
updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
created_at = Column(DateTime, nullable=False, server_default=func.now())
|
||||
updated_at = Column(DateTime, nullable=False, server_default=func.now(), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
annotations = relationship("Annotation", back_populates="cxguser")
|
||||
@@ -36,12 +37,13 @@ class Annotation(Base):
|
||||
|
||||
__tablename__ = "annotation"
|
||||
|
||||
id = Column(String, primary_key=True)
|
||||
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True, nullable=False)
|
||||
tiledb_uri = Column(String)
|
||||
user_id = Column(String, ForeignKey("cxguser.id"), nullable=False)
|
||||
dataset_id = Column(String, ForeignKey("cxgdataset.id"), nullable=False)
|
||||
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
|
||||
dataset_id = Column(UUID, ForeignKey("cxgdataset.id"), nullable=False)
|
||||
|
||||
created_at = Column(DateTime, nullable=False, server_default=func.now())
|
||||
schema_hints = Column(JSON)
|
||||
# Relationships
|
||||
cxguser = relationship("CellxGeneUser", back_populates="annotations")
|
||||
dataset = relationship("CellxGeneDataset", back_populates="annotations")
|
||||
@@ -49,12 +51,13 @@ class Annotation(Base):
|
||||
|
||||
class CellxGeneDataset(Base):
|
||||
"""
|
||||
Datasets refer to cellxgene datasets stored in tiledb
|
||||
Datasets refer to datasets stored by cellxgene
|
||||
"""
|
||||
|
||||
__tablename__ = "cxgdataset"
|
||||
|
||||
id = Column(String, primary_key=True)
|
||||
name = Column(String)
|
||||
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
|
||||
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True, nullable=False)
|
||||
name = Column(String, unique=True, index=True)
|
||||
|
||||
created_at = Column(DateTime, nullable=False, server_default=func.now())
|
||||
annotations = relationship("Annotation", back_populates="dataset")
|
||||
|
||||
@@ -33,6 +33,9 @@ class DbUtils:
|
||||
else self.session.query(*table_args).all()
|
||||
)
|
||||
|
||||
def query_for_most_recent(self, table: Base, filter_args: typing.List[bool] = None) -> Base:
|
||||
return self.session.query(table).filter(*filter_args).order_by(table.created_at.desc()).limit(1).all()[0]
|
||||
|
||||
|
||||
class DBSessionMaker:
|
||||
def __init__(self, database_uri):
|
||||
|
||||
Reference in New Issue
Block a user