feat: 件数のキャッシュを実装
This commit is contained in:
parent
0cb362a5e9
commit
4fc3ed927c
@ -69,6 +69,9 @@ def search_bio_data(
|
|||||||
actions=[
|
actions=[
|
||||||
UserSession.last_access_time.set(UserSession.new_last_access_time()),
|
UserSession.last_access_time.set(UserSession.new_last_access_time()),
|
||||||
UserSession.record_expiration_time.set(UserSession.new_record_expiration_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)
|
set_session(session)
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from pynamodb.attributes import NumberAttribute, UnicodeAttribute
|
from pynamodb.attributes import (JSONAttribute, NumberAttribute,
|
||||||
|
UnicodeAttribute)
|
||||||
from pynamodb.models import Model as DynamoDBTableModel
|
from pynamodb.models import Model as DynamoDBTableModel
|
||||||
|
|
||||||
from src.system_var import environment
|
from src.system_var import environment
|
||||||
@ -23,6 +24,8 @@ class UserSession(DynamoDBTableModel):
|
|||||||
csrf_token = UnicodeAttribute()
|
csrf_token = UnicodeAttribute()
|
||||||
last_access_time = NumberAttribute()
|
last_access_time = NumberAttribute()
|
||||||
record_expiration_time = NumberAttribute()
|
record_expiration_time = NumberAttribute()
|
||||||
|
bio_search_condition = JSONAttribute(null=True, default=None)
|
||||||
|
bio_search_count = NumberAttribute(null=True, default=None)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def new_last_access_time(cls):
|
def new_last_access_time(cls):
|
||||||
|
|||||||
@ -72,7 +72,13 @@ class BioViewService(BaseService):
|
|||||||
return display_bio_data
|
return display_bio_data
|
||||||
|
|
||||||
def count_bio_data(self, search_params: BioModel, session: UserSession) -> int:
|
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)
|
bio_sales_data_count = self.bio_sales_repository.fetch_count(parameter=search_params)
|
||||||
return bio_sales_data_count
|
return bio_sales_data_count
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user