Skip to content

Commit 70cd7f2

Browse files
committed
feat: list datasets
1 parent 749b673 commit 70cd7f2

File tree

6 files changed

+74
-0
lines changed

6 files changed

+74
-0
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
{
5151
"command": "aqora.uplaod",
5252
"title": "Aqora: Upload your project to Aqora platform"
53+
},
54+
{
55+
"command": "aqora.dataset.list",
56+
"title": "Aqora: Show available datasets"
5357
}
5458
]
5559
},

src/commands/datasets/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import * as vscode from "vscode";
2+
import { list } from "./list";
3+
4+
const listDisposable = vscode.commands.registerCommand(
5+
"aqora.dataset.list",
6+
list,
7+
);
8+
9+
export const datasetDisposables = [listDisposable];

src/commands/datasets/list.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { GlobalArgs } from "src/globalArgs";
2+
import { Get_DatasetsQuery } from "src/graphql/graphql";
3+
import { createAuthenticatedClient } from "src/graphqlClient";
4+
import * as vscode from "vscode";
5+
import { gql } from "../../graphql/gql";
6+
7+
const GET_DATASETS = gql(`
8+
query GET_DATASETS {
9+
datasets {
10+
edges {
11+
node {
12+
slug
13+
votes
14+
shortDescription
15+
}
16+
}
17+
}
18+
}
19+
`);
20+
21+
export async function list() {
22+
const client = await createAuthenticatedClient();
23+
const {
24+
data: { datasets },
25+
} = await client.query<Get_DatasetsQuery>({ query: GET_DATASETS });
26+
27+
if (!datasets?.edges) {
28+
return;
29+
}
30+
31+
const dataset = await vscode.window.showQuickPick(
32+
datasets.edges.map(({ node }) => ({
33+
label: node.slug,
34+
description: node.shortDescription || node.slug,
35+
detail: `Dataset with ${node.votes} votes`,
36+
id: node.slug,
37+
})),
38+
{ matchOnDetail: true },
39+
);
40+
41+
if (!dataset) {
42+
return;
43+
}
44+
45+
const datasetUrl = new URL(`datasets/${dataset.id}`, GlobalArgs.aqoraUrl());
46+
vscode.env.openExternal(vscode.Uri.parse(datasetUrl.toString()));
47+
}

src/commands/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as vscode from "vscode";
22
import { templateCompetitionDisposable } from "./competitions";
3+
import { datasetDisposables } from "./datasets";
34
import { loginDisposable } from "./login/oauth2";
45
import { testProjectDisposable } from "./testProject";
56
import { uploadDisposable } from "./upload";
@@ -9,6 +10,7 @@ const disposables = [
910
loginDisposable,
1011
testProjectDisposable,
1112
uploadDisposable,
13+
...datasetDisposables,
1214
];
1315

1416
export default function registerCommands(

src/graphql/gql.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
1515
*/
1616
type Documents = {
1717
"\n query GET_COMPETITIONS {\n competitions {\n edges {\n node {\n slug\n title\n shortDescription\n }\n }\n }\n }\n": typeof types.Get_CompetitionsDocument,
18+
"\n query GET_DATASETS {\n datasets {\n edges {\n node {\n slug\n votes\n shortDescription\n }\n }\n }\n }\n": typeof types.Get_DatasetsDocument,
1819
" \n mutation OAUTH2_TOKEN_MUTATION($code: String!, $clientId: String!, $redirectUri: Url!) {\n oauth2Token(\n input: { code: $code, clientId: $clientId, redirectUri: $redirectUri }\n ) {\n clientError\n unauthorized\n issued {\n expiresIn\n accessToken\n refreshToken\n }\n }\n }\n": typeof types.Oauth2_Token_MutationDocument,
1920
"\n subscription Oauth2RedirectSubscription($authUrl: Url!, $signature: String!) {\n oauth2Redirect(input: { authorizationUrl: $authUrl, signature: $signature }) {\n code\n }\n }\n": typeof types.Oauth2RedirectSubscriptionDocument,
2021
"\n subscription COMPETITION_ENTITY_SUBMISSION_STATUS(\n $competitionId: ID!\n $entityId: ID!\n ) {\n projectVersionStatusUpdate(\n competitionId: $competitionId\n entityId: $entityId\n ) {\n latest\n status\n evaluation {\n score\n error\n max\n }\n }\n }\n": typeof types.Competition_Entity_Submission_StatusDocument,
@@ -23,6 +24,7 @@ type Documents = {
2324
};
2425
const documents: Documents = {
2526
"\n query GET_COMPETITIONS {\n competitions {\n edges {\n node {\n slug\n title\n shortDescription\n }\n }\n }\n }\n": types.Get_CompetitionsDocument,
27+
"\n query GET_DATASETS {\n datasets {\n edges {\n node {\n slug\n votes\n shortDescription\n }\n }\n }\n }\n": types.Get_DatasetsDocument,
2628
" \n mutation OAUTH2_TOKEN_MUTATION($code: String!, $clientId: String!, $redirectUri: Url!) {\n oauth2Token(\n input: { code: $code, clientId: $clientId, redirectUri: $redirectUri }\n ) {\n clientError\n unauthorized\n issued {\n expiresIn\n accessToken\n refreshToken\n }\n }\n }\n": types.Oauth2_Token_MutationDocument,
2729
"\n subscription Oauth2RedirectSubscription($authUrl: Url!, $signature: String!) {\n oauth2Redirect(input: { authorizationUrl: $authUrl, signature: $signature }) {\n code\n }\n }\n": types.Oauth2RedirectSubscriptionDocument,
2830
"\n subscription COMPETITION_ENTITY_SUBMISSION_STATUS(\n $competitionId: ID!\n $entityId: ID!\n ) {\n projectVersionStatusUpdate(\n competitionId: $competitionId\n entityId: $entityId\n ) {\n latest\n status\n evaluation {\n score\n error\n max\n }\n }\n }\n": types.Competition_Entity_Submission_StatusDocument,
@@ -48,6 +50,10 @@ export function gql(source: string): unknown;
4850
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
4951
*/
5052
export function gql(source: "\n query GET_COMPETITIONS {\n competitions {\n edges {\n node {\n slug\n title\n shortDescription\n }\n }\n }\n }\n"): (typeof documents)["\n query GET_COMPETITIONS {\n competitions {\n edges {\n node {\n slug\n title\n shortDescription\n }\n }\n }\n }\n"];
53+
/**
54+
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
55+
*/
56+
export function gql(source: "\n query GET_DATASETS {\n datasets {\n edges {\n node {\n slug\n votes\n shortDescription\n }\n }\n }\n }\n"): (typeof documents)["\n query GET_DATASETS {\n datasets {\n edges {\n node {\n slug\n votes\n shortDescription\n }\n }\n }\n }\n"];
5157
/**
5258
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
5359
*/

src/graphql/graphql.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4545,6 +4545,11 @@ export type Get_CompetitionsQueryVariables = Exact<{ [key: string]: never; }>;
45454545

45464546
export type Get_CompetitionsQuery = { __typename?: 'Query', competitions: { __typename?: 'CompetitionConnection', edges: Array<{ __typename?: 'CompetitionEdge', node: { __typename?: 'Competition', slug: string, title: string, shortDescription: string } }> } };
45474547

4548+
export type Get_DatasetsQueryVariables = Exact<{ [key: string]: never; }>;
4549+
4550+
4551+
export type Get_DatasetsQuery = { __typename?: 'Query', datasets: { __typename?: 'DatasetConnection', edges: Array<{ __typename?: 'DatasetEdge', node: { __typename?: 'Dataset', slug: string, votes: number, shortDescription: string | null } }> } };
4552+
45484553
export type Oauth2_Token_MutationMutationVariables = Exact<{
45494554
code: Scalars['String']['input'];
45504555
clientId: Scalars['String']['input'];
@@ -4587,6 +4592,7 @@ export type Refresh_TokenMutation = { __typename?: 'Mutation', oauth2Refresh: {
45874592

45884593

45894594
export const Get_CompetitionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GET_COMPETITIONS"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"shortDescription"}}]}}]}}]}}]}}]} as unknown as DocumentNode<Get_CompetitionsQuery, Get_CompetitionsQueryVariables>;
4595+
export const Get_DatasetsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GET_DATASETS"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"datasets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"votes"}},{"kind":"Field","name":{"kind":"Name","value":"shortDescription"}}]}}]}}]}}]}}]} as unknown as DocumentNode<Get_DatasetsQuery, Get_DatasetsQueryVariables>;
45904596
export const Oauth2_Token_MutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"OAUTH2_TOKEN_MUTATION"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"code"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"clientId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"redirectUri"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Url"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"oauth2Token"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"code"},"value":{"kind":"Variable","name":{"kind":"Name","value":"code"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"clientId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"clientId"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"redirectUri"},"value":{"kind":"Variable","name":{"kind":"Name","value":"redirectUri"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clientError"}},{"kind":"Field","name":{"kind":"Name","value":"unauthorized"}},{"kind":"Field","name":{"kind":"Name","value":"issued"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"expiresIn"}},{"kind":"Field","name":{"kind":"Name","value":"accessToken"}},{"kind":"Field","name":{"kind":"Name","value":"refreshToken"}}]}}]}}]}}]} as unknown as DocumentNode<Oauth2_Token_MutationMutation, Oauth2_Token_MutationMutationVariables>;
45914597
export const Oauth2RedirectSubscriptionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"Oauth2RedirectSubscription"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"authUrl"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Url"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"signature"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"oauth2Redirect"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"authorizationUrl"},"value":{"kind":"Variable","name":{"kind":"Name","value":"authUrl"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"signature"},"value":{"kind":"Variable","name":{"kind":"Name","value":"signature"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}}]}}]} as unknown as DocumentNode<Oauth2RedirectSubscriptionSubscription, Oauth2RedirectSubscriptionSubscriptionVariables>;
45924598
export const Competition_Entity_Submission_StatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"COMPETITION_ENTITY_SUBMISSION_STATUS"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"competitionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"entityId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projectVersionStatusUpdate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"competitionId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"competitionId"}}},{"kind":"Argument","name":{"kind":"Name","value":"entityId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"entityId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"latest"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"score"}},{"kind":"Field","name":{"kind":"Name","value":"error"}},{"kind":"Field","name":{"kind":"Name","value":"max"}}]}}]}}]}}]} as unknown as DocumentNode<Competition_Entity_Submission_StatusSubscription, Competition_Entity_Submission_StatusSubscriptionVariables>;

0 commit comments

Comments
 (0)