Aplicação desenvolvida para a disciplina de APIs e WebServices na Especialização em Arquitetura de Software Distribuído - PUCMG.
A task-manager-graphql-api
é uma aplicação Node.js construída com GraphQL e ApolloServer para gerenciar informações sobre tarefas e usuários.
Essa API permite criar, visualizar, atualizar, concluir, cancelar e deletar tarefas, gerando um histórico de movimentação da mesma. Assim como o cadastro e atualização de usuários para vinculo as tarefas, e suas ações.
Caso voce esteja executando o projeto pela primeira vez, será necessário executar aas migrations e seeds do projeto, tal processo pode ser startado e executado com base nos seguintes comandos:
Passo 1: Install de dependencias:
npm install
Passo 2: Start do projeto:
npm run start:migrations
Caso voce já tenha executado as migrations e seeds do projeto, o mesmo pode ser startado e executado com base nos seguintes comandos:
Passo 1: Install de dependencias:
npm install
Passo 2: Start do projeto:
npm start
Após isso o projeto estará rodando na porta 8080, podendo ser acessado em http://localhost:8080.
Os pacotes do projeto se distribuem da seguinte forma:
database
: contém as configurações de conexão com o banco de dados, migrations e seeds do projeto.database/migrations
: contém as migrations do projeto.database/seeds
: contém as seeds do projeto.
src
: contém o código fonte da aplicação.src/controllers
: contém os controllers da aplicação.src/enum
: contém os enums da aplicação.src/infra/error
: contém as classes de erros da aplicação e seu respectivo error handler.src/repository
: contém as repositories, responsaveis pela comunicacao direta com o banco de dados.src/service
: contém as services, responsaveis pela regra de negocio da aplicacao.validators
: responsaveis pela validacao dos dados de entrada de cada dominio.
A API possui as seguintes funcionalidades disponibilizadas, e seus respectivos payloads:
Possibilita o cadastro, atualiçao e listagem de usuários.
mutation CreateUser {
createUser(nome: "Arthur", usuario: "arthur_boeck", senha: "123456") {
id
nome
usuario
dataCriacao
}
}
mutation CreateUser {
updateUser(id: 1, nome: "Arthur", usuario: "arthur_boeck", senha: "123456") {
id
nome
usuario
dataCriacao
}
}
query Users {
users {
id
nome
usuario
dataCriacao
}
}
query User {
user(usuario: "arthur_guterres") {
id
nome
usuario
dataCriacao
}
}
Possibilita o cadastro, atualização, conclusão, cancelamento, e listagem de tarefas e o historico de alteraçao das respectivas tarefas.
mutation CreateTask {
createTask(
nome: "Lavar roupa"
descricao: "Lavar as roupas de cama"
responsavel: "arthur_guterres"
) {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
mutation UpdateTask {
updateTask(
id: 1
nome: "Lavar roupa"
descricao: "Lavar as roupas de cama"
status: "CANCELADA"
responsavel: "arthur_guterres"
) {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
mutation CancelTask {
cancelTask(id: 1, usuario: "arthur_guterres") {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
mutation CompleteTask {
completeTask(id: 1, usuario: "arthur_guterres") {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
mutation DeleteTask {
deleteTask(id: 1)
}
query Tasks {
tasks {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
query Task {
task(id: 1) {
id
nome
descricao
responsavel
status
dataCriacao
dataConclusao
historico {
id
idTask
descricao
usuario
data
}
}
}
Possibilita a visualização do historico de alteraçao das respectivas tarefas.
query TaskHistories {
taskHistories {
id
idTask
descricao
usuario
data
}
}
query TaskHistory {
taskHistory(idTask: 1) {
id
idTask
descricao
usuario
data
}
}
Este compononente utiliza o render para deploy. O deploy é realizado automaticamente a cada commit na branch master.
A aplicação e seu explorer podem ser acessados em https://task-manager-graphql-api.onrender.com.