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.
Crie uma struct Note com campos como:
IDTitleContentCreatedAt
Crie uma interface chamada NoteRepository.
Ela deve definir os métodos:
CreateFindAllFindByIDUpdateDelete
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).
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.
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.
No seu arquivo principal, você deve "ligar os pontos":
- Abrir a conexão com o banco de dados
- Instanciar o Repositório passando a conexão
- Instanciar o Controller passando o Repositório
- Configurar as rotas e subir o servidor
- 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