From cfbb67d7a4263666500a8101978100a8c98ea6dc Mon Sep 17 00:00:00 2001 From: Deimos Date: Wed, 27 Mar 2019 14:06:11 -0600 Subject: [PATCH] Defer user bio columns These can be a decent chunk of data, so we don't need to be joining them on all the time. --- tildes/tildes/models/user/user.py | 16 +++++++++------- tildes/tildes/resources/__init__.py | 10 ++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/tildes/tildes/models/user/user.py b/tildes/tildes/models/user/user.py index f2ee7e8..b797feb 100644 --- a/tildes/tildes/models/user/user.py +++ b/tildes/tildes/models/user/user.py @@ -116,14 +116,16 @@ class User(DatabaseModel): ) comment_label_weight: Optional[float] = Column(REAL) last_exemplary_label_time: Optional[datetime] = Column(TIMESTAMP(timezone=True)) - _bio_markdown: str = Column( - "bio_markdown", - Text, - CheckConstraint( - f"LENGTH(bio_markdown) <= {BIO_MAX_LENGTH}", name="bio_markdown_length" - ), + _bio_markdown: str = deferred( + Column( + "bio_markdown", + Text, + CheckConstraint( + f"LENGTH(bio_markdown) <= {BIO_MAX_LENGTH}", name="bio_markdown_length" + ), + ) ) - bio_rendered_html: str = Column(Text) + bio_rendered_html: str = deferred(Column(Text)) @hybrid_property def filtered_topic_tags(self) -> List[str]: diff --git a/tildes/tildes/resources/__init__.py b/tildes/tildes/resources/__init__.py index d8472a1..aae040e 100644 --- a/tildes/tildes/resources/__init__.py +++ b/tildes/tildes/resources/__init__.py @@ -11,10 +11,12 @@ from tildes.models import DatabaseModel, ModelQuery def get_resource(request: Request, base_query: ModelQuery) -> DatabaseModel: """Prepare and execute base query from a root factory, returning result.""" - query = base_query.lock_based_on_request_method().join_all_relationships() - - if not request.is_safe_method: - query = query.undefer_all_columns() + # pylint: disable=unused-argument + query = ( + base_query.lock_based_on_request_method() + .join_all_relationships() + .undefer_all_columns() + ) resource = query.one_or_none()