Skip to content

Instantly share code, notes, and snippets.

@karladler
Created April 1, 2020 17:03
Show Gist options
  • Save karladler/476e4db990a13cdae0a627eb9b462dfe to your computer and use it in GitHub Desktop.
Save karladler/476e4db990a13cdae0a627eb9b462dfe to your computer and use it in GitHub Desktop.
graphql upload
import {
Resolver, Mutation, Arg,
} from 'type-graphql';
import { GraphQLUpload } from 'apollo-server-koa';
import { Stream } from 'stream';
import { createWriteStream } from 'fs';
interface Upload {
filename: string;
mimetype: string;
encoding: string;
createReadStream: () => Stream;
}
@Resolver()
export class UploadResolver {
@Mutation(() => Boolean)
// eslint-disable-next-line
async addProfilePicture(@Arg('upload', type => GraphQLUpload)
{
createReadStream,
filename,
}: Upload): Promise<boolean> {
return new Promise((resolve, reject) => createReadStream()
.pipe(createWriteStream(`./${filename}`))
.on('finish', () => resolve(true))
.on('error', (error) => reject(error)));
}
}
@aseerkt
Copy link

aseerkt commented Mar 18, 2021

Can you integrate, image data size minimize feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment