59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
import define from "../../../define.js";
|
|
import { ApiError } from "../../../error.js";
|
|
import { DriveFiles, Notes } from "../../../../../models/index.js";
|
|
export const meta = {
|
|
tags: [
|
|
"drive",
|
|
"notes"
|
|
],
|
|
requireCredential: true,
|
|
kind: "read:drive",
|
|
description: "Find the notes to which the given file is attached.",
|
|
res: {
|
|
type: "array",
|
|
optional: false,
|
|
nullable: false,
|
|
items: {
|
|
type: "object",
|
|
optional: false,
|
|
nullable: false,
|
|
ref: "Note"
|
|
}
|
|
},
|
|
errors: {
|
|
noSuchFile: {
|
|
message: "No such file.",
|
|
code: "NO_SUCH_FILE",
|
|
id: "c118ece3-2e4b-4296-99d1-51756e32d232"
|
|
}
|
|
}
|
|
};
|
|
export const paramDef = {
|
|
type: "object",
|
|
properties: {
|
|
fileId: {
|
|
type: "string",
|
|
format: "misskey:id"
|
|
}
|
|
},
|
|
required: [
|
|
"fileId"
|
|
]
|
|
};
|
|
export default define(meta, paramDef, async (ps, user)=>{
|
|
// Fetch file
|
|
const file = await DriveFiles.findOneBy({
|
|
id: ps.fileId,
|
|
userId: user.id
|
|
});
|
|
if (file == null) {
|
|
throw new ApiError(meta.errors.noSuchFile);
|
|
}
|
|
const notes = await Notes.createQueryBuilder("note").where(":file = ANY(note.fileIds)", {
|
|
file: file.id
|
|
}).getMany();
|
|
return await Notes.packMany(notes, user, {
|
|
detail: true
|
|
});
|
|
});
|