Skip to content

Aplicação desenvolvida para a disciplina de APIs e WebServices na Especialização em Arquitetura de Software Distribuído - PUCMG.

Notifications You must be signed in to change notification settings

arthurboeck/task-manager-graphql-api

Repository files navigation

Gerenciador de Tarefas GraphQL API

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.

Dependencias

Como executar a aplicação

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.

Estrutura do projeto

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.

Funcionalidade disponibilizadas

A API possui as seguintes funcionalidades disponibilizadas, e seus respectivos payloads:

Usuários

Possibilita o cadastro, atualiçao e listagem de usuários.

Cadastrar usuário

mutation CreateUser {
  createUser(nome: "Arthur", usuario: "arthur_boeck", senha: "123456") {
    id
    nome
    usuario
    dataCriacao
  }
}

Atualizar usuário

mutation CreateUser {
  updateUser(id: 1, nome: "Arthur", usuario: "arthur_boeck", senha: "123456") {
    id
    nome
    usuario
    dataCriacao
  }
}

Listar usuários

query Users {
  users {
    id
    nome
    usuario
    dataCriacao
  }
}

Listar usuário por usuario/username

query User {
  user(usuario: "arthur_guterres") {
    id
    nome
    usuario
    dataCriacao
  }
}

Tarefas

Possibilita o cadastro, atualização, conclusão, cancelamento, e listagem de tarefas e o historico de alteraçao das respectivas tarefas.

Cadastrar tarefa

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
    }
  }
}

Atualizar tarefa

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
    }
  }
}

Cancelar tarefa

mutation CancelTask {
  cancelTask(id: 1, usuario: "arthur_guterres") {
    id
    nome
    descricao
    responsavel
    status
    dataCriacao
    dataConclusao
    historico {
      id
      idTask
      descricao
      usuario
      data
    }
  }
}

Concluir tarefa

mutation CompleteTask {
  completeTask(id: 1, usuario: "arthur_guterres") {
    id
    nome
    descricao
    responsavel
    status
    dataCriacao
    dataConclusao
    historico {
      id
      idTask
      descricao
      usuario
      data
    }
  }
}

Deletar tarefa

mutation DeleteTask {
  deleteTask(id: 1)
}

Listar tarefas

query Tasks {
  tasks {
    id
    nome
    descricao
    responsavel
    status
    dataCriacao
    dataConclusao
    historico {
      id
      idTask
      descricao
      usuario
      data
    }
  }
}

Listar tarefa por id

query Task {
  task(id: 1) {
    id
    nome
    descricao
    responsavel
    status
    dataCriacao
    dataConclusao
    historico {
      id
      idTask
      descricao
      usuario
      data
    }
  }
}

Tarefas Historico

Possibilita a visualização do historico de alteraçao das respectivas tarefas.

Listar historicos de tarefas

query TaskHistories {
  taskHistories {
    id
    idTask
    descricao
    usuario
    data
  }
}

Listar historicos por id tarefas

query TaskHistory {
  taskHistory(idTask: 1) {
    id
    idTask
    descricao
    usuario
    data
  }
}

Deploy

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.

About

Aplicação desenvolvida para a disciplina de APIs e WebServices na Especialização em Arquitetura de Software Distribuído - PUCMG.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published