# SPDX-License-Identifier: GPL-2.0-only
#
# This file is part of Nominatim. (https://nominatim.org)
#
# Copyright (C) 2023 by the Nominatim developer community.
# For a full list of authors see the git log.
"""
Output formatters for API version v1.
"""
from typing import Dict, Any
from collections import OrderedDict
import json

from nominatim.api.result_formatting import FormatDispatcher
from nominatim.api import StatusResult

dispatch = FormatDispatcher()

@dispatch.format_func(StatusResult, 'text')
def _format_status_text(result: StatusResult) -> str:
    if result.status:
        return f"ERROR: {result.message}"

    return 'OK'


@dispatch.format_func(StatusResult, 'json')
def _format_status_json(result: StatusResult) -> str:
    out: Dict[str, Any] = OrderedDict()
    out['status'] = result.status
    out['message'] = result.message
    if result.data_updated is not None:
        out['data_updated'] = result.data_updated.isoformat()
    out['software_version'] = str(result.software_version)
    if result.database_version is not None:
        out['database_version'] = str(result.database_version)

    return json.dumps(out)
