From 34d805969fb2d71e6f07d34b9db5bca1b550778a Mon Sep 17 00:00:00 2001 From: rubikscraft Date: Mon, 21 Feb 2022 22:36:47 +0100 Subject: [PATCH] reorganize --- src/app.module.ts | 14 +++++++------- .../imagedb}/image.entity.ts | 2 +- .../imagedb/imagedb.module.ts} | 8 ++++---- .../imagedb/imagedb.service.ts} | 4 ++-- .../imagedb}/mimes.service.ts | 2 +- src/{users => collections/userdb}/user.dto.ts | 0 .../userdb}/user.entity.ts | 0 .../userdb/userdb.module.ts} | 2 +- .../userdb/userdb.service.ts} | 8 +------- src/{ => lib}/safeimages/safeimages.module.ts | 4 ++-- src/{ => lib}/safeimages/safeimages.service.ts | 18 ++++++++++-------- src/root/root.module.ts | 10 ---------- src/{ => routes}/auth/admin.guard.ts | 2 +- src/{ => routes}/auth/auth.controller.ts | 2 +- src/{ => routes}/auth/auth.dto.ts | 2 +- src/{ => routes}/auth/auth.module.ts | 2 +- src/{ => routes}/auth/auth.service.ts | 8 ++++---- src/{ => routes}/auth/jwt.guard.ts | 0 src/{ => routes}/auth/jwt.strategy.ts | 2 +- src/{ => routes}/auth/local-auth.guard.ts | 0 src/{ => routes}/auth/local.strategy.ts | 4 ++-- .../image/imageroute.controller.ts} | 12 ++++-------- src/routes/image/imageroute.module.ts | 9 +++++++++ src/{lib/maybe.ts => types/failable.ts} | 0 24 files changed, 53 insertions(+), 62 deletions(-) rename src/{images => collections/imagedb}/image.entity.ts (80%) rename src/{images/images.module.ts => collections/imagedb/imagedb.module.ts} (59%) rename src/{images/images.service.ts => collections/imagedb/imagedb.service.ts} (97%) rename src/{images => collections/imagedb}/mimes.service.ts (95%) rename src/{users => collections/userdb}/user.dto.ts (100%) rename src/{users => collections/userdb}/user.entity.ts (100%) rename src/{users/users.module.ts => collections/userdb/userdb.module.ts} (85%) rename src/{users/users.service.ts => collections/userdb/userdb.service.ts} (95%) rename src/{ => lib}/safeimages/safeimages.module.ts (67%) rename src/{ => lib}/safeimages/safeimages.service.ts (61%) delete mode 100644 src/root/root.module.ts rename src/{ => routes}/auth/admin.guard.ts (92%) rename src/{ => routes}/auth/auth.controller.ts (97%) rename src/{ => routes}/auth/auth.dto.ts (90%) rename src/{ => routes}/auth/auth.module.ts (95%) rename src/{ => routes}/auth/auth.service.ts (87%) rename src/{ => routes}/auth/jwt.guard.ts (100%) rename src/{ => routes}/auth/jwt.strategy.ts (94%) rename src/{ => routes}/auth/local-auth.guard.ts (100%) rename src/{ => routes}/auth/local.strategy.ts (82%) rename src/{root/root.controller.ts => routes/image/imageroute.controller.ts} (83%) create mode 100644 src/routes/image/imageroute.module.ts rename src/{lib/maybe.ts => types/failable.ts} (100%) diff --git a/src/app.module.ts b/src/app.module.ts index 1a8a3a2..f873e86 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,12 +1,12 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { AuthModule } from './auth/auth.module'; -import { UserEntity } from './users/user.entity'; -import { UsersModule } from './users/users.module'; -import { RootModule } from './root/root.module'; +import { AuthModule } from './routes/auth/auth.module'; +import { UserEntity } from './collections/userdb/user.entity'; +import { UsersModule } from './collections/userdb/userdb.module'; +import { ImageModule } from './routes/image/imageroute.module'; import Config from './env'; -import { ImageEntity } from './images/image.entity'; -import { SafeImagesModule } from './safeimages/safeimages.module'; +import { ImageEntity } from './collections/imagedb/image.entity'; +import { SafeImagesModule } from './lib/safeimages/safeimages.module'; @Module({ imports: [ @@ -23,7 +23,7 @@ import { SafeImagesModule } from './safeimages/safeimages.module'; }), AuthModule, UsersModule, - RootModule, + ImageModule, SafeImagesModule, ], }) diff --git a/src/images/image.entity.ts b/src/collections/imagedb/image.entity.ts similarity index 80% rename from src/images/image.entity.ts rename to src/collections/imagedb/image.entity.ts index 3159b5f..e7c4242 100644 --- a/src/images/image.entity.ts +++ b/src/collections/imagedb/image.entity.ts @@ -1,4 +1,4 @@ -import { Column, Entity, Index, PrimaryGeneratedColumn, Unique } from 'typeorm'; +import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; import { SupportedMime, SupportedMimes } from './mimes.service'; @Entity() diff --git a/src/images/images.module.ts b/src/collections/imagedb/imagedb.module.ts similarity index 59% rename from src/images/images.module.ts rename to src/collections/imagedb/imagedb.module.ts index 63cef86..addcc98 100644 --- a/src/images/images.module.ts +++ b/src/collections/imagedb/imagedb.module.ts @@ -1,12 +1,12 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ImageEntity } from './image.entity'; -import { ImagesService } from './images.service'; +import { ImageDBService } from './imagedb.service'; import { MimesService } from './mimes.service'; @Module({ imports: [TypeOrmModule.forFeature([ImageEntity])], - providers: [ImagesService, MimesService], - exports: [ImagesService, MimesService], + providers: [ImageDBService, MimesService], + exports: [ImageDBService, MimesService], }) -export class ImagesModule {} +export class ImageDBModule {} diff --git a/src/images/images.service.ts b/src/collections/imagedb/imagedb.service.ts similarity index 97% rename from src/images/images.service.ts rename to src/collections/imagedb/imagedb.service.ts index 213cba9..3abb00e 100644 --- a/src/images/images.service.ts +++ b/src/collections/imagedb/imagedb.service.ts @@ -3,11 +3,11 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { ImageEntity } from './image.entity'; import Crypto from 'crypto'; -import { AsyncFailable, Fail, HasFailed, HasSuccess } from 'src/lib/maybe'; +import { AsyncFailable, Fail, HasFailed, HasSuccess } from 'src/types/failable'; import { SupportedMime } from './mimes.service'; @Injectable() -export class ImagesService { +export class ImageDBService { constructor( @InjectRepository(ImageEntity) private imageRepository: Repository, diff --git a/src/images/mimes.service.ts b/src/collections/imagedb/mimes.service.ts similarity index 95% rename from src/images/mimes.service.ts rename to src/collections/imagedb/mimes.service.ts index c0ea8f8..9abb154 100644 --- a/src/images/mimes.service.ts +++ b/src/collections/imagedb/mimes.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { Fail, Failable } from 'src/lib/maybe'; +import { Fail, Failable } from 'src/types/failable'; const tuple = (...args: T): T => args; diff --git a/src/users/user.dto.ts b/src/collections/userdb/user.dto.ts similarity index 100% rename from src/users/user.dto.ts rename to src/collections/userdb/user.dto.ts diff --git a/src/users/user.entity.ts b/src/collections/userdb/user.entity.ts similarity index 100% rename from src/users/user.entity.ts rename to src/collections/userdb/user.entity.ts diff --git a/src/users/users.module.ts b/src/collections/userdb/userdb.module.ts similarity index 85% rename from src/users/users.module.ts rename to src/collections/userdb/userdb.module.ts index 3bd64b9..362bff6 100644 --- a/src/users/users.module.ts +++ b/src/collections/userdb/userdb.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { UserEntity } from './user.entity'; -import { UsersService } from './users.service'; +import { UsersService } from './userdb.service'; @Module({ imports: [TypeOrmModule.forFeature([UserEntity])], diff --git a/src/users/users.service.ts b/src/collections/userdb/userdb.service.ts similarity index 95% rename from src/users/users.service.ts rename to src/collections/userdb/userdb.service.ts index 2a8ccaa..86b3c56 100644 --- a/src/users/users.service.ts +++ b/src/collections/userdb/userdb.service.ts @@ -1,12 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { - AsyncFailable, - Fail, - Failure, - HasFailed, - HasSuccess, -} from 'src/lib/maybe'; +import { AsyncFailable, Fail, HasFailed, HasSuccess } from 'src/types/failable'; import { Repository } from 'typeorm'; import { UserEntity } from './user.entity'; diff --git a/src/safeimages/safeimages.module.ts b/src/lib/safeimages/safeimages.module.ts similarity index 67% rename from src/safeimages/safeimages.module.ts rename to src/lib/safeimages/safeimages.module.ts index 6247eaa..9128de3 100644 --- a/src/safeimages/safeimages.module.ts +++ b/src/lib/safeimages/safeimages.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; -import { ImagesModule } from 'src/images/images.module'; +import { ImageDBModule } from 'src/collections/imagedb/imagedb.module'; import { SafeImagesService } from './safeimages.service'; @Module({ - imports: [ImagesModule], + imports: [ImageDBModule], providers: [SafeImagesService], exports: [SafeImagesService], }) diff --git a/src/safeimages/safeimages.service.ts b/src/lib/safeimages/safeimages.service.ts similarity index 61% rename from src/safeimages/safeimages.service.ts rename to src/lib/safeimages/safeimages.service.ts index ce2cca6..2e3f597 100644 --- a/src/safeimages/safeimages.service.ts +++ b/src/lib/safeimages/safeimages.service.ts @@ -1,20 +1,22 @@ import { Injectable } from '@nestjs/common'; -import { fileTypeFromBuffer } from 'file-type'; -import { ImageEntity } from 'src/images/image.entity'; -import { ImagesService } from 'src/images/images.service'; -import { FullMime, MimesService } from 'src/images/mimes.service'; -import { AsyncFailable, Fail, HasFailed } from 'src/lib/maybe'; +import { fileTypeFromBuffer, FileTypeResult } from 'file-type'; +import { ImageEntity } from 'src/collections/imagedb/image.entity'; +import { ImageDBService } from 'src/collections/imagedb/imagedb.service'; +import { FullMime, MimesService } from 'src/collections/imagedb/mimes.service'; +import { AsyncFailable, Fail, HasFailed } from 'src/types/failable'; @Injectable() export class SafeImagesService { constructor( - private readonly imagesService: ImagesService, + private readonly imagesService: ImageDBService, private readonly mimesService: MimesService, ) {} async uploadImage(image: Buffer): AsyncFailable { - const { mime } = await fileTypeFromBuffer(image); - const fullMime = await this.mimesService.getFullMime(mime); + const mime: FileTypeResult = await fileTypeFromBuffer(image); + const fullMime = await this.mimesService.getFullMime( + mime?.mime ?? 'extra/discard', + ); if (HasFailed(fullMime)) return fullMime; const processedImage: Buffer = await this.processImage(image, fullMime); diff --git a/src/root/root.module.ts b/src/root/root.module.ts deleted file mode 100644 index 9411a3c..0000000 --- a/src/root/root.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from '@nestjs/common'; -import { ImagesModule } from 'src/images/images.module'; -import { SafeImagesModule } from 'src/safeimages/safeimages.module'; -import { RootController } from './root.controller'; - -@Module({ - imports: [SafeImagesModule], - controllers: [RootController], -}) -export class RootModule {} diff --git a/src/auth/admin.guard.ts b/src/routes/auth/admin.guard.ts similarity index 92% rename from src/auth/admin.guard.ts rename to src/routes/auth/admin.guard.ts index 62e0571..55554de 100644 --- a/src/auth/admin.guard.ts +++ b/src/routes/auth/admin.guard.ts @@ -6,7 +6,7 @@ import { } from '@nestjs/common'; import { plainToClass } from 'class-transformer'; import { validate } from 'class-validator'; -import { User } from 'src/users/user.dto'; +import { User } from 'src/collections/userdb/user.dto'; @Injectable() export class AdminGuard implements CanActivate { diff --git a/src/auth/auth.controller.ts b/src/routes/auth/auth.controller.ts similarity index 97% rename from src/auth/auth.controller.ts rename to src/routes/auth/auth.controller.ts index b16d170..9047b61 100644 --- a/src/auth/auth.controller.ts +++ b/src/routes/auth/auth.controller.ts @@ -18,7 +18,7 @@ import { import { AuthService } from './auth.service'; import { JwtAuthGuard } from './jwt.guard'; import { AdminGuard } from './admin.guard'; -import { HasFailed } from 'src/lib/maybe'; +import { HasFailed } from 'src/types/failable'; @Controller('auth') export class AuthController { diff --git a/src/auth/auth.dto.ts b/src/routes/auth/auth.dto.ts similarity index 90% rename from src/auth/auth.dto.ts rename to src/routes/auth/auth.dto.ts index a9cbe78..e0e151c 100644 --- a/src/auth/auth.dto.ts +++ b/src/routes/auth/auth.dto.ts @@ -5,7 +5,7 @@ import { IsString, ValidateNested, } from 'class-validator'; -import { User } from 'src/users/user.dto'; +import { User } from 'src/collections/userdb/user.dto'; export class LoginResponseDto { @IsString() diff --git a/src/auth/auth.module.ts b/src/routes/auth/auth.module.ts similarity index 95% rename from src/auth/auth.module.ts rename to src/routes/auth/auth.module.ts index f7aa02b..7540a79 100644 --- a/src/auth/auth.module.ts +++ b/src/routes/auth/auth.module.ts @@ -1,6 +1,6 @@ import { Logger, Module, OnModuleInit } from '@nestjs/common'; import { PassportModule } from '@nestjs/passport'; -import { UsersModule } from 'src/users/users.module'; +import { UsersModule } from 'src/collections/userdb/userdb.module'; import { AuthService } from './auth.service'; import { LocalStrategy } from './local.strategy'; import { AuthController } from './auth.controller'; diff --git a/src/auth/auth.service.ts b/src/routes/auth/auth.service.ts similarity index 87% rename from src/auth/auth.service.ts rename to src/routes/auth/auth.service.ts index 1716a5a..fbb31b6 100644 --- a/src/auth/auth.service.ts +++ b/src/routes/auth/auth.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import * as bcrypt from 'bcrypt'; -import { AsyncFailable, Fail, HasFailed } from 'src/lib/maybe'; -import { User } from 'src/users/user.dto'; -import { UserEntity } from 'src/users/user.entity'; -import { UsersService } from 'src/users/users.service'; +import { AsyncFailable, Fail, HasFailed } from 'src/types/failable'; +import { User } from 'src/collections/userdb/user.dto'; +import { UserEntity } from 'src/collections/userdb/user.entity'; +import { UsersService } from 'src/collections/userdb/userdb.service'; import { JwtDataDto } from './auth.dto'; @Injectable() diff --git a/src/auth/jwt.guard.ts b/src/routes/auth/jwt.guard.ts similarity index 100% rename from src/auth/jwt.guard.ts rename to src/routes/auth/jwt.guard.ts diff --git a/src/auth/jwt.strategy.ts b/src/routes/auth/jwt.strategy.ts similarity index 94% rename from src/auth/jwt.strategy.ts rename to src/routes/auth/jwt.strategy.ts index 9050881..5c0ae67 100644 --- a/src/auth/jwt.strategy.ts +++ b/src/routes/auth/jwt.strategy.ts @@ -5,7 +5,7 @@ import Config from 'src/env'; import { validate } from 'class-validator'; import { JwtDataDto } from './auth.dto'; import { plainToClass } from 'class-transformer'; -import { User } from 'src/users/user.dto'; +import { User } from 'src/collections/userdb/user.dto'; @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { diff --git a/src/auth/local-auth.guard.ts b/src/routes/auth/local-auth.guard.ts similarity index 100% rename from src/auth/local-auth.guard.ts rename to src/routes/auth/local-auth.guard.ts diff --git a/src/auth/local.strategy.ts b/src/routes/auth/local.strategy.ts similarity index 82% rename from src/auth/local.strategy.ts rename to src/routes/auth/local.strategy.ts index fb247a1..e24b605 100644 --- a/src/auth/local.strategy.ts +++ b/src/routes/auth/local.strategy.ts @@ -2,8 +2,8 @@ import { Strategy } from 'passport-local'; import { PassportStrategy } from '@nestjs/passport'; import { Injectable, UnauthorizedException } from '@nestjs/common'; import { AuthService } from './auth.service'; -import { AsyncFailable, HasFailed } from 'src/lib/maybe'; -import { UserEntity } from 'src/users/user.entity'; +import { AsyncFailable, HasFailed } from 'src/types/failable'; +import { UserEntity } from 'src/collections/userdb/user.entity'; @Injectable() export class LocalStrategy extends PassportStrategy(Strategy) { diff --git a/src/root/root.controller.ts b/src/routes/image/imageroute.controller.ts similarity index 83% rename from src/root/root.controller.ts rename to src/routes/image/imageroute.controller.ts index 3bdb503..4586470 100644 --- a/src/root/root.controller.ts +++ b/src/routes/image/imageroute.controller.ts @@ -1,6 +1,5 @@ import { BadRequestException, - Body, Controller, Get, InternalServerErrorException, @@ -9,17 +8,14 @@ import { Post, Req, Res, - UploadedFile, - UseInterceptors, } from '@nestjs/common'; -import { isArray } from 'class-validator'; import { FastifyReply, FastifyRequest } from 'fastify'; -import { Multipart, MultipartFields, MultipartFile } from 'fastify-multipart'; -import { HasFailed } from 'src/lib/maybe'; -import { SafeImagesService } from 'src/safeimages/safeimages.service'; +import { Multipart } from 'fastify-multipart'; +import { HasFailed } from 'src/types/failable'; +import { SafeImagesService } from 'src/lib/safeimages/safeimages.service'; @Controller() -export class RootController { +export class ImageController { constructor(private readonly imagesService: SafeImagesService) {} @Get('i/:hash') diff --git a/src/routes/image/imageroute.module.ts b/src/routes/image/imageroute.module.ts new file mode 100644 index 0000000..2b501c1 --- /dev/null +++ b/src/routes/image/imageroute.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { SafeImagesModule } from 'src/lib/safeimages/safeimages.module'; +import { ImageController } from './imageroute.controller'; + +@Module({ + imports: [SafeImagesModule], + controllers: [ImageController], +}) +export class ImageModule {} diff --git a/src/lib/maybe.ts b/src/types/failable.ts similarity index 100% rename from src/lib/maybe.ts rename to src/types/failable.ts