reorganize

This commit is contained in:
rubikscraft 2022-02-21 22:36:47 +01:00
parent 754debbcf8
commit 34d805969f
No known key found for this signature in database
GPG key ID: 1463EBE9200A5CD4
24 changed files with 53 additions and 62 deletions

View file

@ -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,
],
})

View file

@ -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()

View file

@ -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 {}

View file

@ -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<ImageEntity>,

View file

@ -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 = <T extends string[]>(...args: T): T => args;

View file

@ -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])],

View file

@ -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';

View file

@ -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],
})

View file

@ -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<string> {
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);

View file

@ -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 {}

View file

@ -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 {

View file

@ -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 {

View file

@ -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()

View file

@ -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';

View file

@ -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()

View file

@ -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) {

View file

@ -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) {

View file

@ -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')

View file

@ -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 {}