Reverted user note querying and removed the user join
ci/woodpecker/tag/ociImageTag Pipeline was successful
Details
ci/woodpecker/tag/ociImageTag Pipeline was successful
Details
This commit is contained in:
parent
d5664860ad
commit
5bed95e357
|
@ -3,11 +3,10 @@ import {Notes} from "@/models/index.js";
|
||||||
import define from "../../define.js";
|
import define from "../../define.js";
|
||||||
import {ApiError} from "../../error.js";
|
import {ApiError} from "../../error.js";
|
||||||
import {getUser} from "../../common/getters.js";
|
import {getUser} from "../../common/getters.js";
|
||||||
|
import {makePaginationQuery} from "../../common/make-pagination-query.js";
|
||||||
import {generateVisibilityQuery} from "../../common/generate-visibility-query.js";
|
import {generateVisibilityQuery} from "../../common/generate-visibility-query.js";
|
||||||
import {generateMutedUserQuery} from "../../common/generate-muted-user-query.js";
|
import {generateMutedUserQuery} from "../../common/generate-muted-user-query.js";
|
||||||
import {generateBlockedUserQuery} from "../../common/generate-block-query.js";
|
import {generateBlockedUserQuery} from "../../common/generate-block-query.js";
|
||||||
import {makePaginationQuery} from "@/server/api/common/make-pagination-query.js";
|
|
||||||
import {Note} from "@/models/entities/note.js";
|
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["users", "notes"],
|
tags: ["users", "notes"],
|
||||||
|
@ -67,31 +66,7 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
throw e;
|
throw e;
|
||||||
});
|
});
|
||||||
|
|
||||||
const cte =
|
//#region Construct query
|
||||||
Notes.createQueryBuilder("n")
|
|
||||||
.select(`"n"."id"`, "id")
|
|
||||||
.andWhere("n.userId = :userId", { userId: user.id });
|
|
||||||
|
|
||||||
if (ps.withFiles || ps.fileType != null) {
|
|
||||||
cte.andWhere("n.fileIds != '{}'");
|
|
||||||
}
|
|
||||||
if (!ps.includeReplies) {
|
|
||||||
cte.andWhere("n.replyId IS NULL");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps.includeMyRenotes === false) {
|
|
||||||
cte.andWhere(
|
|
||||||
new Brackets((qb) => {
|
|
||||||
qb.orWhere("n.renoteId IS NULL");
|
|
||||||
qb.orWhere("n.text IS NOT NULL");
|
|
||||||
qb.orWhere("n.fileIds != '{}'");
|
|
||||||
qb.orWhere(
|
|
||||||
'0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = n.id)',
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const query = makePaginationQuery(
|
const query = makePaginationQuery(
|
||||||
Notes.createQueryBuilder("note"),
|
Notes.createQueryBuilder("note"),
|
||||||
ps.sinceId,
|
ps.sinceId,
|
||||||
|
@ -99,14 +74,20 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
ps.sinceDate,
|
ps.sinceDate,
|
||||||
ps.untilDate,
|
ps.untilDate,
|
||||||
)
|
)
|
||||||
.addCommonTableExpression(cte, "noteCte");
|
.andWhere("note.userId = :userId", { userId: user.id });
|
||||||
|
|
||||||
query.andWhere(`"note"."id" IN` + query.subQuery()
|
generateVisibilityQuery(query, me);
|
||||||
.select(`"noteCte"."id"`)
|
if (me) {
|
||||||
.from("noteCte", "noteCte")
|
generateMutedUserQuery(query, me, user);
|
||||||
.getQuery());
|
generateBlockedUserQuery(query, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.withFiles) {
|
||||||
|
query.andWhere("note.fileIds != '{}'");
|
||||||
|
}
|
||||||
|
|
||||||
if (ps.fileType != null) {
|
if (ps.fileType != null) {
|
||||||
|
query.andWhere("note.fileIds != '{}'");
|
||||||
query.andWhere(
|
query.andWhere(
|
||||||
new Brackets((qb) => {
|
new Brackets((qb) => {
|
||||||
for (const type of ps.fileType!) {
|
for (const type of ps.fileType!) {
|
||||||
|
@ -126,10 +107,22 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
generateVisibilityQuery(query, me);
|
if (!ps.includeReplies) {
|
||||||
if (me) {
|
query.andWhere("note.replyId IS NULL");
|
||||||
generateMutedUserQuery(query, me, user);
|
}
|
||||||
generateBlockedUserQuery(query, me);
|
|
||||||
|
if (ps.includeMyRenotes === false) {
|
||||||
|
query.andWhere(
|
||||||
|
new Brackets((qb) => {
|
||||||
|
qb.orWhere("note.userId != :userId", { userId: user.id });
|
||||||
|
qb.orWhere("note.renoteId IS NULL");
|
||||||
|
qb.orWhere("note.text IS NOT NULL");
|
||||||
|
qb.orWhere("note.fileIds != '{}'");
|
||||||
|
qb.orWhere(
|
||||||
|
'0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)',
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
Loading…
Reference in New Issue