NestJS Integration
For NestJS applications, Torrin offers a native module implementation.
Setup
bash
npm install @nestjs/common @nestjs/core @torrin-kit/server @torrin-kit/server-nestjs @torrin-kit/storage-localModule Registration
Import TorrinModule in your AppModule.
typescript
import { Module } from '@nestjs/common';
import { TorrinModule } from '@torrin-kit/server-nestjs';
import { createLocalStorageDriver } from '@torrin-kit/storage-local';
import { createInMemoryStore } from '@torrin-kit/server';
@Module({
imports: [
TorrinModule.forRoot({
storage: createLocalStorageDriver({
baseDir: './uploads'
}),
store: createInMemoryStore(),
uploadTtlMs: 24 * 60 * 60 * 1000,
}),
],
})
export class AppModule {}Using TorrinService
You can inject TorrinService to interact with uploads programmatically.
typescript
import { Injectable } from '@nestjs/common';
import { InjectTorrin, TorrinService } from '@torrin-kit/server-nestjs';
@Injectable()
export class UploadService {
constructor(
@InjectTorrin() private readonly torrin: TorrinService
) {}
async getUploadStatus(uploadId: string) {
return this.torrin.getStatus(uploadId);
}
async cleanExpiredUploads() {
await this.torrin.cleanup();
}
}Async Configuration
If you need to load configuration asynchronously (e.g., from ConfigService):
typescript
TorrinModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
storage: createS3StorageDriver({
bucket: config.get('S3_BUCKET'),
region: config.get('AWS_REGION'),
}),
store: createInMemoryStore(),
}),
});