Updaed graphql api with ResolveField for download URL

This commit is contained in:
GeorgeWebberley 2026-03-01 12:32:23 +01:00
parent ce2b318f2a
commit 0715991f97

View file

@ -4,11 +4,13 @@ import type { FileUpload } from 'graphql-upload-ts';
import { CasesService } from './cases.service'; import { CasesService } from './cases.service';
import { CaseLaw } from './entities/case-law.entity'; import { CaseLaw } from './entities/case-law.entity';
import { CaseFileValidationPipe } from 'src/common/pipes/file-validation.pipe'; import { CaseFileValidationPipe } from 'src/common/pipes/file-validation.pipe';
import { StorageService } from 'src/common/storage/storage.service';
@Resolver(() => CaseLaw) @Resolver(() => CaseLaw)
export class CasesResolver { export class CasesResolver {
constructor( constructor(
private readonly casesService: CasesService, private readonly casesService: CasesService,
private readonly storage: StorageService,
) {} ) {}
@ -20,6 +22,14 @@ export class CasesResolver {
return this.casesService.findOne(id, caseNumber); return this.casesService.findOne(id, caseNumber);
} }
@ResolveField(() => String, { name: 'downloadUrl', nullable: true })
async getDownloadUrl(@Parent() caseLaw: CaseLaw): Promise<string | null> {
const key = caseLaw.storageKey;
if (!key) return null;
return this.storage.getPresignedUrl(key);
}
@Mutation(() => CaseLaw) @Mutation(() => CaseLaw)
async uploadCase( async uploadCase(
@Args({ name: 'file', type: () => GraphQLUpload }, CaseFileValidationPipe) @Args({ name: 'file', type: () => GraphQLUpload }, CaseFileValidationPipe)