mercury/src/routes/nodeinfo/nodeinfo_2.0.ts

36 lines
921 B
TypeScript
Raw Normal View History

2023-07-21 03:12:00 +02:00
import { RouteOptions } from "fastify";
import { IsNull } from "typeorm";
import MercuryDataSource from "~/db/index.js";
import { Blog } from "~/db/entities/blog.js";
import { Post } from "~/db/entities/post.js";
const route: RouteOptions = {
method: "GET",
url: "/nodeinfo/2.0",
handler: async (_, res) => {
const userCount = await MercuryDataSource.getRepository(Blog).countBy({
host: IsNull(),
});
const postCount = await MercuryDataSource.getRepository(Post).count({
relations: { blog: true },
where: { blog: { host: IsNull() } },
});
res.send({
version: "2.0",
software: { name: "mercury", version: "0.1.0-dev" },
protocols: ["activitypub"],
openRegistrations: false, // TODO: get from database
usage: {
users: {
total: userCount,
},
localPosts: postCount,
},
});
},
};
export default route;