Initial commit: AMS Backend - Deno + Oak + MongoDB
This commit is contained in:
100
src/main.ts
Normal file
100
src/main.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import { Application } from "@oak/oak";
|
||||
import "@std/dotenv/load";
|
||||
import { getMongoClient } from "./db/mongo.ts";
|
||||
import { corsMiddleware } from "./middleware/cors.ts";
|
||||
import { authRouter } from "./routes/auth.ts";
|
||||
import { tasksRouter } from "./routes/tasks.ts";
|
||||
import { agentTasksRouter } from "./routes/agenttasks.ts";
|
||||
import { secretsRouter, secretFoldersRouter } from "./routes/secrets.ts";
|
||||
import { secretAuditLogsRouter } from "./routes/secretAuditLogs.ts";
|
||||
import { workspaceRouter } from "./routes/workspace.ts";
|
||||
import { labelsRouter } from "./routes/labels.ts";
|
||||
import { cronJobsRouter } from "./routes/cronjobs.ts";
|
||||
import { quickTextsRouter } from "./routes/quicktexts.ts";
|
||||
import { transcribeRouter } from "./routes/transcribe.ts";
|
||||
import { messagingRouter } from "./routes/messaging.ts";
|
||||
import { tokensRouter } from "./routes/tokens.ts";
|
||||
import { settingsRouter } from "./routes/settings.ts";
|
||||
import { commentsRouter } from "./routes/comments.ts";
|
||||
import { attachmentsRouter } from "./routes/attachments.ts";
|
||||
import { agentsRouter } from "./routes/agents.ts";
|
||||
import { logsRouter } from "./routes/logs.ts";
|
||||
import { userSettingsRouter } from "./routes/usersettings.ts";
|
||||
import gitlabRouter from "./routes/gitlab.ts";
|
||||
import { dockerRouter } from "./routes/docker.ts";
|
||||
import { exportRouter } from "./routes/export.ts";
|
||||
import { appUpdateRouter } from "./routes/appUpdate.ts";
|
||||
import { handleWebSocket } from "./ws/handler.ts";
|
||||
|
||||
const app = new Application();
|
||||
const PORT = parseInt(Deno.env.get("PORT") || "8000");
|
||||
|
||||
// Connect to MongoDB
|
||||
await getMongoClient();
|
||||
|
||||
// Middleware
|
||||
app.use(corsMiddleware);
|
||||
|
||||
// Routes
|
||||
app.use(authRouter.routes());
|
||||
app.use(authRouter.allowedMethods());
|
||||
app.use(tasksRouter.routes());
|
||||
app.use(tasksRouter.allowedMethods());
|
||||
app.use(agentTasksRouter.routes());
|
||||
app.use(agentTasksRouter.allowedMethods());
|
||||
app.use(secretsRouter.routes());
|
||||
app.use(secretsRouter.allowedMethods());
|
||||
app.use(secretFoldersRouter.routes());
|
||||
app.use(secretFoldersRouter.allowedMethods());
|
||||
app.use(secretAuditLogsRouter.routes());
|
||||
app.use(secretAuditLogsRouter.allowedMethods());
|
||||
app.use(workspaceRouter.routes());
|
||||
app.use(workspaceRouter.allowedMethods());
|
||||
app.use(labelsRouter.routes());
|
||||
app.use(labelsRouter.allowedMethods());
|
||||
app.use(cronJobsRouter.routes());
|
||||
app.use(cronJobsRouter.allowedMethods());
|
||||
app.use(quickTextsRouter.routes());
|
||||
app.use(quickTextsRouter.allowedMethods());
|
||||
app.use(transcribeRouter.routes());
|
||||
app.use(transcribeRouter.allowedMethods());
|
||||
app.use(messagingRouter.routes());
|
||||
app.use(messagingRouter.allowedMethods());
|
||||
app.use(tokensRouter.routes());
|
||||
app.use(tokensRouter.allowedMethods());
|
||||
app.use(settingsRouter.routes());
|
||||
app.use(settingsRouter.allowedMethods());
|
||||
app.use(commentsRouter.routes());
|
||||
app.use(commentsRouter.allowedMethods());
|
||||
app.use(attachmentsRouter.routes());
|
||||
app.use(attachmentsRouter.allowedMethods());
|
||||
app.use(agentsRouter.routes());
|
||||
app.use(agentsRouter.allowedMethods());
|
||||
app.use(logsRouter.routes());
|
||||
app.use(logsRouter.allowedMethods());
|
||||
app.use(userSettingsRouter.routes());
|
||||
app.use(userSettingsRouter.allowedMethods());
|
||||
app.use(gitlabRouter.routes());
|
||||
app.use(gitlabRouter.allowedMethods());
|
||||
app.use(dockerRouter.routes());
|
||||
app.use(dockerRouter.allowedMethods());
|
||||
app.use(exportRouter.routes());
|
||||
app.use(exportRouter.allowedMethods());
|
||||
app.use(appUpdateRouter.routes());
|
||||
app.use(appUpdateRouter.allowedMethods());
|
||||
|
||||
console.log(`AMS Backend running on port ${PORT}`);
|
||||
|
||||
// Use Deno.serve for WebSocket support
|
||||
Deno.serve({ port: PORT }, async (req: Request): Promise<Response> => {
|
||||
const url = new URL(req.url);
|
||||
|
||||
// Handle WebSocket upgrades
|
||||
if (url.pathname === "/ws" && req.headers.get("upgrade")?.toLowerCase() === "websocket") {
|
||||
return handleWebSocket(req);
|
||||
}
|
||||
|
||||
// Forward to Oak for regular HTTP
|
||||
const oakResponse = await app.handle(req);
|
||||
return oakResponse || new Response("Not Found", { status: 404 });
|
||||
});
|
||||
Reference in New Issue
Block a user