import { TextObjectFilterResult } from "../TextObjectFilter.model";

export type FindLocalidadesParams = {
    _id?: string;
    name?: string;
    code?: number;
    partido: string;
    provincia: string;
};

export interface ILocalidad {
    id?: string;
    name: string;
    code: number;
    partido: string;
    provincia: string;
    latitude: number;
    longitude: number;
}

export type PaginateFilterBlockParams = {
    name?: string;
    page: number;
    limit: number;
};

export type PaginateFilterBlockResults = {
    data: ILocalidad[];
    page: number;
    pages: number;
};

export interface ILocalidadesAdapter {
    find(filters: FindLocalidadesParams): Promise<ILocalidad[]>;
    paginate(filters: PaginateFilterBlockParams): Promise<PaginateFilterBlockResults>;
}

export interface ILocalidadesManager {
    localidades: ILocalidadesAdapter;
    filterAll(data: FindLocalidadesParams): Promise<TextObjectFilterResult[]>;
    paginate(data: PaginateFilterBlockParams): Promise<TextObjectFilterResult[]>;
}
