Skip to content

afagundes/go-mongo-generic-dao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-mongo-generic-dao

DAO genérico para MongoBD escrito em GO

Utilização

Basta inicializar a estrutura DAO passando o nome do banco de dados e da coleção.

usuarioDAO := dao.DAO{ Database: DATABASE, Collection: COLLECTION }

Após isso já é possível interagir com o MongoBD através dos métodos do DAO.

Exemplos

Vamos tomar como exemplo a estrutura Usuario:

type Usuario struct {
  ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
  Nome string `bson:"nome" json:"nome,omitempty"`
  Idade int `bson:"idade" json:"idade,omitempty"`
  Bio string `bson:"bio" json:"bio,omitempty"`
  Foto string `bson:"foto" json:"foto,omitempty"`
}

Para recuperar todos os usuários cadastrados podemos fazer:

var usuarios []model.Usuario
usuarioDAO.GetAll(&usuarios)

for _, usuario := range usuarios {
  fmt.Printf("%+v\n", usuario)
}

Para inserir um novo usuário:

usuario = model.Usuario{
  Nome: "Ari", 
  Idade: 34, 
  Bio: "Testando inserção de usuário", 
  Foto: "https://pbs.twimg.com/profile_images/767051707389992963/w0x4-LIs_400x400.jpg"}

objectID := usuarioDAO.Insert(usuario)

id = objectID.(primitive.ObjectID).Hex()
fmt.Printf("Inseriu novo usuário %s\n", id)

Configuração

Para configurar o acesso ao MongoDB é necessário alterar o arquivo config\constants.go e adicionar a string de conexão.

API para testes

Incluí uma API que disponibiliza um CRUD de usuários na porta 8080. Dessa forma é possível ver os métodos do DAO em ação.

Os seguintes endpoints foram adicionados:

Endpoint Método Descrição
/usuario POST Adiciona um usuário
/usuarios GET Retorna a lista de usuários cadastrados
/usuario/{id} GET Retorna um usuário pelo seu ID
/usuario/{id} PUT Atualiza um usuário (exemplo de JSON abaixo)
/usuario/{id} DELETE Remove um usuário pelo seu ID

O JSON utilizado nos endpoints POST e PUT é o seguinte:

{
  "nome": "Maria",
  "idade": 30,
  "bio": "Testando a API com Mongo Generic DAO",
  "foto": "https://image.flaticon.com/icons/png/512/25/25231.png"
}

About

Generic DAO for MongoDB in GO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages