Add helper functions for ServerTime

This commit is contained in:
Backend IM Bot 2025-03-27 20:11:46 +00:00
parent a84080ac36
commit 2a7e07968f

View 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)