feat: 件数のキャッシュを実装
This commit is contained in:
parent
0cb362a5e9
commit
4fc3ed927c
@ -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)
|
||||
|
||||
@ -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):
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user