DEV Community

Cover image for Como criar um Repository Genérico em Golang?
Ortiz de Arcanjo António David
Ortiz de Arcanjo António David

Posted on

Como criar um Repository Genérico em Golang?

O Repository genérico facilita o agrupamento das operações comuns na base de dados no sistema. É essencial termos essa estrutura.

Passos a seguir:

  • Criar uma interface Entity que será usada no Repository.
  • Definir as operações básicas (Create, Read, Update e Delete).
  • Definir outras operações importantes (Count, Lirst, Last e outros).
  • Para melhor organização, colocar em um diretório /shared ou /common.

Procedimento:

  • O repository incorpora o base Repository via composição.
  • O construtor do Repository deve inicializar o BaseEntity.
  • O Repository implementa apenas as funções específicas de acordo com seu propósito.
  • O repository pode sobrescrever um método existente na base.

Alguns Relacionamentos:

  • Interface Entity e Entity: Implementação ou realização.
  • Entity (Concreta) e BaseEntity: Composição.
  • Repository e Base Repository: Composição.
  • Repository e Entity: Dependência.

Vantagens:

  • Organização.
  • Centralização da lógica.
  • Reuso do repository.
  • Escalabilidade, facilitando a adição ou remoção de funções.

Código fonte:

Image description

Image description

Image description

Image description

Image description

Image description

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay