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();