const query = {
offset: start,
limit: count,
- order: [ getSort(sort) ],
+ order: getSort(sort),
where: {
videoId,
inReplyToCommentId: null
const query = {
order: [ [ 'createdAt', order ] ],
where: {
- [ Sequelize.Op.or ]: [
- { id: comment.getThreadId() },
- { originCommentId: comment.getThreadId() }
- ],
id: {
+ [ Sequelize.Op.in ]: Sequelize.literal('(' +
+ 'WITH RECURSIVE children (id, "inReplyToCommentId") AS ( ' +
+ 'SELECT id, "inReplyToCommentId" FROM "videoComment" WHERE id = ' + comment.id + ' UNION ' +
+ 'SELECT p.id, p."inReplyToCommentId" from "videoComment" p ' +
+ 'INNER JOIN children c ON c."inReplyToCommentId" = p.id) ' +
+ 'SELECT id FROM children' +
+ ')'),
[ Sequelize.Op.ne ]: comment.id
- },
- createdAt: {
- [ Sequelize.Op.lt ]: comment.createdAt
}
},
transaction: t
.findAll(query)
}
+ static async getStats () {
+ const totalLocalVideoComments = await VideoCommentModel.count({
+ include: [
+ {
+ model: AccountModel,
+ required: true,
+ include: [
+ {
+ model: ActorModel,
+ required: true,
+ where: {
+ serverId: null
+ }
+ }
+ ]
+ }
+ ]
+ })
+ const totalVideoComments = await VideoCommentModel.count()
+
+ return {
+ totalLocalVideoComments,
+ totalVideoComments
+ }
+ }
+
getThreadId (): number {
return this.originCommentId || this.id
}