added profile description editing, fixed light theme and viewer caching
This commit is contained in:
parent
58a211663a
commit
c8f68b7486
10 changed files with 187 additions and 18 deletions
|
|
@ -14,14 +14,15 @@ import { UserOneResolver } from './resolvers/userOneResolver';
|
|||
import { LoginResolver } from './resolvers/auth/login';
|
||||
import { LogoutResolver } from './resolvers/auth/logout';
|
||||
import { SignUpResolver } from './resolvers/auth/signUp';
|
||||
import { BookUpdateResolver } from './resolvers/bookUpdateResolver';
|
||||
import { BookDeleteResolver } from './resolvers/bookDeleteResolver';
|
||||
import { BookChapterCreateResolver } from './resolvers/bookChapterCreateResolver';
|
||||
import { BookChapterDeleteResolver } from './resolvers/bookChapterDelete';
|
||||
import { BookChapterUpdateResolver } from './resolvers/bookChapterUpdateResolver';
|
||||
import { BookCreateResolver } from './resolvers/bookCreateResolver';
|
||||
import { BookDeleteResolver } from './resolvers/bookDeleteResolver';
|
||||
import { BookUpdateResolver } from './resolvers/bookUpdateResolver';
|
||||
import { RatingSetResolver } from './resolvers/ratingSetResolver';
|
||||
import { ReviewCreateResolver } from './resolvers/reviewCreateResolver';
|
||||
import { UserUpdateResolver } from './resolvers/userUpdateResolver';
|
||||
|
||||
export const Query: QueryResolvers = {
|
||||
bookOne: BookOneResolver,
|
||||
|
|
@ -44,7 +45,8 @@ export const Mutation: MutationResolvers = {
|
|||
bookChapterDelete: BookChapterDeleteResolver,
|
||||
bookChapterUpdate: BookChapterUpdateResolver,
|
||||
ratingSet: RatingSetResolver,
|
||||
reviewCreate: ReviewCreateResolver
|
||||
reviewCreate: ReviewCreateResolver,
|
||||
userUpdate: UserUpdateResolver
|
||||
};
|
||||
|
||||
export const Subscription = {};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ export async function toUserSchema(model: User): Promise<UserSchema> {
|
|||
id: model.id,
|
||||
username: model.username,
|
||||
createdAt: model.createdAt.toISOString(),
|
||||
updatedAt: model.updatedAt.toISOString()
|
||||
updatedAt: model.updatedAt.toISOString(),
|
||||
description: model.description
|
||||
};
|
||||
}
|
||||
|
|
|
|||
36
app/server/graphql/resolvers/userUpdateResolver.ts
Normal file
36
app/server/graphql/resolvers/userUpdateResolver.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { ensureIdentity } from '@app/server/helpers';
|
||||
import { IdentityContext } from '@app/server/identity';
|
||||
import { prisma, uuid } from '@app/server/prisma/client';
|
||||
import { MutationUserUpdateArgs, User } from '@generated/types';
|
||||
import { toUserSchema } from './mappers/userMapper';
|
||||
import { call } from '@app/common';
|
||||
|
||||
export async function UserUpdateResolver(
|
||||
_: any,
|
||||
{ input }: MutationUserUpdateArgs,
|
||||
{ identity }: IdentityContext
|
||||
): Promise<User> {
|
||||
ensureIdentity(identity);
|
||||
|
||||
if (input.id != identity.id) throw new Error('Operation is not permitted.'); //todo: add admin access
|
||||
|
||||
if (input.description != null && input.description.length > 700)
|
||||
throw new Error('Description is too long.');
|
||||
|
||||
const description = call((): string | null | undefined => {
|
||||
if (input.description != null && input.description.length !== 0) return input.description;
|
||||
if (input.description != null && input.description.length === 0) return null;
|
||||
return undefined;
|
||||
});
|
||||
|
||||
const updated = await prisma.user.update({
|
||||
where: {
|
||||
id: input.id
|
||||
},
|
||||
data: {
|
||||
description
|
||||
}
|
||||
});
|
||||
|
||||
return toUserSchema(updated);
|
||||
}
|
||||
|
|
@ -25,6 +25,7 @@ type Mutation {
|
|||
reviewUpdate(input: ReviewUpdateInput!): Review!
|
||||
reviewDelete(id: ID!): Void
|
||||
ratingSet(input: RatingSetInput!): Void
|
||||
userUpdate(input: UserUpdateInput!): User!
|
||||
}
|
||||
|
||||
input SignUpInput {
|
||||
|
|
@ -63,6 +64,11 @@ input UserOneInput {
|
|||
username: String
|
||||
}
|
||||
|
||||
input UserUpdateInput {
|
||||
id: ID!
|
||||
description: String
|
||||
}
|
||||
|
||||
input PaginationFilterInput {
|
||||
terms: String
|
||||
offset: Int
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue