hippofish/packages/backend/src/server/api/endpoints/pinned-users.ts
ThatOneCalculator abf47e54f3
clean up w/ rome
2023-01-16 11:19:20 -08:00

52 lines
1 KiB
TypeScript

import { IsNull } from "typeorm";
import { Users } from "@/models/index.js";
import { fetchMeta } from "@/misc/fetch-meta.js";
import * as Acct from "@/misc/acct.js";
import type { User } from "@/models/entities/user.js";
import define from "../define.js";
export const meta = {
tags: ["users"],
requireCredential: false,
requireCredentialPrivateMode: false,
res: {
type: "array",
optional: false,
nullable: false,
items: {
type: "object",
optional: false,
nullable: false,
ref: "UserDetailed",
},
},
} as const;
export const paramDef = {
type: "object",
properties: {},
required: [],
} as const;
export default define(meta, paramDef, async (ps, me) => {
const meta = await fetchMeta();
const users = await Promise.all(
meta.pinnedUsers
.map((acct) => Acct.parse(acct))
.map((acct) =>
Users.findOneBy({
usernameLower: acct.username.toLowerCase(),
host: acct.host ?? IsNull(),
}),
),
);
return await Users.packMany(
users.filter((x) => x !== undefined) as User[],
me,
{ detail: true },
);
});