linting
This commit is contained in:
parent
34e991f017
commit
b217248293
13 changed files with 1229 additions and 406 deletions
|
@ -9,7 +9,7 @@ export const db = new sqlite3.Database("./var/db/media.db");
|
|||
|
||||
/**Inserts a new user to the database */
|
||||
export function createUser(username: string, password: string) {
|
||||
let salt = crypto.randomBytes(16);
|
||||
const salt = crypto.randomBytes(16);
|
||||
|
||||
db.run("INSERT OR IGNORE INTO users (username, hashed_password, salt) VALUES (?, ?, ?)", [
|
||||
username,
|
||||
|
@ -21,38 +21,39 @@ export function createUser(username: string, password: string) {
|
|||
/**Selects a path for a file given ID */
|
||||
export function getPath(id: number | string) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let query: string = `SELECT path FROM media WHERE id = ?`;
|
||||
const query = "SELECT path FROM media WHERE id = ?";
|
||||
|
||||
db.get(query, [id], (err: Error, path: object) => {
|
||||
if (err) {reject(err)}
|
||||
resolve(path)
|
||||
if (err) {reject(err);}
|
||||
resolve(path);
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
/**Deletes from database given an ID */
|
||||
export function deleteId(database: string, id: number | string) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let query: string = `DELETE FROM ${database} WHERE id = ?`
|
||||
const query = `DELETE FROM ${database} WHERE id = ?`;
|
||||
|
||||
db.run(query, [id], (err: Error) => {
|
||||
if (err) {reject(err); return;}
|
||||
resolve(null)
|
||||
})
|
||||
})
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**Expires a database row given a Date in unix time */
|
||||
export function expire(database: string, column: string, expiration:number) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let query: string = `SELECT * FROM ${database} WHERE ${column} < ?`;
|
||||
const query = `SELECT * FROM ${database} WHERE ${column} < ?`;
|
||||
|
||||
db.each(query, [expiration], async (err: Error, row: GenericRow) => {
|
||||
await deleteId(database, row.id)
|
||||
if (err) reject(err);
|
||||
await deleteId(database, row.id);
|
||||
|
||||
resolve(null);
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
/**A generic database row */
|
||||
|
@ -79,7 +80,7 @@ export type MediaParams = [
|
|||
|
||||
/**A row for the user database */
|
||||
export interface UserRow {
|
||||
id? : Number,
|
||||
id? : number,
|
||||
username: string,
|
||||
hashed_password: any,
|
||||
salt: any
|
||||
|
|
1
app/types/declarations/ffprobepath.d.ts
vendored
Normal file
1
app/types/declarations/ffprobepath.d.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
declare module "@ffprobe-installer/ffprobe";
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable @typescript-eslint/no-namespace */
|
||||
declare global {
|
||||
namespace Express {
|
||||
interface User {
|
||||
|
@ -8,7 +9,7 @@ declare global {
|
|||
}
|
||||
/**Splits a file name into its name and then its extension */
|
||||
export function extension(str: string){
|
||||
let file = str.split("/").pop();
|
||||
const file = str.split("/").pop();
|
||||
return [file.substr(0,file.lastIndexOf(".")),file.substr(file.lastIndexOf("."),file.length).toLowerCase()];
|
||||
}
|
||||
/**Type for user data */
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import {Request} from 'express';
|
||||
import multer, {FileFilterCallback} from 'multer';
|
||||
import {Request} from "express";
|
||||
import multer, {FileFilterCallback} from "multer";
|
||||
|
||||
import {db, MediaRow} from './db'
|
||||
import {extension} from './lib'
|
||||
import {db, MediaRow} from "./db";
|
||||
import {extension} from "./lib";
|
||||
|
||||
export type DestinationCallback = (error: Error | null, destination: string) => void
|
||||
export type FileNameCallback = (error: Error | null, filename: string) => void
|
||||
|
@ -20,15 +20,15 @@ export const fileStorage = multer.diskStorage({
|
|||
file: Express.Multer.File,
|
||||
callback: FileNameCallback
|
||||
): void => {
|
||||
let nameAndExtension = extension(file.originalname);
|
||||
const nameAndExtension = extension(file.originalname);
|
||||
console.log(`Uploading ${file}`);
|
||||
db.all("SELECT * FROM media WHERE path = ?", [nameAndExtension[0] + nameAndExtension[1]], (err: Error, exists: []) => {
|
||||
if (err) {
|
||||
console.log(err)
|
||||
callback(err, null)
|
||||
console.log(err);
|
||||
callback(err, null);
|
||||
}
|
||||
if (exists.length != 0) {
|
||||
let suffix = new Date().getTime() / 1000;
|
||||
const suffix = new Date().getTime() / 1000;
|
||||
|
||||
if (request.body.title == "" || request.body.title == null || request.body.title == undefined) {
|
||||
callback(null, nameAndExtension[0] + "-" + suffix + nameAndExtension[1]);
|
||||
|
@ -46,27 +46,27 @@ export const fileStorage = multer.diskStorage({
|
|||
}
|
||||
});
|
||||
|
||||
export let allowedMimeTypes = [
|
||||
"image/png",
|
||||
"image/jpg",
|
||||
"image/jpeg",
|
||||
"image/gif",
|
||||
"image/webp",
|
||||
"video/mp4",
|
||||
"video/mov",
|
||||
"video/webm",
|
||||
"audio/mpeg",
|
||||
"audio/ogg"
|
||||
export const allowedMimeTypes = [
|
||||
"image/png",
|
||||
"image/jpg",
|
||||
"image/jpeg",
|
||||
"image/gif",
|
||||
"image/webp",
|
||||
"video/mp4",
|
||||
"video/mov",
|
||||
"video/webm",
|
||||
"audio/mpeg",
|
||||
"audio/ogg"
|
||||
];
|
||||
|
||||
|
||||
export const fileFilter = (
|
||||
request: Request,
|
||||
file: Express.Multer.File,
|
||||
callback: FileFilterCallback
|
||||
): void => {
|
||||
if (allowedMimeTypes.includes(file.mimetype)) {
|
||||
callback(null, true)
|
||||
callback(null, true);
|
||||
} else {
|
||||
callback(null, false)
|
||||
callback(null, false);
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue