Skip to content

Commit

Permalink
Merge pull request #127 from manv6/add_job_status_query_ii
Browse files Browse the repository at this point in the history
Add job status query ii
  • Loading branch information
manv6 authored May 8, 2024
2 parents 4773252 + 5823788 commit c342fe8
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@testerloop/server",
"version": "0.1.22",
"version": "0.1.23",
"devDependencies": {
"@graphql-codegen/cli": "^2.16.4",
"@graphql-codegen/typescript": "^2.8.7",
Expand Down
16 changes: 16 additions & 0 deletions src/S3Service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,22 @@ class S3Service {
return objects || [];
}

async listObjectsWithDate(bucketName: string, prefix: string) {
const command = new ListObjectsV2Command({
Bucket: bucketName,
Prefix: prefix,
});
const response = await this.s3.send(command);
const objects = response.Contents?.filter(
(object) => object.Key !== undefined || object.Key !== '',
).map((object) => ({
fileName: object.Key || '',
lastRun: object.LastModified || '',
}));

return objects || [];
}

async getSignedUrl(
bucketName: string,
key: string,
Expand Down
1 change: 1 addition & 0 deletions src/resolvers/JobStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { JobStatusResolvers } from './types/generated.js';
const resolvers: JobStatusResolvers = {
fileName: ({ fileName }) => fileName,
status: ({ status }) => status,
lastRun: ({ lastRun }) => lastRun,
};

export default resolvers;
2 changes: 2 additions & 0 deletions src/resolvers/types/generated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,7 @@ export type IntervalEvent = {
export type JobStatus = {
readonly __typename: 'JobStatus';
readonly fileName: Scalars['String'];
readonly lastRun: Scalars['String'];
readonly status: Scalars['String'];
};

Expand Down Expand Up @@ -1344,6 +1345,7 @@ export type IntervalEventResolvers<ContextType = Context, ParentType extends Res

export type JobStatusResolvers<ContextType = Context, ParentType extends ResolversParentTypes['JobStatus'] = ResolversParentTypes['JobStatus']> = {
fileName: Resolver<ResolversTypes['String'], ParentType, ContextType>;
lastRun: Resolver<ResolversTypes['String'], ParentType, ContextType>;
status: Resolver<ResolversTypes['String'], ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};
Expand Down
1 change: 1 addition & 0 deletions src/schema/JobStatus.graphql
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
type JobStatus {
fileName: String!
status: String!
lastRun: String!
}

type Query {
Expand Down
24 changes: 16 additions & 8 deletions src/util/jobStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,24 @@ import S3Service from '../S3Service.js';
const bucketName = config.AWS_BUCKET_NAME;

export const getAllStatuses = async () => {
const results = await S3Service.listObjects(bucketName, 'job_status/');
const results = await S3Service.listObjectsWithDate(
bucketName,
'job_status/',
);

const jobData = await Promise.all(
results.map(async (key) => {
return {
__typename: 'JobStatus',
fileName: key.split('/')[1].split('.')[0],
status: key.split('/')[1].split('.')[1],
};
}),
results
.filter(
(object) => object.fileName.split('/')[1].split('.')[0] !== '',
)
.map(async (elem) => {
return {
__typename: 'JobStatus',
fileName: elem.fileName.split('/')[1].split('.')[0],
status: elem.fileName.split('/')[1].split('.')[1],
lastRun: elem.lastRun,
};
}),
);

return JSON.stringify(jobData);
Expand Down

0 comments on commit c342fe8

Please sign in to comment.