Skip to main content

GraphQL client in the terminal.

Project description

Build and execute GraphQL queries in the terminal.

This project is inspired by https://graphiql-online.com.

https://github.com/eerimoq/gqt/raw/main/docs/assets/showcase.gif

Installation

pip3 install gqt

It’s recommended to install bat for pretty output.

Controls

  • Press h or ? for help.

Examples

Set default GraphQL endpoint:

$ export GQT_ENDPOINT=https://mys-lang.org/graphql

Interactively create a query and execute it:

$ gqt
{
    "statistics": {
        "numberOfGraphqlRequests": 3
    }
}

Repeat last query:

$ gqt -r
{
    "statistics": {
        "numberOfGraphqlRequests": 4
    }
}

Print the query instead of executing it:

$ gqt -q
query Query {
  statistics {
    numberOfGraphqlRequests
  }
}

YAML output:

$ gqt -y
statistics:
  numberOfGraphqlRequests: 8

Name queries:

$ gqt -n stats -y
statistics:
  numberOfGraphqlRequests: 8
$ gqt -n time -y
standardLibrary:
  package:
    latestRelease:
      version: 0.20.0
$ gqt -n stats -y -r
statistics:
  numberOfGraphqlRequests: 9
$ gqt -n time -y -r
standardLibrary:
  package:
    latestRelease:
      version: 0.20.0

Print the schema:

$ gqt --print-schema
type Query {
  standardLibrary: StandardLibrary!
  statistics: Statistics!
  activities: [Activity!]!
}

type StandardLibrary {
  package(name: String!): Package!
  packages: [Package!]
  numberOfPackages: Int
  numberOfDownloads: Int
}
...

Known issues

  • Unions and interfaces are not implemented.

  • And much more.

Ideas

  • Unions:

    Always query __typename.

    union SearchResult = Book | Author
    
    type Book {
      title: String!
    }
    
    type Author {
      name: String!
    }
    
    type Query {
      search(contains: String): [SearchResult!]
    }
    
    Unselected:
    
    ╭─ Query
    │ ▶ search
    
    Selected:
    
    ╭─ Query
    │ ▼ search
    │   ▶ Book
    │     ■ title
    │   ▶ Author
    │     ■ name
  • Alias?

    • Press a to create an alias.

    • Press d to delete an alias.

    smallPicture and mediumPicture are aliases of picture.

    ╭─ Query
    │ ▶ Book
    │   ▶ picture
    │   ▼ smallPicture: picture
    │     ■ width: 320
    │     ■ height: 240
    │   ▼ mediumPicture: picture
    │     ■ width: 800
    │     ■ height: 600
  • Check for schema modifications when starting. Do it in the background and notify the user if it was modified.

    New schema fetched from the server. Use it? y/n

  • Variables example:

    ╭─ Query
    │ ▼ standardLibrary
    │   ▼ package
    │     $ name: name
    │     ■ id: 5
    │     $ kind: kind
    │     □ name
    │   □ numberOfDownloads
    │ ▶ statistics
    
    ╭─ Variables
    │ name: time
    │ kind:
    │   [0] ■ a: bar
    │       ■ b: ne
    │       □ c:
    │   [1]
  • Print variables:

    $ gqt -v
    {"name": "foo", "kind": [{"a": "bar", "b": "ne"}]}
  • Subscriptions. Probably out of scope.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gqt-0.84.0.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

gqt-0.84.0-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file gqt-0.84.0.tar.gz.

File metadata

  • Download URL: gqt-0.84.0.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gqt-0.84.0.tar.gz
Algorithm Hash digest
SHA256 7b2da47f2e2238c6211c8d40467d168fcc8c22f9bc5494fef1f7b90f809e616d
MD5 481225ff6f6b775762e6d3ee7353fcbf
BLAKE2b-256 5853ac38b135f64a7a0896bbf5aaed3aac713fa770bf770e1fd9cecb898a8b6b

See more details on using hashes here.

File details

Details for the file gqt-0.84.0-py3-none-any.whl.

File metadata

  • Download URL: gqt-0.84.0-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gqt-0.84.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3556519e921052d8207868a372ba54aab7d939505288697af6d31879aaec443d
MD5 3a08c8102e88c9606a9dc0453ebe6115
BLAKE2b-256 cc9d5a710c72d4c85b29950401772781f20f5b9aa9996e8335aba6399c8b5883

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page