Redesign file browser, file upload (server)
This commit is contained in:
@@ -1,13 +1,19 @@
|
||||
import { Request, Response, NextFunction, Router } from 'express'
|
||||
import { deleteAllTables, deleteExerciseProgressTables, prepopulateDatabase, prepopulateExerciseDatabase } from '../scripts/databaseHelper'
|
||||
import fs from "fs"
|
||||
|
||||
export const api = Router()
|
||||
|
||||
/**
|
||||
* Status check endpoint
|
||||
*/
|
||||
api.get("/", (req: Request, res: Response, next: NextFunction) => {
|
||||
res.status(200).send()
|
||||
})
|
||||
|
||||
/**
|
||||
* Reset the whole database to factory state
|
||||
* Doesn't effect ExerciseTable and ExerciseGroupTable
|
||||
*/
|
||||
api.get("/resetdatabase", async (req: Request, res: Response, next: NextFunction) => {
|
||||
// Step 1: Delete all data tables
|
||||
deleteAllTables()
|
||||
@@ -19,35 +25,13 @@ api.get("/resetdatabase", async (req: Request, res: Response, next: NextFunction
|
||||
res.status(200).send()
|
||||
})
|
||||
|
||||
/**
|
||||
* Reset ExerciseTable and ExerciseGroupTable to factory state
|
||||
*/
|
||||
api.get("/resetExerciseProgress", async (req: Request, res: Response, next: NextFunction) => {
|
||||
deleteExerciseProgressTables()
|
||||
|
||||
await prepopulateExerciseDatabase()
|
||||
|
||||
res.status(200).send()
|
||||
})
|
||||
|
||||
/**
|
||||
* Get all uploaded file names
|
||||
*/
|
||||
api.get("/files", async (req: Request, res: Response) => {
|
||||
let dirNames = fs.readdirSync("./backend/images")
|
||||
let result = []
|
||||
|
||||
dirNames.forEach(dir => {
|
||||
let fileNames = fs.readdirSync("./backend/images/" + dir)
|
||||
|
||||
result.push({
|
||||
folder: dir,
|
||||
files: fileNames.map(file => {
|
||||
return {
|
||||
name: file,
|
||||
size: fs.statSync("./backend/images/" + dir + "/" + file).size,
|
||||
url: "http://localhost:3000/static/" + dir + "/" + file
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
res.status(200).json(result)
|
||||
})
|
||||
@@ -11,7 +11,9 @@ import { calcOverallRating, calcRatingValues } from "../scripts/calcScripts";
|
||||
|
||||
export const band = Router()
|
||||
|
||||
// Get all bands
|
||||
/**
|
||||
* Get all bands
|
||||
*/
|
||||
band.get("/", (req: Request, res: Response) => {
|
||||
let sort = req.query.sort
|
||||
let count = req.query.count
|
||||
@@ -64,7 +66,9 @@ band.get("/", (req: Request, res: Response) => {
|
||||
})
|
||||
})
|
||||
|
||||
// Get all information about one band
|
||||
/**
|
||||
* Get all information about one band
|
||||
*/
|
||||
band.get("/band/:name", (req: Request, res: Response) => {
|
||||
Band.findOne({
|
||||
where: {
|
||||
@@ -123,7 +127,9 @@ band.get("/band/:name", (req: Request, res: Response) => {
|
||||
})
|
||||
|
||||
|
||||
// Band search
|
||||
/**
|
||||
* Band search
|
||||
*/
|
||||
band.get("/search", (req: Request, res: Response) => {
|
||||
Band.findAll({
|
||||
where: {
|
||||
@@ -139,7 +145,9 @@ band.get("/search", (req: Request, res: Response) => {
|
||||
})
|
||||
|
||||
|
||||
// Edit band
|
||||
/**
|
||||
* Edit band
|
||||
*/
|
||||
band.patch("/", (req: Request, res: Response) => {
|
||||
Band.update(req.body, {
|
||||
where: {
|
||||
@@ -152,7 +160,9 @@ band.patch("/", (req: Request, res: Response) => {
|
||||
})
|
||||
|
||||
|
||||
// New band
|
||||
/**
|
||||
* New band
|
||||
*/
|
||||
band.post("/", (req: Request, res: Response) => {
|
||||
Band.create(req.body)
|
||||
.then(result => {
|
||||
@@ -160,6 +170,9 @@ band.post("/", (req: Request, res: Response) => {
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Delete a band
|
||||
*/
|
||||
band.delete("/", (req: Request, res: Response) => {
|
||||
Band.destroy({
|
||||
where: {
|
||||
|
||||
52
software/backend/routes/files.routes.ts
Normal file
52
software/backend/routes/files.routes.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import { Request, Response, NextFunction, Router } from 'express'
|
||||
import fs from "fs"
|
||||
import multer from "multer"
|
||||
const upload = multer({ dest: './backend/images/' })
|
||||
|
||||
export const files = Router()
|
||||
|
||||
/**
|
||||
* Get all folders
|
||||
*/
|
||||
files.get("/folders", async (req: Request, res: Response) => {
|
||||
let dirNames = fs.readdirSync("./backend/images")
|
||||
let result = []
|
||||
|
||||
dirNames.forEach(dir => {
|
||||
result.push({
|
||||
name: dir,
|
||||
nrOfItems: fs.readdirSync("./backend/images/" + dir).length
|
||||
})
|
||||
})
|
||||
|
||||
res.status(200).json(result)
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* Get all uploaded file names by file name
|
||||
*/
|
||||
files.get("/:folder", async (req: Request, res: Response) => {
|
||||
let result = []
|
||||
let fileNames = fs.readdirSync("./backend/images/" + req.params.folder + "/")
|
||||
|
||||
fileNames.forEach(file => {
|
||||
result.push({
|
||||
name: file,
|
||||
size: fs.statSync("./backend/images/" + req.params.folder + "/" + file).size,
|
||||
url: "http://localhost:3000/static/" + req.params.folder + "/" + file
|
||||
})
|
||||
})
|
||||
|
||||
res.status(200).json(result)
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* Upload a file
|
||||
*/
|
||||
files.post("/", upload.single("file"), function (req: Request, res: Response, next: NextFunction) {
|
||||
console.log(req.file)
|
||||
|
||||
res.status(200).send()
|
||||
})
|
||||
Reference in New Issue
Block a user