//
// Created by stephane bourque on 2023-09-15.
//

#pragma once
#include "StorageService.h"
#include "framework/RESTAPI_Handler.h"

namespace OpenWifi {
    class RESTAPI_openroaming_orion_list_acct_handler : public RESTAPIHandler {
    public:
        RESTAPI_openroaming_orion_list_acct_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L,
                                                 RESTAPI_GenericServerAccounting &Server, uint64_t TransactionId,
                                                 bool Internal)
                : RESTAPIHandler(bindings, L,
                                 std::vector<std::string>{Poco::Net::HTTPRequest::HTTP_GET,
                                                          Poco::Net::HTTPRequest::HTTP_OPTIONS},
                                 Server, TransactionId, Internal) {}
        static auto PathName() { return std::list<std::string>{"/api/v1/openroaming/orion/accounts"}; };

    private:
        using RecordType = ProvObjects::GooglOrionAccountInfo;
        OrionAccountsDB &DB_ = StorageService()->OrionAccountsDB();
        void DoGet() final;
        void DoPost() final{};
        void DoPut() final{};
        void DoDelete() final{};
    };
} // namespace OpenWifi

