tether/src/index.ts

64 lines
2.3 KiB
TypeScript

import Fastify from "fastify";
import cors from "@fastify/cors";
import cookie from "@fastify/cookie";
import websocket from "@fastify/websocket";
import multipart from "@fastify/multipart";
import { config } from "./config.js";
import { getCookieSecret } from "./services/auth/helpers.js";
import { testRoutes } from "./controllers/test/routes.js";
import { authRoutes } from "./controllers/auth/routes.js";
import { userRoutes } from "./controllers/user/routes.js";
import { sessionRoutes } from "./controllers/session/routes.js";
import { communityRoutes } from "./controllers/community/routes.js";
import { channelRoutes } from "./controllers/channel/routes.js";
import { roleRoutes } from "./controllers/role/routes.js";
import { inviteRoutes } from "./controllers/invite/routes.js";
import { messageRoutes } from "./controllers/message/routes.js";
import { fileRoutes } from "./controllers/file/routes.js";
import { websocketRoutes } from "./controllers/websocket/routes.js";
import { initializeCommunitiesWithReadableUsersCache } from "./services/user/user.js";
const app = Fastify({
logger: true,
});
app.register(cors, {
origin: "http://localhost:3000",
credentials: true,
methods: ["GET", "POST", "PATCH", "DELETE", "OPTIONS"],
});
app.register(cookie, { secret: getCookieSecret() });
app.register(websocket);
app.register(multipart, {
attachFieldsToBody: true,
sharedSchemaId: "MultipartFileType",
limits: {
fileSize: 10 * 1024 * 1024,
files: 1,
fields: 10,
fieldSize: 1024 * 1024,
},
});
app.register(testRoutes);
app.register(authRoutes, { prefix: "/api/v1/auth" });
app.register(userRoutes, { prefix: "/api/v1/user" });
app.register(sessionRoutes, { prefix: "/api/v1/session" });
app.register(communityRoutes, { prefix: "/api/v1/community" });
app.register(channelRoutes, { prefix: "/api/v1/channel" });
app.register(roleRoutes, { prefix: "/api/v1/role" });
app.register(inviteRoutes, { prefix: "/api/v1/invite" });
app.register(messageRoutes, { prefix: "/api/v1/message" });
app.register(fileRoutes, { prefix: "/api/v1/file" });
app.register(websocketRoutes, { prefix: "/ws" });
app.listen({ port: config.port }, (err, address) => {
if (err) throw err;
console.log(`Server is now listening on ${address}`);
});
initializeCommunitiesWithReadableUsersCache();