Skip to content

Commit

Permalink
✨ settings
Browse files Browse the repository at this point in the history
  • Loading branch information
kalashshah committed Feb 4, 2023
1 parent a371048 commit cd1d91d
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 4 deletions.
7 changes: 7 additions & 0 deletions graphql/settings.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
input UpdateLanguageInput {
lang: String!
}

type Mutation {
updateLanguage(input: UpdateLanguageInput!): String!
}
2 changes: 2 additions & 0 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { PrismaService } from 'prisma/prisma.service';
import { TranslateModule } from './translate/translate.module';
import { TranslateSocketModule } from './translate-socket/translate.event';
import { RadarModule } from './radar/radar.module';
import { SettingsModule } from './settings/settings.module';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
Expand All @@ -24,6 +25,7 @@ import { RadarModule } from './radar/radar.module';
TranslateModule,
TranslateSocketModule,
RadarModule,
SettingsModule,
],
controllers: [AppController],
providers: [AppService, PrismaService],
Expand Down
14 changes: 10 additions & 4 deletions src/graphql.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
/* tslint:disable */
/* eslint-disable */

export class UpdateLanguageInput {
lang: string;
}

export class TranslateInput {
text: string;
source: string;
Expand Down Expand Up @@ -43,6 +47,12 @@ export abstract class IQuery {
abstract getUser(): User | Promise<User>;
}

export abstract class IMutation {
abstract updateLanguage(input: UpdateLanguageInput): string | Promise<string>;

abstract signup(input: SignupInput): string | Promise<string>;
}

export class User {
id: string;
name: string;
Expand All @@ -53,9 +63,5 @@ export class User {
updatedAt: DateTime;
}

export abstract class IMutation {
abstract signup(input: SignupInput): string | Promise<string>;
}

export type DateTime = any;
type Nullable<T> = T | null;
9 changes: 9 additions & 0 deletions src/settings/settings.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { SettingsService } from './settings.service';
import { SettingsResolver } from './settings.resolver';
import { PrismaService } from 'prisma/prisma.service';

@Module({
providers: [SettingsResolver, SettingsService, PrismaService],
})
export class SettingsModule {}
25 changes: 25 additions & 0 deletions src/settings/settings.resolver.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { BadRequestException } from '@nestjs/common';
import { Args, Context, Mutation, Resolver } from '@nestjs/graphql';
import { PrismaService } from 'prisma/prisma.service';
import { UpdateLanguageInput } from 'src/graphql.types';
import { verifyJWT } from 'src/utils/jwt.utils';
import { SettingsService } from './settings.service';

@Resolver()
export class SettingsResolver {
constructor(
private readonly settingsService: SettingsService,
private readonly prismaService: PrismaService,
) {}
@Mutation('updateLanguage')
async updateLanguage(
@Args('input') input: UpdateLanguageInput,
@Context() ctx,
) {
const { payload, expired } = verifyJWT(
ctx.req.headers.authorization?.split(' ')[1],
);
if (expired) throw new BadRequestException('Token expired');
return await this.settingsService.updateLanguage(payload.id, input.lang);
}
}
15 changes: 15 additions & 0 deletions src/settings/settings.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from 'prisma/prisma.service';

@Injectable()
export class SettingsService {
constructor(private readonly prismaService: PrismaService) {}

async updateLanguage(userId: string, language: string) {
await this.prismaService.user.update({
where: { id: userId },
data: { language },
});
return 'Successfully updated language';
}
}

0 comments on commit cd1d91d

Please sign in to comment.