Add helper functions for ServerTime
This commit is contained in:
parent
a84080ac36
commit
2a7e07968f
81
helpers/servertime_helpers.py
Normal file
81
helpers/servertime_helpers.py
Normal file
@ -0,0 +1,81 @@
|
||||
from datetime import datetime, timezone
|
||||
from typing import Optional, Dict, Union
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import func
|
||||
from models.server_time import ServerTime
|
||||
|
||||
def get_current_utc_time() -> datetime:
|
||||
"""
|
||||
Get current UTC timestamp.
|
||||
|
||||
Returns:
|
||||
datetime: Current UTC datetime
|
||||
"""
|
||||
return datetime.now(timezone.utc)
|
||||
|
||||
def validate_timestamp(timestamp: datetime) -> bool:
|
||||
"""
|
||||
Validate if timestamp is a valid datetime and not in future.
|
||||
|
||||
Args:
|
||||
timestamp: Datetime to validate
|
||||
|
||||
Returns:
|
||||
bool: True if valid, False otherwise
|
||||
"""
|
||||
current_time = get_current_utc_time()
|
||||
return timestamp <= current_time
|
||||
|
||||
def record_server_time(db: Session) -> ServerTime:
|
||||
"""
|
||||
Record current server time in database.
|
||||
|
||||
Args:
|
||||
db: Database session
|
||||
|
||||
Returns:
|
||||
ServerTime: Recorded server time entry
|
||||
"""
|
||||
server_time = ServerTime(server_time=func.now())
|
||||
db.add(server_time)
|
||||
db.commit()
|
||||
db.refresh(server_time)
|
||||
return server_time
|
||||
|
||||
def get_latest_server_time(db: Session) -> Optional[ServerTime]:
|
||||
"""
|
||||
Get most recent server time record.
|
||||
|
||||
Args:
|
||||
db: Database session
|
||||
|
||||
Returns:
|
||||
Optional[ServerTime]: Latest server time record if exists
|
||||
"""
|
||||
return db.query(ServerTime).order_by(ServerTime.server_time.desc()).first()
|
||||
|
||||
def get_time_difference(time1: datetime, time2: datetime) -> float:
|
||||
"""
|
||||
Calculate time difference in seconds between two timestamps.
|
||||
|
||||
Args:
|
||||
time1: First timestamp
|
||||
time2: Second timestamp
|
||||
|
||||
Returns:
|
||||
float: Time difference in seconds
|
||||
"""
|
||||
return abs((time1 - time2).total_seconds())
|
||||
|
||||
def format_server_time(server_time: datetime, format: str = "%Y-%m-%d %H:%M:%S") -> str:
|
||||
"""
|
||||
Format server time to string representation.
|
||||
|
||||
Args:
|
||||
server_time: Datetime to format
|
||||
format: Output format string
|
||||
|
||||
Returns:
|
||||
str: Formatted datetime string
|
||||
"""
|
||||
return server_time.strftime(format)
|
Loading…
x
Reference in New Issue
Block a user