add relations
This commit is contained in:
parent
8f87c713dc
commit
fb5b6c646c
@ -1,11 +1,21 @@
|
|||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { CommentEntity } from '@/modules/content/entities/comment.entity';
|
||||||
import { PostEntity } from '@/modules/content/entities/post.entity';
|
import { PostEntity } from '@/modules/content/entities/post.entity';
|
||||||
import { CustomRepository } from '@/modules/database/decorators/repository.decorator';
|
import { CustomRepository } from '@/modules/database/decorators/repository.decorator';
|
||||||
|
|
||||||
@CustomRepository(PostEntity)
|
@CustomRepository(PostEntity)
|
||||||
export class PostRepository extends Repository<PostEntity> {
|
export class PostRepository extends Repository<PostEntity> {
|
||||||
buildBaseQB() {
|
buildBaseQB() {
|
||||||
return this.createQueryBuilder('post');
|
return this.createQueryBuilder('post')
|
||||||
|
.leftJoinAndSelect('post.category', 'category')
|
||||||
|
.leftJoinAndSelect('post.tags', 'tags')
|
||||||
|
.addSelect((query) => {
|
||||||
|
return query
|
||||||
|
.select('COUNT(c.id)', 'count')
|
||||||
|
.from(CommentEntity, 'c')
|
||||||
|
.where('c.post.id = post.id');
|
||||||
|
}, 'commentCount')
|
||||||
|
.loadRelationCountAndMap('post.commentCOunt', 'post.comments');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
19
src/modules/content/repositories/tag.repository.ts
Normal file
19
src/modules/content/repositories/tag.repository.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { PostEntity } from '@/modules/content/entities/post.entity';
|
||||||
|
import { TagEntity } from '@/modules/content/entities/tag.entity';
|
||||||
|
import { CustomRepository } from '@/modules/database/decorators/repository.decorator';
|
||||||
|
|
||||||
|
@CustomRepository(TagEntity)
|
||||||
|
export class TagRepository extends Repository<TagEntity> {
|
||||||
|
buildBaseQB() {
|
||||||
|
return this.createQueryBuilder('tag')
|
||||||
|
.leftJoinAndSelect('tag.posts', 'posts')
|
||||||
|
.addSelect(
|
||||||
|
(query) => query.select('COUNT(p.id)', 'count').from(PostEntity, 'p'),
|
||||||
|
'postCount',
|
||||||
|
)
|
||||||
|
.orderBy('postCount', 'DESC')
|
||||||
|
.loadRelationCountAndMap('tag.postCount', 'tag.posts');
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user