Skip to content

Instantly share code, notes, and snippets.

@railsstudent
Created August 23, 2021 03:22
Show Gist options
  • Save railsstudent/5dc935bc5648fa7244d95bf3fad0d5ed to your computer and use it in GitHub Desktop.
Save railsstudent/5dc935bc5648fa7244d95bf3fad0d5ed to your computer and use it in GitHub Desktop.
Reusable nestjs pipe to query data from table
import { Injectable, mixin, PipeTransform, Type } from '@nestjs/common'
import { EntityManager, ObjectType } from 'typeorm'
import { BaseEvidence } from '@/entity'
import { EvidenceFile } from '../types'
export function DownloadBlobnameEvidencePipe<T extends BaseEvidence>(type: ObjectType<T>): Type<PipeTransform> {
@Injectable()
class EvidenceBlobnamePipe implements PipeTransform<string, Promise<EvidenceFile | undefined>> {
constructor(private em: EntityManager) {}
async transform(id: string): Promise<EvidenceFile | undefined> {
const evidence = await this.em.findOne(type, id)
if (!evidence) {
return undefined
}
const { downloadBlobname: blobname = '', filename = '' } = evidence || {}
return {
blobname,
filename,
}
}
}
const Pipe: Type<PipeTransform> = mixin(EvidenceBlobnamePipe)
return Pipe
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment