cleaner prune function

This commit is contained in:
waveringana 2022-12-11 06:20:48 +00:00
parent 135c772723
commit 0a0d9b9802
4 changed files with 40 additions and 34 deletions

View file

@ -1,7 +1,6 @@
import sqlite3 from "sqlite3";
import mkdirp from "mkdirp";
import crypto from "crypto";
import { FileFilterCallback } from "multer";
mkdirp.sync("./uploads");
mkdirp.sync("./var/db");
@ -9,7 +8,8 @@ mkdirp.sync("./var/db");
export const db = new sqlite3.Database("./var/db/media.db");
export function createUser(username: string, password: string) {
var salt = crypto.randomBytes(16);
let salt = crypto.randomBytes(16);
db.run("INSERT OR IGNORE INTO users (username, hashed_password, salt) VALUES (?, ?, ?)", [
username,
crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256"),
@ -20,6 +20,7 @@ export function createUser(username: string, password: string) {
export function getPath(id: number | string) {
return new Promise((resolve, reject) => {
let query: string = `SELECT path FROM media WHERE id = ?`;
db.get(query, [id], (err: Error, path: object) => {
if (err) {reject(err)}
resolve(path)
@ -30,6 +31,7 @@ export function getPath(id: number | string) {
export function deleteId(database: string, id: number | string) {
return new Promise((resolve, reject) => {
let query: string = `DELETE FROM ${database} WHERE id = ?`
db.run(query, [id], (err: Error) => {
if (err) {reject(err); return;}
resolve(null)
@ -37,22 +39,40 @@ export function deleteId(database: string, id: number | string) {
})
}
export function expire(database: string, column: string, expiration:number) {
return new Promise((resolve, reject) => {
let query: string = `SELECT * FROM ${database} WHERE ${column} < ?`;
db.each(query, [expiration], async (err: Error, row: GenericRow) => {
await deleteId(database, row.id)
resolve(null);
});
})
}
export interface GenericRow {
id? : number | string,
username?: string
expire? :Date
}
export interface MediaRow {
id? : Number,
path: String,
id? : number | string,
path: string,
expire: Date,
username?: String
username?: string
}
export type MediaParams = [
path: String,
path: string,
expire: Date,
username?: String
username?: string
]
export interface UserRow {
id? : Number,
username: String,
username: string,
hashed_password: any,
salt: any
}

View file

@ -7,7 +7,7 @@ declare global {
}
}
export function extension(str: String){
export function extension(str: string){
let file = str.split("/").pop();
return [file.substr(0,file.lastIndexOf(".")),file.substr(file.lastIndexOf("."),file.length).toLowerCase()];
}