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 installPasso 2: Start do projeto:
npm run start:migrationsCaso 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 installPasso 2: Start do projeto:
npm startApó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.