sanifae/src/lib/db/db.js

56 lines
1.8 KiB
JavaScript
Raw Normal View History

2023-03-09 19:12:15 -05:00
import { backend } from './handlers.js';
2023-02-05 09:50:49 -05:00
const AUTH_ACTIONS = [
'postCreate',
2023-02-07 19:36:32 -05:00
'fileCreate',
2023-02-11 02:11:45 -05:00
'vote',
2023-03-06 02:26:57 -05:00
'postDelete',
2023-03-06 16:15:27 -05:00
'pfp',
2023-03-06 02:26:57 -05:00
'follow'
];
2023-02-05 09:50:49 -05:00
import sqlite3 from 'sqlite3'
import { open } from 'sqlite'
var db;
2023-03-09 19:12:15 -05:00
2023-02-05 09:50:49 -05:00
async function initDb() {
db = await open({
filename: `${process.cwd()}/db/main.db`,
driver: sqlite3.Database
});
await db.run('CREATE TABLE IF NOT EXISTS auth (username CHAR(64), password CHAR(1024))');
await db.run('CREATE TABLE IF NOT EXISTS token (username CHAR(64), token CHAR(1024))');
2023-02-12 12:06:19 -05:00
await db.run('CREATE TABLE IF NOT EXISTS post (username CHAR(64), id CHAR(64), content CHAR(10240), upvotes INTEGER, downvotes INTEGER, rating REAL, reply CHAR(64), time INTEGER)');
2023-02-05 09:50:49 -05:00
await db.run('CREATE TABLE IF NOT EXISTS vote (id CHAR(64), username CHAR(64), type INTEGER)');
2023-02-11 19:42:10 -05:00
await db.run('CREATE TABLE IF NOT EXISTS user (username CHAR(64), followers INTEGER, following INTEGER, upvotes INTEGER, downvotes INTEGER, reputation REAL)');
2023-03-06 02:26:57 -05:00
await db.run('CREATE TABLE IF NOT EXISTS bio (username CHAR(64), content CHAR(10240), roles INTEGER)');
await db.run('CREATE TABLE IF NOT EXISTS follow (username CHAR(64), following CHAR(64))');
2023-02-05 09:50:49 -05:00
}
let backendProxy = async ({route, backendParams}) => {
if (!db) await initDb();
2023-03-09 19:12:15 -05:00
let extraParams = {};
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
extraParams['db'] = db;
2023-02-11 02:11:45 -05:00
2023-03-09 19:12:15 -05:00
let user = (await backend.token({cookies: backendParams.cookies},extraParams)) || {};
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
user = user.data;
2023-03-08 20:09:51 -05:00
2023-03-09 19:12:15 -05:00
if ((!user || user == '') && AUTH_ACTIONS.indexOf(route) != -1) return {'success': 'Not authorized.' };
3
let isAdmin = false;
if (user && user != '') isAdmin = ((await backend.userRoles({}, {user, db})) || []).indexOf('Admin') != -1;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
extraParams['admin'] = isAdmin;
extraParams['user'] = user;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
return backend[route](backendParams, extraParams) || {};
2023-02-05 09:50:49 -05:00
}
export {
2023-03-09 19:12:15 -05:00
backendProxy
};