Merged API and Databank into Main branch
This commit is contained in:
103
database/helpers/utils/user_utils.ts
Normal file
103
database/helpers/utils/user_utils.ts
Normal file
@@ -0,0 +1,103 @@
|
||||
/// <reference lib="deno.ns" />
|
||||
|
||||
/**
|
||||
* @author Esad Mustafoski
|
||||
* @description This file is responsible for creating Functions to easily access the Database, Specifically for Users
|
||||
* @file userUtil.ts
|
||||
*/
|
||||
|
||||
// +++ IMPORTS ------------------------------------------------------ //
|
||||
import { DB, Row } from "https://deno.land/x/sqlite@v3.9.1/mod.ts";
|
||||
import { mapAccountRow, queryDatabase } from "./mod.ts";
|
||||
import { Accounts } from "../interfaces.ts";
|
||||
|
||||
/**
|
||||
* @param user The username of the User to add
|
||||
* @param password The hashed password of the User to add
|
||||
* @param salt The salt used for the password
|
||||
* @returns "noUser" if user exists, "newUser" if registration successful
|
||||
*/
|
||||
function registerUser(
|
||||
db: DB,
|
||||
user: string,
|
||||
password: string,
|
||||
salt: string,
|
||||
userGroup: string,
|
||||
displayname: string,
|
||||
user_email: string,
|
||||
firstname: string,
|
||||
surname: string,
|
||||
account_created: string,
|
||||
): any {
|
||||
const query_user_exists =
|
||||
`SELECT * FROM accounts WHERE displayname = '${user}'`;
|
||||
if (!query_user_exists) {
|
||||
return "noUser";
|
||||
}
|
||||
|
||||
const query_add_user = `
|
||||
INSERT INTO accounts (
|
||||
username,
|
||||
password,
|
||||
password_salt,
|
||||
user_group,
|
||||
displayname,
|
||||
user_email,
|
||||
firstname,
|
||||
surname,
|
||||
account_created,
|
||||
bio,
|
||||
blocked_users,
|
||||
followers,
|
||||
following,
|
||||
contacts
|
||||
) VALUES (
|
||||
'${user}',
|
||||
'${password}',
|
||||
'${salt}',
|
||||
'${userGroup}',
|
||||
'${displayname}',
|
||||
'${user_email}',
|
||||
'${firstname}',
|
||||
'${surname}',
|
||||
'${account_created}',
|
||||
'',
|
||||
'[]',
|
||||
'[]',
|
||||
'[]',
|
||||
'[]'
|
||||
)`;
|
||||
db.query(query_add_user);
|
||||
const userId = db.query(
|
||||
`SELECT user_id FROM accounts WHERE displayname = '${user}'`,
|
||||
);
|
||||
console.log(`New user: ${user}`);
|
||||
|
||||
return userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns Array of all Users in the Database
|
||||
*/
|
||||
async function getAllUsersFromDB(db: DB): Promise<Accounts[]> {
|
||||
const query = `SELECT * FROM accounts`;
|
||||
return await queryDatabase<Accounts>(db, query, [], mapAccountRow);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param username
|
||||
* @returns Returns the Accounts for the User with the given username
|
||||
*/
|
||||
async function getUserByUsername(db: DB, username: string): Promise<Accounts> {
|
||||
const query = `SELECT * FROM accounts WHERE username = '${username}'`;
|
||||
const params: string[] = [];
|
||||
const result = await queryDatabase<Accounts>(
|
||||
db,
|
||||
query,
|
||||
params,
|
||||
mapAccountRow,
|
||||
);
|
||||
return result[0];
|
||||
}
|
||||
|
||||
export { getAllUsersFromDB, getUserByUsername, registerUser };
|
||||
Reference in New Issue
Block a user