Skip to content

Commit 21165d8

Browse files
committed
feat: add files length and uploadDate
1 parent 2bebaf0 commit 21165d8

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

src/resolvers/project.js

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ReceiveTypes } from '@hawk.so/types';
22
import * as telegram from '../utils/telegram';
33
const mongo = require('../mongo');
4+
const { ObjectId } = require('mongodb');
45
const { ApolloError, UserInputError } = require('apollo-server-express');
56
const Validator = require('../utils/validator');
67
const EventsFactory = require('../models/eventsFactory');
@@ -577,13 +578,56 @@ module.exports = {
577578
release: release,
578579
});
579580

581+
let enrichedFiles = Array.isArray(releaseDoc?.files) ? releaseDoc.files : [];
582+
583+
if (enrichedFiles.length > 0) {
584+
try {
585+
const filesColl = mongo.databases.events.collection('releases.files');
586+
587+
const ids = [...new Set(
588+
enrichedFiles
589+
.filter(f => f && typeof f === 'object' && f._id)
590+
.map(f => String(f._id))
591+
)].map(id => new ObjectId(id));
592+
593+
if (ids.length > 0) {
594+
const filesInfo = await filesColl.find(
595+
{ _id: { $in: ids } },
596+
{ projection: { length: 1, uploadDate: 1 } }
597+
).toArray();
598+
599+
const metaById = new Map(
600+
filesInfo.map(doc => [String(doc._id), { length: doc.length, uploadDate: doc.uploadDate }])
601+
);
602+
603+
enrichedFiles = enrichedFiles.map((entry) => {
604+
if (typeof entry === 'string') {
605+
return entry;
606+
}
607+
608+
const meta = metaById.get(String(entry._id));
609+
610+
return {
611+
mapFileName: entry.mapFileName,
612+
originFileName: entry.originFileName,
613+
length: meta?.length ?? null,
614+
uploadDate: meta?.uploadDate ?? null,
615+
};
616+
});
617+
}
618+
} catch (e) {
619+
// In case of any error with enrichment, fallback to original structure
620+
enrichedFiles = releaseDoc?.files || [];
621+
}
622+
}
623+
580624
return {
581625
release,
582626
projectId: project._id,
583627
commitsCount: Array.isArray(releaseDoc?.commits) ? releaseDoc.commits.length : 0,
584628
filesCount: Array.isArray(releaseDoc?.files) ? releaseDoc.files.length : 0,
585629
commits: releaseDoc?.commits || [],
586-
files: releaseDoc?.files || [],
630+
files: enrichedFiles,
587631
timestamp: releaseDoc?._id ? dateFromObjectId(releaseDoc._id) : null,
588632
};
589633
},

src/typeDefs/project.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,16 @@ type SourceMapDataExtended {
168168
Bundle or chunk name
169169
"""
170170
originFileName: String!
171+
172+
"""
173+
File size in bytes (from releases-js.files)
174+
"""
175+
length: Int
176+
177+
"""
178+
Upload date (from releases-js.files)
179+
"""
180+
uploadDate: DateTime
171181
}
172182
173183
"""
@@ -412,6 +422,11 @@ type Project {
412422
List of releases with unique events count, commits count and files count
413423
"""
414424
releases: [ProjectRelease!]!
425+
426+
"""
427+
Detailed info for a specific release
428+
"""
429+
releaseDetails(release: String!): ProjectReleaseDetails!
415430
}
416431
417432
extend type Query {

0 commit comments

Comments
 (0)