You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
2.0 KiB

5 months ago
import { getImagesForAdmin, DeleteImage, ResetFlagImage} from "../queries/imageQueries.js";
import { getAdminID } from "../queries/adminQueries.js";
import { getAllFlags } from "../queries/flagQueries.js";
import { CreateImage } from "../server.js";
import { Router } from "express";
import multer from 'multer';
const storage = multer.memoryStorage();
const upload = multer({ storage });
const router = Router();
// create an Image
router.post('/AddImage', upload.array("files"), (req,res) => {
// parse the json data that came in and the files
const jsondata = req.body.data;
let parsedjsondata = JSON.parse(jsondata);
const files = req.files;
// get all of the values
const root = parsedjsondata.root;
const imgname = parsedjsondata.imgname;
const email = parsedjsondata.email;
// create image and return
CreateImage(root, imgname, email, files);
return res.status(200).json({ success: true });
});
// get all images for Admin
router.post('/getImages', async (req,res) => {
const { email } = req.body;
try{
const Admin = await getAdminID(email);
const images = await getImagesForAdmin(Admin);
res.json(images);
} catch(err){
console.error("Error getting images:", err.message);
return res.status(500).json({error: "COULD NOT GET IMAGES"});
}
});
// delete image and replace the image of the flag that's using it
router.post('/DeleteImageReplaceFlags', (req,res) => {
const { images } = req.body;
return getAllFlags().then((flags) => {
for (var i=0; i < flags.length; i++) {
// if the flag's image is being deleted change it to ubuntu
if (flags[i].Image === images) {
ResetFlagImage(flags[i]);
}
}
// delete the images from the database and from docker
if (images === 'ubuntu') return res.status(201).json({ success: true });
else {
DeleteImage(images);
try {
execSync(`docker rmi -f ${images}`);
} catch (err) {
console.error(err.message);
}
}
return res.status(200).json({ success: true });
});
});
export default router;