DEV Community

Dev Doido
Dev Doido

Posted on • Updated on

Contract LoadAvailableTimesRepository no CrazyStack Node.js

Este é um material auxiliar do bootcamp CrazyStack Node.js do DevDoido. Ele servirá como uma espécie de documentação de alguns códigos vistos durante as aulas apenas como material complementar, garanta já sua vaga no bootcamp clicando AQUI!.

Nesta aula, você aprenderá sobre o contrato de repositório "LoadAvailableTimesRepository". Este contrato representa a interface que deve ser implementada para fornecer a funcionalidade de carregar horários disponíveis. É uma camada intermediária entre a camada de serviço e a camada de armazenamento de dados, que define a funcionalidade que deve ser fornecida pelo repositório de dados para a camada de serviço. A implementação desse contrato fornecerá a abstração necessária para a camada de serviço para acessar os dados de horários disponíveis de maneira genérica e sem se preocupar com a fonte de dados específica.

import {
  AvailableTimesModelRepository,
  QueryAvailableTimesRepository,
} from "@/slices/appointment/entities";

export interface LoadAvailableTimesRepository {
  loadAvailableTimes(
    query: QueryAvailableTimesRepository
  ): Promise<AvailableTimesModelRepository | null>;
}
Enter fullscreen mode Exit fullscreen mode

Esse código importa dois tipos de entidades, AvailableTimesModelRepository e QueryAvailableTimesRepository, ambas de uma pasta específica dentro do projeto. Ele também define uma interface chamada LoadAvailableTimesRepository, que especifica um método chamado "loadAvailableTimes" que deve ser implementado por qualquer classe ou objeto que implemente essa interface. Esse método recebe um parâmetro chamado "query" do tipo QueryAvailableTimesRepository e retorna uma Promessa de um objeto do tipo AvailableTimesModelRepository ou null. A ideia é que essa interface seja implementada por uma classe ou objeto que se comunique com uma fonte de dados (como uma API) para carregar os horários disponíveis de algum serviço.

LINK DO REPOSITÓRIO

Top comments (0)