WIP s3 sync and directory stats.
This commit is contained in:
43
server.ts
43
server.ts
@@ -21,6 +21,8 @@ import { JobsMoveMedia } from "./jobs/jobsMoveMedia.js";
|
||||
import { JobMediaUploadMulter, jobsUploadMedia } from "./jobs/jobsUploadMedia.js";
|
||||
import InitServer, { FolderPaths } from "./util/serverInit.js";
|
||||
import ValidateImsToken from "./util/validateToken.js";
|
||||
import { dailyS3Scheduler } from "./util/dailyS3Scheduler.js";
|
||||
import { analyzeJobsDirectory } from "./util/s3Sync.js";
|
||||
|
||||
dotenv.config({
|
||||
path: resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
@@ -132,11 +134,52 @@ app.get("/health", (req, res) => {
|
||||
res.status(200).send("OK");
|
||||
});
|
||||
|
||||
// S3 sync status endpoint
|
||||
app.get("/sync/status", ValidateImsToken, async (req, res) => {
|
||||
try {
|
||||
const status = await dailyS3Scheduler.getStatus();
|
||||
res.json(status);
|
||||
} catch (error) {
|
||||
logger.error("Failed to get sync status:", error);
|
||||
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
||||
res.status(500).json({ error: errorMessage });
|
||||
}
|
||||
});
|
||||
|
||||
// Manual S3 sync trigger endpoint (for testing)
|
||||
app.post("/sync/trigger", ValidateImsToken, async (req, res) => {
|
||||
try {
|
||||
await dailyS3Scheduler.triggerManualSync();
|
||||
res.json({ success: true, message: "Manual sync triggered successfully" });
|
||||
} catch (error) {
|
||||
logger.error("Manua--l sync failed:", error);
|
||||
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
||||
res.status(500).json({ success: false, message: "Manual sync failed", error: errorMessage });
|
||||
}
|
||||
});
|
||||
|
||||
// Jobs directory analysis endpoint
|
||||
app.get("/jobs/analysis", ValidateImsToken, async (req, res) => {
|
||||
try {
|
||||
const analysis = await analyzeJobsDirectory();
|
||||
res.json(analysis);
|
||||
} catch (error) {
|
||||
logger.error("Failed to analyze jobs directory:", error);
|
||||
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
||||
res.status(500).json({ success: false, message: "Jobs analysis failed", error: errorMessage });
|
||||
}
|
||||
});
|
||||
|
||||
// Static files
|
||||
InitServer();
|
||||
app.use(FolderPaths.StaticPath, express.static(FolderPaths.Root, { etag: false, maxAge: 30 * 1000 }));
|
||||
app.use("/assets", express.static("/assets", { etag: false, maxAge: 30 * 1000 }));
|
||||
|
||||
// Start the daily S3 sync scheduler
|
||||
dailyS3Scheduler.start().catch((error) => {
|
||||
logger.error("Failed to start sync scheduler:", error);
|
||||
});
|
||||
|
||||
app.listen(port, () => {
|
||||
logger.info(`ImEX Media Server is running at http://localhost:${port}`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user