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:
28
server/src/utils/assert.ts
Normal file
28
server/src/utils/assert.ts
Normal 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;
|
||||
}
|
||||
27
server/src/utils/extract-request.ts
Normal file
27
server/src/utils/extract-request.ts
Normal 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;
|
||||
};
|
||||
15
server/src/utils/prepare-find-many.ts
Normal file
15
server/src/utils/prepare-find-many.ts
Normal 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;
|
||||
};
|
||||
Reference in New Issue
Block a user