#!/usr/bin/env python3
"""Fail closed on missing, invalid, future-dated or stale offline databases."""
import datetime as dt
import json
import os
import re
from pathlib import Path
import sys

cache = Path(sys.argv[1])
limit = int(os.environ.get('MAX_DB_AGE_DAYS', '7'))
now = dt.datetime.now(dt.timezone.utc)
for directory in ('db', 'java-db'):
    metadata = json.loads((cache / directory / 'metadata.json').read_text())
    timestamp = re.sub(r'(\.\d{6})\d+', r'\1', metadata['UpdatedAt'])
    updated = dt.datetime.fromisoformat(timestamp.replace('Z', '+00:00'))
    age = (now - updated).total_seconds() / 86400
    if age < -1 or age > limit:
        sys.exit(f'{directory}: database age {age:.1f} days violates {limit}-day policy')
    print(f'{directory}: database age {age:.1f} days; UpdatedAt={updated.isoformat()}')
