* Begin adding show view and refactoring threads to become notes * Progress on design * Progress redesign timeline * Dropdown button, design improvement * Open comment thread edit mode in drawer * Autosave local storage and commentThreadcount * Improve display and fix missing key issue * Remove some hardcoded CSS properties * Create button * Split company show into ui/business + fix eslint * Fix font weight * Begin auto-save on edit mode * Save server-side query result to Apollo cache * Fix save behavior * Refetch timeline after creating note * Rename createCommentThreadWithComment * Improve styling * Revert "Improve styling" This reverts commit 9fbbf2db006e529330edc64f3eb8ff9ecdde6bb0. * Improve CSS styling * Bring back border radius inadvertently removed * padding adjustment * Improve blocknote design * Improve edit mode display * Remove Comments.tsx * Remove irrelevant comment stories * Removed un-necessary panel component * stop using fragment, move trash icon * Add a basic story for CompanyShow * Add a basic People show view * Fix storybook tests * Add very basic Person story * Refactor PR1 * Refactor part 2 * Refactor part 3 * Refactor part 4 * Fix tests --------- Co-authored-by: Charles Bochet <charles@twenty.com>
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { Resolver, ResolveField, Root, Int } from '@nestjs/graphql';
|
|
import { CommentThread } from 'src/core/@generated/comment-thread/comment-thread.model';
|
|
import { Comment } from 'src/core/@generated/comment/comment.model';
|
|
import { Company } from 'src/core/@generated/company/company.model';
|
|
import { CommentThreadService } from '../comment/services/comment-thread.service';
|
|
import { CommentService } from '../comment/services/comment.service';
|
|
import {
|
|
PrismaSelect,
|
|
PrismaSelector,
|
|
} from 'src/decorators/prisma-select.decorator';
|
|
|
|
@Resolver(() => Company)
|
|
export class CompanyRelationsResolver {
|
|
constructor(
|
|
private readonly commentThreadService: CommentThreadService,
|
|
private readonly commentService: CommentService,
|
|
) {}
|
|
|
|
@ResolveField(() => [CommentThread], {
|
|
nullable: false,
|
|
})
|
|
async commentThreads(
|
|
@Root() company: Company,
|
|
@PrismaSelector({ modelName: 'CommentThread' })
|
|
prismaSelect: PrismaSelect<'CommentThread'>,
|
|
): Promise<Partial<CommentThread>[]> {
|
|
return this.commentThreadService.findMany({
|
|
where: {
|
|
commentThreadTargets: {
|
|
some: {
|
|
commentableId: company.id,
|
|
commentableType: 'Company',
|
|
},
|
|
},
|
|
},
|
|
select: prismaSelect.value,
|
|
});
|
|
}
|
|
|
|
@ResolveField(() => [Comment], {
|
|
nullable: false,
|
|
})
|
|
async comments(
|
|
@Root() company: Company,
|
|
@PrismaSelector({ modelName: 'Comment' })
|
|
prismaSelect: PrismaSelect<'Comment'>,
|
|
): Promise<Partial<Comment>[]> {
|
|
return this.commentService.findMany({
|
|
where: {
|
|
commentThread: {
|
|
commentThreadTargets: {
|
|
some: {
|
|
commentableId: company.id,
|
|
commentableType: 'Company',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
select: prismaSelect.value,
|
|
});
|
|
}
|
|
|
|
@ResolveField(() => Int, {
|
|
nullable: false,
|
|
})
|
|
async _commentThreadCount(@Root() company: Company): Promise<number> {
|
|
return this.commentThreadService.count({
|
|
where: {
|
|
commentThreadTargets: {
|
|
some: {
|
|
commentableId: company.id,
|
|
commentableType: 'Company',
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}
|
|
}
|