GraphQL Server.

This commit is contained in:
2022-09-08 01:24:55 +02:00
parent 48545030fd
commit e06850eec4
12 changed files with 806 additions and 17 deletions

View File

@@ -2,6 +2,10 @@ import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AuthModule } from './auth/auth.module';
import { ConfigModule } from '@nestjs/config';
import { GraphQLISODateTime, GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { ApolloServerPluginLandingPageLocalDefault } from 'apollo-server-core';
import { UsersModule } from './users/users.module';
@Module({
imports: [
@@ -17,6 +21,15 @@ import { ConfigModule } from '@nestjs/config';
websiteBasePath: '/auth',
},
}),
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
typePaths: ['./**/*.graphql'],
debug: true,
playground: true,
resolvers: {DateTime: GraphQLISODateTime}
// plugins: [ApolloServerPluginLandingPageLocalDefault()],
}),
UsersModule,
],
controllers: [AppController],
providers: [],

View File

@@ -0,0 +1,11 @@
import { GraphQLDefinitionsFactory } from '@nestjs/graphql';
import { join } from 'path';
const definitionFactory = new GraphQLDefinitionsFactory();
definitionFactory.generate({
typePaths: ['./**/*.graphql'],
path: join(process.cwd(), 'src/graphql/graphql.typings.ts'),
outputAs: 'class',
watch: true,
});

View File

@@ -0,0 +1,35 @@
/*
* -------------------------------------------------------
* THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
* -------------------------------------------------------
*/
/* tslint:disable */
/* eslint-disable */
export class CreateUserInput {
email: string;
password: string;
}
export class User {
id: string;
email: string;
time_joined: number;
}
export abstract class IQuery {
abstract users(): Nullable<User>[] | Promise<Nullable<User>[]>;
abstract user(id: number): Nullable<User> | Promise<Nullable<User>>;
}
export abstract class IMutation {
abstract createUser(createUserInput: CreateUserInput): User | Promise<User>;
abstract removeUser(id: number): Nullable<User> | Promise<Nullable<User>>;
}
export type DateTime = any;
type Nullable<T> = T | null;

View File

@@ -0,0 +1 @@
export class CreateUserInput {}

View File

@@ -0,0 +1,6 @@
import { CreateUserInput } from './create-user.input';
import { PartialType } from '@nestjs/mapped-types';
export class UpdateUserInput extends PartialType(CreateUserInput) {
id: number;
}

View File

@@ -0,0 +1 @@
export class User {}

View File

@@ -0,0 +1,27 @@
scalar DateTime
type User {
id: String!
email: String!
time_joined: Int!
}
input CreateUserInput {
email: String!
password: String!
}
# input UpdateUserInput {
# id: Int!
# }
type Query {
users: [User]!
user(id: Int!): User
}
type Mutation {
createUser(createUserInput: CreateUserInput!): User!
# updateUser(updateUserInput: UpdateUserInput!): User!
removeUser(id: Int!): User
}

View File

@@ -0,0 +1,8 @@
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersResolver } from './users.resolver';
@Module({
providers: [UsersResolver, UsersService]
})
export class UsersModule {}

View File

@@ -0,0 +1,34 @@
import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';
import { UsersService } from './users.service';
import { CreateUserInput } from './dto/create-user.input';
import { UpdateUserInput } from './dto/update-user.input';
@Resolver('User')
export class UsersResolver {
constructor(private readonly usersService: UsersService) {}
@Mutation('createUser')
create(@Args('createUserInput') createUserInput: CreateUserInput) {
return this.usersService.create(createUserInput);
}
@Query('users')
findAll() {
return this.usersService.findAll();
}
@Query('user')
findOne(@Args('id') id: number) {
return this.usersService.findOne(id);
}
// @Mutation('updateUser')
// update(@Args('updateUserInput') updateUserInput: UpdateUserInput) {
// return this.usersService.update(updateUserInput.id, updateUserInput);
// }
@Mutation('removeUser')
remove(@Args('id') id: number) {
return this.usersService.remove(id);
}
}

View File

@@ -0,0 +1,26 @@
import { Injectable } from '@nestjs/common';
import { CreateUserInput } from './dto/create-user.input';
import { UpdateUserInput } from './dto/update-user.input';
@Injectable()
export class UsersService {
create(createUserInput: CreateUserInput) {
return 'This action adds a new user';
}
findAll() {
return `This action returns all users`;
}
findOne(id: number) {
return `This action returns a #${id} user`;
}
// update(id: number, updateUserInput: UpdateUserInput) {
// return `This action updates a #${id} user`;
// }
remove(id: number) {
return `This action removes a #${id} user`;
}
}