73 lines
2.3 KiB
Python
73 lines
2.3 KiB
Python
from src.logging.get_logger import get_logger
|
|
from src.model.db.user_master import UserMasterModel
|
|
from src.repositories.base_repository import BaseRepository
|
|
|
|
logger = get_logger('ユーザー取得')
|
|
|
|
|
|
class UserMasterRepository(BaseRepository):
|
|
FETCH_SQL = """\
|
|
SELECT
|
|
*
|
|
FROM
|
|
src05.user_mst
|
|
WHERE
|
|
user_id = :user_id\
|
|
"""
|
|
|
|
def fetch_one(self, parameter: dict) -> UserMasterModel:
|
|
try:
|
|
query = self.FETCH_SQL
|
|
result = self._database.execute_select(query, parameter)
|
|
models = [UserMasterModel(**r) for r in result]
|
|
if len(models) == 0:
|
|
return None
|
|
return models[0]
|
|
except Exception as e:
|
|
logger.exception(f"DB Error : Exception={e}")
|
|
raise e
|
|
|
|
def increase_login_failed_count(self, parameter: dict) -> UserMasterModel:
|
|
try:
|
|
query = """\
|
|
UPDATE
|
|
src05.user_mst
|
|
SET
|
|
mntuser_login_failed_cnt =
|
|
CASE
|
|
WHEN
|
|
DATE(mntuser_last_login_failed_datetime) = DATE(CONVERT_TZ(CURRENT_TIMESTAMP() ,'Etc/GMT-0','Asia/Tokyo'))
|
|
OR
|
|
mntuser_login_failed_cnt >= 10
|
|
THEN
|
|
mntuser_login_failed_cnt + 1
|
|
ELSE
|
|
1
|
|
END,
|
|
mntuser_last_login_failed_datetime = CONVERT_TZ(CURRENT_TIMESTAMP() ,'Etc/GMT-0','Asia/Tokyo')
|
|
WHERE
|
|
user_id = :user_id
|
|
AND
|
|
mntuser_flg = 1;\
|
|
"""
|
|
self._database.execute(query, parameter)
|
|
except Exception as e:
|
|
logger.exception(f"DB Error : Exception={e}")
|
|
raise e
|
|
|
|
def disable_mnt_user(self, parameter: dict) -> UserMasterModel:
|
|
try:
|
|
query = """\
|
|
UPDATE
|
|
src05.user_mst
|
|
SET
|
|
enabled_flg = 'N'
|
|
WHERE
|
|
user_id = :user_id
|
|
AND
|
|
mntuser_flg = 1\
|
|
"""
|
|
self._database.execute(query, parameter)
|
|
except Exception as e:
|
|
logger.exception(f"DB Error : Exception={e}")
|
|
raise e |