diff --git a/src/app/releases/version/file/release.version.file.serializer.ts b/src/app/releases/version/file/release.version.file.serializer.ts index 559478130..382f10ee8 100644 --- a/src/app/releases/version/file/release.version.file.serializer.ts +++ b/src/app/releases/version/file/release.version.file.serializer.ts @@ -21,6 +21,7 @@ import { BuildDocument } from '../../../builds/build.document'; import { Serializer, SerializerLevel, SerializerOptions, SerializerReference } from '../../../common/serializer'; import { Context } from '../../../common/typings/context'; import { ModelName } from '../../../common/typings/models'; +import { File } from '../../../files/file'; import { FileDocument } from '../../../files/file.document'; import { state } from '../../../state'; import { UserDocument } from '../../../users/user.document'; @@ -56,13 +57,17 @@ export class ReleaseVersionFileSerializer extends Serializer FileDocument): ReleaseVersionFileDocument { const versionFile = { - flavor: doc.flavor, released_at: doc.released_at, } as ReleaseVersionFileDocument; @@ -81,25 +85,33 @@ export class ReleaseVersionFileSerializer extends Serializer buildSerializer(ctx, build, opts)); - } + // table file props + if (File.getMimeCategory(doc._file as FileDocument) === 'table') { - // validation - if (doc.validation && doc.validation.status) { - versionFile.validation = { - status: doc.validation.status, - message: doc.validation.message, - validated_at: doc.validation.validated_at, - validated_by: this._populated(doc, 'validation._validated_by') ? state.serializers.User.reduced(ctx, doc.validation._validated_by as UserDocument, opts) : undefined, - }; - } + // flavor + versionFile.flavor = doc.flavor; + + // compat + if (this._populated(doc, '_compatibility')) { + versionFile.compatibility = (doc._compatibility as BuildDocument[]).map(build => buildSerializer(ctx, build, opts)); + } - // thumb - if (opts.thumbPerFile && opts.thumbFormat) { - versionFile.thumb = this.getFileThumb(ctx, doc, opts); + // validation + if (doc.validation && doc.validation.status) { + versionFile.validation = { + status: doc.validation.status, + message: doc.validation.message, + validated_at: doc.validation.validated_at, + validated_by: this._populated(doc, 'validation._validated_by') ? state.serializers.User.reduced(ctx, doc.validation._validated_by as UserDocument, opts) : undefined, + }; + } + + // thumb + if (opts.thumbPerFile && opts.thumbFormat) { + versionFile.thumb = this.getFileThumb(ctx, doc, opts); + } } + return versionFile; } }