64 lines
2.3 KiB
TypeScript
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();
|