storj/web/satellite/src/api/usage.ts
Yingrong Zhao 1c2067a090
Create graphql query for getting user credit usage (#2255)
* set up creditUsage query

* rename function name to follow convention

* remove unused code

* add coipyright

* fix linting
2019-06-20 09:09:50 -04:00

134 lines
4.0 KiB
TypeScript

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
import apollo from '@/utils/apolloManager';
import gql from 'graphql-tag';
// fetchProjectUsage retrieves total project usage for a given period
export async function fetchProjectUsage(projectID: string, since: Date, before: Date): Promise<RequestResponse<ProjectUsage>> {
let result: RequestResponse<ProjectUsage> = {
errorMessage: '',
isSuccess: false,
data: {} as ProjectUsage
};
let response: any = await apollo.query(
{
query: gql(`
query {
project(id: "${projectID}") {
usage(since: "${since.toISOString()}", before: "${before.toISOString()}") {
storage,
egress,
objectCount,
since,
before
}
}
}`
),
fetchPolicy: 'no-cache',
errorPolicy: 'all'
}
);
if (response.errors) {
result.errorMessage = response.errors[0].message;
} else {
result.isSuccess = true;
result.data = response.data.project.usage;
}
return result;
}
// fetchBucketUsages retrieves bucket usage totals for a particular project
export async function fetchBucketUsages(projectID: string, before: Date, cursor: BucketUsageCursor): Promise<RequestResponse<BucketUsagePage>> {
let result: RequestResponse<BucketUsagePage> = {
errorMessage: '',
isSuccess: false,
data: {} as BucketUsagePage
};
let response: any = null;
try {
response = await apollo.query(
{
query: gql(`
query {
project(id: "${projectID}") {
bucketUsages(before: "${before.toISOString()}", cursor: {
limit: ${cursor.limit}, search: "${cursor.search}", page: ${cursor.page}
}) {
bucketUsages{
bucketName,
storage,
egress,
objectCount,
since,
before
},
search,
limit,
offset,
pageCount,
currentPage,
totalCount
}
}
}`
),
fetchPolicy: 'no-cache',
errorPolicy: 'all'
}
);
} catch (e) {
console.log(e);
}
if (response.errors) {
result.errorMessage = response.errors[0].message;
} else {
result.isSuccess = true;
result.data = response.data.project.bucketUsages;
}
return result;
}
export async function fetchCreditUsage(): Promise<RequestResponse<CreditUsage>> {
let result: RequestResponse<CreditUsage> = {
errorMessage: '',
isSuccess: false,
data: {
referred: 0,
usedCredits: 0,
availableCredits: 0,
}
};
let response: any = await apollo.query(
{
query: gql(`
query {
creditUsage {
referred,
usedCredit,
availableCredit,
}
}`
),
fetchPolicy: 'no-cache',
errorPolicy: 'all',
}
);
if (response.errors) {
result.errorMessage = response.errors[0].message;
} else {
result.isSuccess = true;
result.data = response.data.creditUsage;
}
return result;
}