74 lines
1.4 KiB
TypeScript
74 lines
1.4 KiB
TypeScript
import { gql } from 'graphql-tag';
|
|
import { oneLine } from 'common-tags';
|
|
|
|
export const files = gql`
|
|
query files($repo: ID!, $branch: String!, $path: String!, $recursive: Boolean!, $cursor: String) {
|
|
project(fullPath: $repo) {
|
|
repository {
|
|
tree(ref: $branch, path: $path, recursive: $recursive) {
|
|
blobs(after: $cursor) {
|
|
nodes {
|
|
type
|
|
id: sha
|
|
path
|
|
name
|
|
}
|
|
pageInfo {
|
|
endCursor
|
|
hasNextPage
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const blobs = gql`
|
|
query blobs($repo: ID!, $branch: String!, $paths: [String!]!) {
|
|
project(fullPath: $repo) {
|
|
repository {
|
|
blobs(ref: $branch, paths: $paths) {
|
|
nodes {
|
|
id
|
|
data: rawBlob
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export function lastCommits(paths: string[]) {
|
|
const tree = paths
|
|
.map(
|
|
(path, index) => oneLine`
|
|
tree${index}: tree(ref: $branch, path: "${path}") {
|
|
lastCommit {
|
|
authorName
|
|
authoredDate
|
|
author {
|
|
id
|
|
username
|
|
name
|
|
publicEmail
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
)
|
|
.join('\n');
|
|
|
|
const query = gql`
|
|
query lastCommits($repo: ID!, $branch: String!) {
|
|
project(fullPath: $repo) {
|
|
repository {
|
|
${tree}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
return query;
|
|
}
|