Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API REST de Gerenciamento de Lembretes

Objetivos

Criar uma API REST para gerenciamento de lembretes do zero. O requisito fundamental não é apenas "fazer funcionar", mas garantir que a aplicação siga o Repository Pattern e utilize Injeção de Dependência.


Definições

1. Definição do Domínio

Crie uma struct Note com campos como:

  • ID
  • Title
  • Content
  • CreatedAt

2. A Camada de Abstração (Interface)

Crie uma interface chamada NoteRepository.

Ela deve definir os métodos:

  • Create
  • FindAll
  • FindByID
  • Update
  • Delete

Regra: Esta interface deve receber e retornar apenas tipos do seu domínio (struct Note), nunca tipos específicos de banco de dados (como sql.Rows).

3. A Implementação do Repositório

Crie uma struct (ex: SqliteRepository) que implemente a interface acima.

Esta struct deve possuir um campo privado para a conexão com o banco (sql.DB).

Crie uma função construtora NewSqliteRepository(db *sql.DB) para instanciar este repositório.

4. O Controller (Handler)

Crie um Controller que gerencie as requisições HTTP.

O Segredo: O Controller não pode saber qual banco de dados você está usando. Ele deve receber a interface NoteRepository no seu construtor.

5. O Orquestrador (main.go)

No seu arquivo principal, você deve "ligar os pontos":

  1. Abrir a conexão com o banco de dados
  2. Instanciar o Repositório passando a conexão
  3. Instanciar o Controller passando o Repositório
  4. Configurar as rotas e subir o servidor

Resultados Esperados

  • Repository Pattern: A lógica de acesso ao banco está isolada em um pacote próprio
  • Injeção de Dependência: Nenhuma struct cria suas próprias dependências ou usa globais; elas as recebem via construtor
  • Clean Code: O código é legível, organizado em pacotes lógicos e sem variáveis globais espalhadas
  • Funcionalidade: A API realiza o CRUD completo de notas com sucesso

About

Desafio da rocketseat de arquitetura em go

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages