Jobs Media List functional

This commit is contained in:
Patrick Fic
2022-04-28 19:30:49 -07:00
parent 295e4deeb2
commit 9962ce0baf
11 changed files with 4116 additions and 4624 deletions

View File

@@ -0,0 +1,15 @@
import { Request, Response, NextFunction } from "express";
export default function ValidateJobBasedRequest(
req: Request,
res: Response,
next: NextFunction
) {
const ro_number: string = (req.body.ro_number || "").trim();
if (ro_number === "") {
res.status(400).json({ error: "No RO Number has been specified." });
return;
} else {
next();
}
}

View File

@@ -1,9 +0,0 @@
import fs from "fs-extra";
//import { FolderPaths } from "../util/serverInit.js";
import express, { Express, Request, Response } from "express";
export async function JobsListMedia(req: Request, res: Response) {
//const { ro_number } = req.body;
res.send();
}

55
jobs/jobsListMedia.ts Normal file
View File

@@ -0,0 +1,55 @@
import { Request, Response } from "express";
import fs from "fs-extra";
import path from "path";
import GenerateThumbnail from "../util/generateThumbnail";
import GenerateUrl from "../util/MediaUrlGen";
import { FolderPaths } from "../util/serverInit";
export async function JobsListMedia(req: Request, res: Response) {
const ro_number: string = (req.body.ro_number || "").trim();
const filesList: fs.Dirent[] = (
await fs.readdir(path.join(FolderPaths.Jobs, ro_number), {
withFileTypes: true,
})
).filter((f) => f.isFile() && !/(^|\/)\.[^\/\.]/g.test(f.name));
const thumbnailGenerationQueue: Promise<void>[] = [];
const ret: MediaFile[] = filesList.map((file) => {
thumbnailGenerationQueue.push(
GenerateThumbnail(
path.join(FolderPaths.Jobs, ro_number, file.name),
path.join(
FolderPaths.Jobs,
ro_number,
FolderPaths.ThumbsSubDir,
file.name
)
)
);
return {
src: GenerateUrl([
FolderPaths.StaticPath,
FolderPaths.JobsFolder,
ro_number,
file.name,
]),
thumb: GenerateUrl([
FolderPaths.StaticPath,
FolderPaths.JobsFolder,
ro_number,
FolderPaths.ThumbsSubDir,
file.name,
]),
};
});
await Promise.all(thumbnailGenerationQueue);
res.json(ret);
}
interface MediaFile {
src: string;
thumb: string;
}