GitHub plugin
A plugin to run SQL queries on GitHub data.
Setup
To use this plugin, you need to install it first. You can do this by running the following command:
anyquery install github
Once done, anyquery will request you a GitHub Token. Head to GitHub Personal Access Tokens
and create a new classic token with the scopes repo
, gist
, read:packages
, and read:org
. Copy the token and paste it in the terminal.
Tables
github_my_repositories
List the repositories that the authenticated user has access to.
SELECT * FROM github_my_repositories
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | node_id | TEXT |
2 | owner | TEXT |
3 | name | TEXT |
4 | full_name | TEXT |
5 | description | TEXT |
6 | homepage | TEXT |
7 | default_branch | TEXT |
8 | created_at | TEXT |
9 | pushed_at | TEXT |
10 | updated_at | TEXT |
11 | html_url | TEXT |
12 | clone_url | TEXT |
13 | git_url | TEXT |
14 | mirror_url | TEXT |
15 | ssh_url | TEXT |
16 | language | TEXT |
17 | is_fork | INTEGER |
18 | forks_count | INTEGER |
19 | network_count | INTEGER |
20 | open_issues_count | INTEGER |
21 | stargazers_count | INTEGER |
22 | subscribers_count | INTEGER |
23 | size | INTEGER |
24 | allow_rebase_merge | INTEGER |
25 | allow_update_branch | INTEGER |
26 | allow_squash_merge | INTEGER |
27 | allow_merge_commit | INTEGER |
28 | allow_auto_merge | INTEGER |
29 | allow_forking | INTEGER |
30 | web_commit_signoff_required | INTEGER |
31 | delete_branch_on_merge | INTEGER |
32 | topics | TEXT |
33 | custom_properties | TEXT |
34 | archived | INTEGER |
35 | disabled | INTEGER |
36 | visibility | TEXT |
github_repositories_from_user
List the repositories from a specific user.
SELECT * FROM github_repositories_from_user('torvalds');
SELECT * FROM github_repositories_from_user WHERE user = 'torvalds';
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | node_id | TEXT |
2 | owner | TEXT |
3 | name | TEXT |
4 | full_name | TEXT |
5 | description | TEXT |
6 | homepage | TEXT |
7 | default_branch | TEXT |
8 | created_at | TEXT |
9 | pushed_at | TEXT |
10 | updated_at | TEXT |
11 | html_url | TEXT |
12 | clone_url | TEXT |
13 | git_url | TEXT |
14 | mirror_url | TEXT |
15 | ssh_url | TEXT |
16 | language | TEXT |
17 | is_fork | INTEGER |
18 | forks_count | INTEGER |
19 | network_count | INTEGER |
20 | open_issues_count | INTEGER |
21 | stargazers_count | INTEGER |
22 | subscribers_count | INTEGER |
23 | size | INTEGER |
24 | allow_rebase_merge | INTEGER |
25 | allow_update_branch | INTEGER |
26 | allow_squash_merge | INTEGER |
27 | allow_merge_commit | INTEGER |
28 | allow_auto_merge | INTEGER |
29 | allow_forking | INTEGER |
30 | web_commit_signoff_required | INTEGER |
31 | delete_branch_on_merge | INTEGER |
32 | topics | TEXT |
33 | custom_properties | TEXT |
34 | archived | INTEGER |
35 | disabled | INTEGER |
36 | visibility | TEXT |
github_commits_from_repository
List the commits from a specific repository.
SELECT * FROM github_commits_from_repository('julien040/anyquery');
SELECT * FROM github_commits_from_repository WHERE repository = 'julien040/anyquery';
Schema
Column index | Column name | type |
---|---|---|
0 | sha | TEXT |
1 | committer | TEXT |
2 | committer_email | TEXT |
3 | committer_date | TEXT |
4 | author | TEXT |
5 | author_email | TEXT |
6 | author_date | TEXT |
7 | message | TEXT |
8 | html_url | TEXT |
github_issues_from_repository
List the issues from a specific repository.
SELECT * FROM github_issues_from_repository('julien040/gut');
SELECT * FROM github_issues_from_repository WHERE repository = 'julien040/gut';
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | number | INTEGER |
2 | title | TEXT |
3 | body | TEXT |
4 | state | TEXT |
5 | state_reason | TEXT |
6 | by | TEXT |
7 | assignees | TEXT |
8 | labels | TEXT |
9 | closed_at | TEXT |
10 | closed_by | TEXT |
11 | created_at | TEXT |
12 | updated_at | TEXT |
13 | url | TEXT |
14 | reactions | TEXT |
15 | draft | INTEGER |
16 | locked | INTEGER |
github_pull_requests_from_repository
List the pull requests from a specific repository.
SELECT * FROM github_pull_requests_from_repository('sindresorhus/awesome');
SELECT * FROM github_pull_requests_from_repository WHERE repository = 'sindresorhus/awesome';
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | number | INTEGER |
2 | title | TEXT |
3 | body | TEXT |
4 | state | TEXT |
5 | by | TEXT |
6 | assignees | TEXT |
7 | labels | TEXT |
8 | closed_at | TEXT |
9 | created_at | TEXT |
10 | updated_at | TEXT |
11 | merged_at | TEXT |
12 | merged_by | TEXT |
13 | url | TEXT |
github_releases_from_repository
List the releases from a specific repository.
SELECT * FROM github_releases_from_repository('julien040/gut');
SELECT * FROM github_releases_from_repository WHERE repository = 'julien040/gut';
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | name | TEXT |
2 | tag | TEXT |
3 | body | TEXT |
4 | created_at | TEXT |
5 | published_at | TEXT |
6 | by | TEXT |
7 | url | TEXT |
8 | assets | TEXT |
github_branches_from_repository
List the branches from a specific repository.
SELECT * FROM github_branches_from_repository('julien040/gut');
SELECT * FROM github_branches_from_repository WHERE repository = 'julien040/gut';
Schema
Column index | Column name | type |
---|---|---|
0 | name | TEXT |
1 | commit_sha | TEXT |
2 | protected | INTEGER |
3 | url | TEXT |
github_contributors_from_repository
List the last 100 contributors and their stats from a specific repository.
SELECT * FROM github_contributors_from_repository('julien040/gut');
SELECT * FROM github_contributors_from_repository WHERE repository = 'julien040/gut';
Schema
Column index | Column name | type |
---|---|---|
0 | name | TEXT |
1 | contributor_url | TEXT |
2 | additions | INTEGER |
3 | deletions | INTEGER |
4 | commits | INTEGER |
github_tags_from_repository
List the tags from a specific repository.
SELECT * FROM github_tags_from_repository('julien040/gut');
SELECT * FROM github_tags_from_repository WHERE repository = 'julien040/gut';
Schema
Column index | Column name | type |
---|---|---|
0 | name | TEXT |
1 | commit_sha | TEXT |
2 | commit_url | TEXT |
github_followers_from_user
List the followers of a specific user.
SELECT * FROM github_followers_from_user('nalgeon');
SELECT * FROM github_followers_from_user WHERE user = 'nalgeon';
Schema
Column index | Column name | type |
---|---|---|
0 | follower | TEXT |
1 | follower_url | TEXT |
github_following_from_user
List the following of a specific user.
SELECT * FROM github_following_from_user('asg017');
SELECT * FROM github_following_from_user WHERE user = 'asg017';
Schema
Column index | Column name | type |
---|---|---|
0 | follower | TEXT |
1 | follower_url | TEXT |
github_my_followers
List the followers of the authenticated user.
SELECT * FROM github_my_followers;
Schema
Column index | Column name | type |
---|---|---|
0 | follower | TEXT |
1 | follower_url | TEXT |
github_my_following
List the following of the authenticated user.
SELECT * FROM github_my_following;
Schema
Column index | Column name | type |
---|---|---|
0 | follower | TEXT |
1 | follower_url | TEXT |
github_stars_from_user
List the stars of a specific user.
SELECT * FROM github_stars_from_user('rauchg');
SELECT * FROM github_stars_from_user WHERE user = 'rauchg';
Schema
Column index | Column name | type |
---|---|---|
0 | starred_at | TEXT |
1 | id | INTEGER |
2 | node_id | TEXT |
3 | owner | TEXT |
4 | name | TEXT |
5 | full_name | TEXT |
6 | description | TEXT |
7 | homepage | TEXT |
8 | default_branch | TEXT |
9 | created_at | TEXT |
10 | pushed_at | TEXT |
11 | updated_at | TEXT |
12 | html_url | TEXT |
13 | clone_url | TEXT |
14 | git_url | TEXT |
15 | mirror_url | TEXT |
16 | ssh_url | TEXT |
17 | language | TEXT |
18 | is_fork | INTEGER |
19 | forks_count | INTEGER |
20 | network_count | INTEGER |
21 | open_issues_count | INTEGER |
22 | stargazers_count | INTEGER |
23 | subscribers_count | INTEGER |
24 | size | INTEGER |
25 | allow_rebase_merge | INTEGER |
26 | allow_update_branch | INTEGER |
27 | allow_squash_merge | INTEGER |
28 | allow_merge_commit | INTEGER |
29 | allow_auto_merge | INTEGER |
30 | allow_forking | INTEGER |
31 | web_commit_signoff_required | INTEGER |
32 | delete_branch_on_merge | INTEGER |
33 | topics | TEXT |
34 | custom_properties | TEXT |
35 | archived | INTEGER |
36 | disabled | INTEGER |
37 | visibility | TEXT |
github_my_stars
List the stars of the authenticated user.
SELECT * FROM github_my_stars;
Schema
Identical to github_stars_from_user.
github_gists_from_user
List the public gists of a specific user.
SELECT * FROM github_gists_from_user('simonw');
SELECT * FROM github_gists_from_user WHERE user = 'simonw';
Schema
Column index | Column name | type |
---|---|---|
0 | id | TEXT |
1 | gist_url | TEXT |
2 | by | TEXT |
3 | user_url | TEXT |
4 | description | TEXT |
5 | comments | INTEGER |
6 | public | INTEGER |
7 | created_at | TEXT |
8 | updated_at | TEXT |
github_my_gists
List the public and private gists of the authenticated user.
SELECT * FROM github_my_gists;
Schema
Identical to github_gists_from_user.
github_comments_from_issue
List the comments from a specific issue or pull request. If the issue is 0, it will list the comments of all issues and pull requests.
SELECT * FROM github_comments_from_issue('julien040/gut', 56);
SELECT * FROM github_comments_from_issue WHERE repository = 'julien040/gut' AND issue = 56;
Schema
Column index | Column name | type |
---|---|---|
0 | id | TEXT |
1 | body | TEXT |
2 | by | TEXT |
3 | user_url | TEXT |
4 | created_at | TEXT |
5 | updated_at | TEXT |
6 | author_association | TEXT |
7 | reactions | TEXT |
8 | url | TEXT |
github_my_issues
List the issues of the authenticated user (created, assigned, mentioned or subscribed).
-- List all issues related to the authenticated user
SELECT * FROM github_my_issues;
-- List all issues created by the authenticated user
SELECT * FROM github_my_issue('created');
SELECT * FROM github_my_issue WHERE filter = 'created';
-- List all issues assigned to the authenticated user
SELECT * FROM github_my_issue('assigned');
SELECT * FROM github_my_issue WHERE filter = 'assigned';
-- List all issues where the authenticated user is mentioned
SELECT * FROM github_my_issue('mentioned');
SELECT * FROM github_my_issue WHERE filter = 'mentioned';
-- List all issues where the authenticated user has subscribed
SELECT * FROM github_my_issue('subscribed');
SELECT * FROM github_my_issue WHERE filter = 'subscribed';
Schema
Column index | Column name | type |
---|---|---|
0 | id | INTEGER |
1 | number | INTEGER |
2 | by | TEXT |
3 | user_url | TEXT |
4 | title | TEXT |
5 | state | INTEGER |
6 | locked | INTEGER |
7 | author_association | TEXT |
8 | assignees | TEXT |
9 | labels | TEXT |
10 | comments | INTEGER |
11 | created_at | TEXT |
12 | updated_at | TEXT |
13 | closed_at | TEXT |
14 | closed_by | TEXT |
15 | is_pull_request | TEXT |
16 | repository | TEXT |
github_stargazers_from_repository
List the stargazers of a specific repository.
-- List all stargazers of Anyquery
SELECT * FROM github_stargazers_from_repository('julien040/anyquery');
-- List stargarzers per day of Anyquery
SELECT date(starred_at) as day, count(*) FROM github_stargazers_from_repository('julien040/anyquery') GROUP BY day ORDER BY day;
Schema
Column index | Column name | type |
---|---|---|
0 | login | TEXT |
1 | starred_at | TEXT |
2 | user_id | TEXT |
Caveats
- The plugin is limited to 5000 requests per hour. If you reach this limit, you will have to wait an hour before making new requests. This is a limitation from the GitHub API.
- Data is cached for 1 hour. If you want to clear the cache, run
anyquery -q "SELECT clear_plugin_cache('github')"
, and then restart Anyquery. - The plugin is read-only. You can't create, update, or delete data from GitHub.