46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
import { IdentifiableError } from "../../../misc/identifiable-error.js";
|
|
import { Notes, Users } from "../../../models/index.js";
|
|
import { generateVisibilityQuery } from "./generate-visibility-query.js";
|
|
/**
|
|
* Get note for API processing, taking into account visibility.
|
|
*/ export async function getNote(noteId, me, options) {
|
|
const query = Notes.createQueryBuilder("note").where("note.id = :id", {
|
|
id: noteId
|
|
});
|
|
generateVisibilityQuery(query, me, options);
|
|
const note = await query.getOne();
|
|
if (note == null || me == null && note.localOnly) {
|
|
throw new IdentifiableError("9725d0ce-ba28-4dde-95a7-2cbb2c15de24", "No such note.");
|
|
}
|
|
return note;
|
|
}
|
|
/**
|
|
* Get user for API processing
|
|
*/ export async function getUser(userId) {
|
|
const user = await Users.findOneBy({
|
|
id: userId
|
|
});
|
|
if (user == null) {
|
|
throw new IdentifiableError("15348ddd-432d-49c2-8a5a-8069753becff", "No such user.");
|
|
}
|
|
return user;
|
|
}
|
|
/**
|
|
* Get remote user for API processing
|
|
*/ export async function getRemoteUser(userId) {
|
|
const user = await getUser(userId);
|
|
if (!Users.isRemoteUser(user)) {
|
|
throw new Error("user is not a remote user");
|
|
}
|
|
return user;
|
|
}
|
|
/**
|
|
* Get local user for API processing
|
|
*/ export async function getLocalUser(userId) {
|
|
const user = await getUser(userId);
|
|
if (!Users.isLocalUser(user)) {
|
|
throw new Error("user is not a local user");
|
|
}
|
|
return user;
|
|
}
|