Skip to content

Instantly share code, notes, and snippets.

@anchietajunior
Last active November 28, 2022 14:22
Show Gist options
  • Save anchietajunior/38d6c82a4ca5db2556ba8ae390586de2 to your computer and use it in GitHub Desktop.
Save anchietajunior/38d6c82a4ca5db2556ba8ae390586de2 to your computer and use it in GitHub Desktop.

Mutations

Create user and return user data with JWT

mutation {
  createUserForMobile(
    input: {
      name: "Santo Agostinho",
      email: "santoagostinho202118930823910@gmail.com",
      cellphone: "(12) 99999-9999",
      password: "88533146Jr",
      country: "280"
    }
  ) {
    user {
      email
    }
    jwt
  }
}

Request password reset

mutation{
  resetPassword(input:{email: "santosjr87+godhelpme@gmail.com"}){
    user{
      email
    }
  }
}

User Login

mutation{
  login(input:{email: "email.com", password: "senha"}){
    user{
      name
    }
    token
  }
}

Update User Courses Progress

mutation{
  courseProgress(
    input: {
      lessonId: "1890",
      userId: 280874,
      currentTime: 201.58,
      status: "uncompleted",
      courseId: 235,
      lessonDuration: 1872
    }
  ) {
    courseProgress
  }
}

Create Comment

mutation {
  createComment(input: {
    content: "Hello World",
    userId: "280884",
    commentableId: "1921",
    commentableType: "Lesson"
  }){
    content
  }
}

Queries

Comments

Commentable Types: Lesson, Episode, Post

CommentableId: Lesson.id, Episode.id, Post.id

{
  comments(commentableType: "Lesson", commentableId: 1921) {
    edges{
      node{
        content
      }
    }
  }
}

Search

# Tipos disponívels: "Episódios", "Aulas", "Posts"

search(by: "Jesus") {
  edges {
    node {
      title
    }
  }
 }

Searching by type

# Tipos disponívels: "Episódios", "Aulas", "Posts"

search(by: "Jesus", type: "Aulas") {
  edges {
    node {
      title
    }
  }
 }

User

Com um user logado, pode ser buscado o histórico de aulas. Para realizar a autenticação dois headers são necessários:

  • X-Api-Key: Informado na URL de produção para acessar o GraphiQL
  • Authorization: Token retornado depois de executar a mutation de login
user{
  name
  courseProgress
}

User Course Progress (Continue seus estudos)

Esses dados são obtidos a partir do user quando está logado, existe um atributo chamado courseProgress que trás os dados do histórico do aluno dentro da plataforma.

Aqui temos um json com os dados dos cursos e aulas assistidas pelo aluno no seguinte formato:

{
  "235": {
   "total_lessons":16,
   "lessons":
      [
        {
          "lesson_id":"1888",
          "current_time":121.744,
          "status":"uncompleted",
          "created_at":"2022-05-12T22:53:02.453-03:00",
          "watched_at":1652406782
        }
      ],
    "progress":6.25
  }
}

O nó inicial é o ID do curso, total_lessons é a quantidade de aulas do curso, lessons é o nó com as aulas assistidas pelos alunos e progress é o progresso geral do aluno no curso.

Course Categories (Categorias de cursos)

Pegando as últimas 10 categorias de cursos incluindo os seus respectivos cursos aninhados. O parâmetro pode ser alterado para first para buscar os 10 primeiros ou o número passado pode ser diferente.

{
  courseCategories(last: 10) {
    edges{
      node{
        id
        name
        courses{
          edges{
            node{
              name
            }
          }
        }
      }
    }
  }
}

Courses (Cursos)

{
  courses(last: 10) {
    edges{
      node{
        name
      }
    }
  }
}

Course with Materials (Caderno do Curso)

{
    course(id: 236) {
      name
    	materials{
        edges{
          node{
            name
            file
          }
        }
      }
    }
  }

Course by ID (Curso por ID)

{
  course(id: 236) {
    name
    resume
    lessons{
      edges{
        node{
          name
        }
      }
    }
  }
}

Course with Lessons (Curso com aulas)

{
  course(id: 236) {
    name
    resume
    lessons{
      edges{
        node{
          name
        }
      }
    }
  }
}

Cursos Relacionados (Similares)

{
  courses(last: 1) {
    edges{
      node{
        name
        category
        related{
          edges{
            node{
              name
              category
            }
          }
        }
      }
    }
  }
}

Lesson by Slug

{
  lesson(slug: "a-importancia-da-literatura") {
    name
    comments {
      edges {
        node {
          content
          user {
            name
          }
        }
      }
    }
  }
}

RemarkableLessons (Aulas que valem a pena) com paginação

{
  remarkableLessons(first: 5) {
      pageInfo {
      hasPreviousPage  
      hasNextPage
      endCursor
      startCursor
    }
    edges{
      node{
        lesson{
          name
        }
        published
        publishedAt
      }
    }
  }
}

Isso gera duas chaves, endCursor e startCursor, desta forma é possível ir adiante ou voltar os registros. Isso serve para todos as queries que possuem edges e nodes.

{
  remarkableLessons(first: 5, after: "NQ") {
      pageInfo {
      hasPreviousPage  
      hasNextPage
      endCursor
      startCursor
    }
    edges{
      node{
        lesson{
          name
        }
        published
        publishedAt
      }
    }
  }
}

Programs (Programas)

{
  programs(last: 10) {
    edges{
      node{
        name
      }
    }
  }
}

Program by SLUG (Programa por Slug)

{
  program(slug: "homilia-diaria") {
    name
    episodes(last: 10) {
      edges{
        node{
          name
          slug
        }
      }
    }
  }
}

Episode by Slug

{
  episode(slug: "a-importancia-da-literatura") {
    name
    comments {
      edges {
        node {
          content
          user {
            name
          }
        }
      }
    }
  }
}

Posts (Posts/Artigos)

{
  posts(last: 10) {
    edges{
      node{
        title
        subtitle
      }
    }
  }
}

Post by slug (Post/Artigo pelo slug)

{
  post(slug: "as-licoes-do-menino-mexicano-que-queria-morrer-por-cristo-rei") {
    id
    title
    subtitle
    desktopHeaderImage
    content
  }
}

TopHighLights (Destaques)

{
  topHighlights(last: 2) {
    edges{
      node{
        categoryName
        title
      }
    }
  }
}

Shorts (Vídeos curtos)

{
  shorts(last: 1) {
    edges{
      node{
        title
        video
      }
    }
  }
}

Phrases (Frases)

{
  phrases(last: 2){
    edges{
      node{
        title
      }
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment