uploads test
This commit is contained in:
parent
29bc2b8ddd
commit
dabbc7d862
11 changed files with 121 additions and 44 deletions
38
form/upload.js
Normal file
38
form/upload.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
import Route from "../route.js";
|
||||
import initDb from "../db.js";
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {exec} from 'node:child_process';
|
||||
import { promisify } from "node:util";
|
||||
import auth from "../form/auth.js";
|
||||
|
||||
const execP = promisify(exec);
|
||||
|
||||
let db = await initDb();
|
||||
|
||||
// TODO: rewrite
|
||||
let main = new Route([auth], async function (req, res, input) {
|
||||
let { username } = input;
|
||||
let id = randomUUID();
|
||||
|
||||
let { title, desc } = req.body;
|
||||
if (!title || !desc || !req.file) return { 'success': false, 'message': 'Some fields are missing' }; // probably should not re-use these strings
|
||||
|
||||
let {path} = req.file;
|
||||
|
||||
try {
|
||||
await execP(`ffmpeg -i ${path} videos/${id}.mp4`);
|
||||
} catch (err) {
|
||||
return { 'success': false, 'message': 'Video is invalid'}
|
||||
}
|
||||
|
||||
await db.run('INSERT INTO video (id, title, desc, username) VALUES (?, ?, ?, ?)', [
|
||||
id,
|
||||
title,
|
||||
desc,
|
||||
username
|
||||
]);
|
||||
|
||||
return { 'message': 'Video created', 'success': true, 'redirect': '/client/video?id='+id };
|
||||
});
|
||||
|
||||
export default main;
|
Loading…
Add table
Add a link
Reference in a new issue