from typing import Any

from api_initializer.event_clusters import Event
from api_validations.response import (
    PaginateOnly, 
    Pagination, 
    PaginationResult, 
    PostgresResponseSingle, 
    PostgresResponse, 
    EndpointResponse
)
from api_validations.defaults.validations import CommonHeaders
from schemas import AccountRecords

# List all account records endpoint Super Users
SuperAccountRecordsListEvent = Event(
    name="super_account_records_list",
    key="c5b6d9c7-9115-4825-bcc1-16f409a7004a",
    request_validator=None,  # TODO: Add request validator
    response_validator=None,  # TODO: Add response validator
    description="Super Account Records List all flat representative users endpoint",
)

# Create account records endpoint Super Users
SuperAccountRecordsCreateEvent = Event(
    name="super_account_records_create",
    key="1ab5c778-5a25-49d0-8bf8-799a74f430ad",
    request_validator=None,  # TODO: Add request validator
    response_validator=None,  # TODO: Add response validator
    description="Super Account Records Create endpoint",
)

# Update account records endpoint Super Users
SuperAccountRecordsUpdateEvent = Event(
    name="super_account_records_update",
    key="137fca9b-110a-4a28-bddd-36fde7380e89",
    request_validator=None,  # TODO: Add request validator
    response_validator=None,  # TODO: Add response validator
    description="Super Account Records Update endpoint",
)

# Delete account records endpoint Super Users
SuperAccountRecordsDeleteEvent = Event(
    name="super_account_records_delete",
    key="8bf399a7-f79e-49d2-b481-f5974676599f",
    request_validator=None,  # TODO: Add request validator
    response_validator=None,  # TODO: Add response validator
    description="Super Account Records Delete endpoint",
)


def super_account_records_list_callable(list_options: PaginateOnly, header: CommonHeaders):
    return {
        "message": "MSG0003-LIST",
        "data": None,
        "completed": True,
    }


SuperAccountRecordsListEvent.event_callable = super_account_records_list_callable


def super_account_records_create_callable(data: AccountRecords, header: CommonHeaders):
    return {
        "message": "MSG0003-CREATE",
        "data": None,
        "completed": True,
    }


SuperAccountRecordsCreateEvent.event_callable = super_account_records_create_callable


def super_account_records_update_callable(data: AccountRecords, header: CommonHeaders):
    return {
        "message": "MSG0003-UPDATE",
        "data": None,
        "completed": True,
    }


SuperAccountRecordsUpdateEvent.event_callable = super_account_records_update_callable


def super_account_records_delete_callable(data: AccountRecords, header: CommonHeaders):
    return {
        "message": "MSG0003-DELETE",
        "data": None,
        "completed": True,
    }


SuperAccountRecordsDeleteEvent.event_callable = super_account_records_delete_callable
