# retoor <retoor@molodetz.nl>
from datetime import datetime, timezone
from typing import Optional
from devplacepy.database import get_table
def as_int(value: object, default: int = 0) -> int:
try:
return int(value)
except (TypeError, ValueError):
return default
def to_unix(iso_value: Optional[str]) -> int:
if not iso_value:
return 0
try:
moment = datetime.fromisoformat(iso_value)
except (ValueError, TypeError):
return 0
if moment.tzinfo is None:
moment = moment.replace(tzinfo=timezone.utc)
return int(moment.timestamp())
def now_unix() -> int:
return int(datetime.now(timezone.utc).timestamp())
def post_by_id(rant_id: object) -> Optional[dict]:
identifier = as_int(rant_id)
if not identifier:
return None
return get_table("posts").find_one(id=identifier, deleted_at=None)
def comment_by_id(comment_id: object) -> Optional[dict]:
identifier = as_int(comment_id)
if not identifier:
return None
return get_table("comments").find_one(id=identifier, deleted_at=None)
def user_by_id(user_id: object) -> Optional[dict]:
identifier = as_int(user_id)
if not identifier:
return None
return get_table("users").find_one(id=identifier)