chore: refacto NestJS in modules (#308)

* chore: wip refacto in modules

* fix: rollback port

* fix: jwt guard in wrong folder

* chore: rename folder exception-filter in filters

* fix: tests are running

* fix: excessive stack depth comparing types

* fix: auth issue

* chore: move createUser in UserService

* fix: test

* fix: guards

* fix: jwt guard don't handle falsy user
This commit is contained in:
Jérémy M
2023-06-16 10:38:11 +02:00
committed by GitHub
parent 5921c7f11d
commit 2cd081234f
1084 changed files with 2251 additions and 758 deletions

View File

@ -0,0 +1,28 @@
import { HttpException } from '@nestjs/common';
type Assert = (
condition: unknown,
message?: string,
ErrorType?: new (message?: string) => HttpException,
) => asserts condition;
/**
* assert condition and throws a HttpException
*/
export const assert: Assert = (condition, message, ErrorType) => {
if (!condition) {
if (ErrorType) {
if (message) {
throw new ErrorType(message);
}
throw new ErrorType();
}
throw new Error(message);
}
};
export function assertNotNull<T>(item: T): item is NonNullable<T> {
return item !== null && item !== undefined;
}

View File

@ -0,0 +1,27 @@
import { ExecutionContext } from '@nestjs/common';
import { GqlContextType, GqlExecutionContext } from '@nestjs/graphql';
// extract request from the execution context
export const getRequest = (context: ExecutionContext) => {
let request;
// if context is an http request
if (context.getType() === 'http') {
request = context.switchToHttp().getRequest();
} else if (context.getType<GqlContextType>() === 'graphql') {
// if context is a graphql request
const graphQLContext = GqlExecutionContext.create(context);
const { req, connection } = graphQLContext.getContext();
request =
connection && connection.context && connection.context.headers
? connection.context
: req;
} else if (context.getType() === 'rpc') {
// if context is a rpc request
throw new Error('Not implemented');
}
return request;
};

View File

@ -0,0 +1,15 @@
import { Workspace } from '@prisma/client';
type FindManyArgsType = { where?: object; orderBy?: object };
export const prepareFindManyArgs = <T extends FindManyArgsType>(
args: T,
workspace: Workspace,
): T => {
args.where = {
...args.where,
...{ workspace: { is: { id: { equals: workspace.id } } } },
};
return args;
};