storj/web/satellite/src/api/usage.ts

98 lines
3.4 KiB
TypeScript
Raw Normal View History

2019-04-05 12:24:34 +01:00
// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
import apollo from '@/utils/apolloManager';
import gql from 'graphql-tag';
import { RequestResponse } from '@/types/response';
2019-04-05 12:24:34 +01:00
// fetchProjectUsage retrieves total project usage for a given period
2019-08-05 16:43:52 +01:00
export async function fetchProjectUsage(projectId: string, since: Date, before: Date): Promise<RequestResponse<ProjectUsage>> {
let result: RequestResponse<ProjectUsage> = new RequestResponse<ProjectUsage>();
2019-04-05 12:24:34 +01:00
let response: any = await apollo.query(
{
query: gql(`
2019-08-05 16:43:52 +01:00
query($projectId: String!, $since: DateTime!, $before: DateTime!) {
project(id: $projectId) {
usage(since: $since, before: $before) {
2019-04-05 12:24:34 +01:00
storage,
egress,
objectCount,
2019-04-05 12:24:34 +01:00
since,
before
}
}
}`
),
2019-08-05 16:43:52 +01:00
variables: {
projectId: projectId,
since: since.toISOString(),
before: before.toISOString()
},
2019-04-05 12:24:34 +01:00
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;
}
2019-05-16 11:43:46 +01:00
// fetchBucketUsages retrieves bucket usage totals for a particular project
2019-08-05 16:43:52 +01:00
export async function fetchBucketUsages(projectId: string, before: Date, cursor: BucketUsageCursor): Promise<RequestResponse<BucketUsagePage>> {
let result: RequestResponse<BucketUsagePage> = new RequestResponse<BucketUsagePage>();
2019-05-16 11:43:46 +01:00
let response: any = await apollo.query(
{
query: gql(`
2019-08-05 16:43:52 +01:00
query($projectId: String!, $before: DateTime!, $limit: Int!, $search: String!, $page: Int!) {
project(id: $projectId) {
bucketUsages(before: $before, cursor: {
limit: $limit, search: $search, page: $page
}) {
bucketUsages{
bucketName,
storage,
egress,
objectCount,
since,
before
},
search,
limit,
offset,
pageCount,
currentPage,
totalCount
2019-05-16 11:43:46 +01:00
}
}
}`
),
2019-08-05 16:43:52 +01:00
variables: {
projectId: projectId,
before: before.toISOString(),
limit: cursor.limit,
search: cursor.search,
page: cursor.page
},
fetchPolicy: 'no-cache',
errorPolicy: 'all'
}
);
2019-05-16 11:43:46 +01:00
if (response.errors) {
result.errorMessage = response.errors[0].message;
} else {
result.isSuccess = true;
result.data = response.data.project.bucketUsages;
}
return result;
}