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,27 @@
import { Test, TestingModule } from '@nestjs/testing';
import { WorkspaceMemberRelationsResolver } from './workspace-member-relations.resolver';
import { WorkspaceMemberService } from '../services/workspace-member.service';
describe('WorkspaceMemberRelationsResolver', () => {
let resolver: WorkspaceMemberRelationsResolver;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
WorkspaceMemberRelationsResolver,
{
provide: WorkspaceMemberService,
useValue: {},
},
],
}).compile();
resolver = module.get<WorkspaceMemberRelationsResolver>(
WorkspaceMemberRelationsResolver,
);
});
it('should be defined', () => {
expect(resolver).toBeDefined();
});
});

View File

@ -0,0 +1,42 @@
import * as TypeGraphQL from '@nestjs/graphql';
import { User } from 'src/core/@generated/user/user.model';
import { WorkspaceMember } from 'src/core/@generated/workspace-member/workspace-member.model';
import { Workspace } from 'src/core/@generated/workspace/workspace.model';
import { WorkspaceMemberService } from '../services/workspace-member.service';
@TypeGraphQL.Resolver(() => WorkspaceMember)
export class WorkspaceMemberRelationsResolver {
constructor(
private readonly workspaceMemberSercice: WorkspaceMemberService,
) {}
@TypeGraphQL.ResolveField(() => User, {
nullable: false,
})
async user(
@TypeGraphQL.Parent() workspaceMember: WorkspaceMember,
): Promise<User> {
return await this.workspaceMemberSercice
.findUniqueOrThrow({
where: {
id: workspaceMember.id,
},
})
.user({});
}
@TypeGraphQL.ResolveField(() => Workspace, {
nullable: false,
})
async workspace(
@TypeGraphQL.Parent() workspaceMember: WorkspaceMember,
): Promise<Workspace> {
return this.workspaceMemberSercice
.findUniqueOrThrow({
where: {
id: workspaceMember.id,
},
})
.workspace({});
}
}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { WorkspaceMemberResolver } from './workspace-member.resolver';
describe('WorkspaceMemberResolver', () => {
let resolver: WorkspaceMemberResolver;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [WorkspaceMemberResolver],
}).compile();
resolver = module.get<WorkspaceMemberResolver>(WorkspaceMemberResolver);
});
it('should be defined', () => {
expect(resolver).toBeDefined();
});
});

View File

@ -0,0 +1,5 @@
import * as TypeGraphQL from '@nestjs/graphql';
import { WorkspaceMember } from '../../@generated/workspace-member/workspace-member.model';
@TypeGraphQL.Resolver(() => WorkspaceMember)
export class WorkspaceMemberResolver {}

View File

@ -0,0 +1,26 @@
import { Test, TestingModule } from '@nestjs/testing';
import { WorkspaceMemberService } from './workspace-member.service';
import { PrismaService } from 'src/database/prisma.service';
import { prismaMock } from 'src/prisma-mock/jest-prisma-singleton';
describe('WorkspaceMemberService', () => {
let service: WorkspaceMemberService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
WorkspaceMemberService,
{
provide: PrismaService,
useValue: prismaMock,
},
],
}).compile();
service = module.get<WorkspaceMemberService>(WorkspaceMemberService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View File

@ -0,0 +1,38 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from 'src/database/prisma.service';
@Injectable()
export class WorkspaceMemberService {
constructor(private readonly prismaService: PrismaService) {}
// Find
findFirst = this.prismaService.workspaceMember.findFirst;
findFirstOrThrow = this.prismaService.workspaceMember.findFirstOrThrow;
findUnique = this.prismaService.workspaceMember.findUnique;
findUniqueOrThrow = this.prismaService.workspaceMember.findUniqueOrThrow;
findMany = this.prismaService.workspaceMember.findMany;
// Create
create = this.prismaService.workspaceMember.create;
createMany = this.prismaService.workspaceMember.createMany;
// Update
update = this.prismaService.workspaceMember.update;
upsert = this.prismaService.workspaceMember.upsert;
updateMany = this.prismaService.workspaceMember.updateMany;
// Delete
delete = this.prismaService.workspaceMember.delete;
deleteMany = this.prismaService.workspaceMember.deleteMany;
// Aggregate
aggregate = this.prismaService.workspaceMember.aggregate;
// Count
count = this.prismaService.workspaceMember.count;
// GroupBy
groupBy = this.prismaService.workspaceMember.groupBy;
}

View File

@ -0,0 +1,26 @@
import { Test, TestingModule } from '@nestjs/testing';
import { WorkspaceService } from './workspace.service';
import { PrismaService } from 'src/database/prisma.service';
import { prismaMock } from 'src/prisma-mock/jest-prisma-singleton';
describe('WorkspaceService', () => {
let service: WorkspaceService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
WorkspaceService,
{
provide: PrismaService,
useValue: prismaMock,
},
],
}).compile();
service = module.get<WorkspaceService>(WorkspaceService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View File

@ -0,0 +1,38 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from 'src/database/prisma.service';
@Injectable()
export class WorkspaceService {
constructor(private readonly prismaService: PrismaService) {}
// Find
findFirst = this.prismaService.workspace.findFirst;
findFirstOrThrow = this.prismaService.workspace.findFirstOrThrow;
findUnique = this.prismaService.workspace.findUnique;
findUniqueOrThrow = this.prismaService.workspace.findUniqueOrThrow;
findMany = this.prismaService.workspace.findMany;
// Create
create = this.prismaService.workspace.create;
createMany = this.prismaService.workspace.createMany;
// Update
update = this.prismaService.workspace.update;
upsert = this.prismaService.workspace.upsert;
updateMany = this.prismaService.workspace.updateMany;
// Delete
delete = this.prismaService.workspace.delete;
deleteMany = this.prismaService.workspace.deleteMany;
// Aggregate
aggregate = this.prismaService.workspace.aggregate;
// Count
count = this.prismaService.workspace.count;
// GroupBy
groupBy = this.prismaService.workspace.groupBy;
}

View File

@ -0,0 +1,16 @@
import { Module } from '@nestjs/common';
import { WorkspaceService } from './services/workspace.service';
import { WorkspaceMemberService } from './services/workspace-member.service';
import { WorkspaceMemberResolver } from './resolvers/workspace-member.resolver';
import { WorkspaceMemberRelationsResolver } from './resolvers/workspace-member-relations.resolver';
@Module({
providers: [
WorkspaceService,
WorkspaceMemberService,
WorkspaceMemberResolver,
WorkspaceMemberRelationsResolver,
],
exports: [WorkspaceService, WorkspaceMemberService],
})
export class WorkspaceModule {}