feat: 件数のキャッシュを実装

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-10-05 15:05:03 +09:00
parent 0cb362a5e9
commit 4fc3ed927c
3 changed files with 14 additions and 2 deletions

View File

@ -69,6 +69,9 @@ def search_bio_data(
actions=[
UserSession.last_access_time.set(UserSession.new_last_access_time()),
UserSession.record_expiration_time.set(UserSession.new_record_expiration_time()),
# 検索結果をキャッシュする
UserSession.bio_search_condition.set(bio_form.model_dump()),
UserSession.bio_search_count.set(bio_sales_lot_count),
]
)
set_session(session)

View File

@ -1,7 +1,8 @@
import datetime
import uuid
from pynamodb.attributes import NumberAttribute, UnicodeAttribute
from pynamodb.attributes import (JSONAttribute, NumberAttribute,
UnicodeAttribute)
from pynamodb.models import Model as DynamoDBTableModel
from src.system_var import environment
@ -23,6 +24,8 @@ class UserSession(DynamoDBTableModel):
csrf_token = UnicodeAttribute()
last_access_time = NumberAttribute()
record_expiration_time = NumberAttribute()
bio_search_condition = JSONAttribute(null=True, default=None)
bio_search_count = NumberAttribute(null=True, default=None)
@classmethod
def new_last_access_time(cls):

View File

@ -72,7 +72,13 @@ class BioViewService(BaseService):
return display_bio_data
def count_bio_data(self, search_params: BioModel, session: UserSession) -> int:
# 生物由来データの件数を取得
# 検索値が前回検索時と変更がない場合、キャッシュした件数を返す
previous_search_params = session.bio_search_condition
current_search_params = search_params.model_dump()
if previous_search_params == current_search_params:
return session.bio_search_count
# 生物由来データの件数をDBから取得
bio_sales_data_count = self.bio_sales_repository.fetch_count(parameter=search_params)
return bio_sales_data_count