74 lines
2.9 KiB
JavaScript
74 lines
2.9 KiB
JavaScript
import sqlite3 from'sqlite3'
|
|
import { open } from 'sqlite'
|
|
|
|
/**
|
|
* Manager for handling the sqlite database
|
|
*/
|
|
export default class SqliteManager{
|
|
|
|
constructor(){}
|
|
|
|
async init(){
|
|
sqlite3.verbose()
|
|
await open({filename: './database/loginbase.db', driver: sqlite3.Database}).then(
|
|
(db) => {
|
|
this.database = db
|
|
this.ready = true
|
|
console.log('[SQLITE] Connected to the loginbase database.');
|
|
}
|
|
)
|
|
await this.database.run("CREATE TABLE IF NOT EXISTS users (email TEXT PRIMARY KEY, password TEXT)");
|
|
console.log('[SQLITE] Created users table if it didnt exist.');
|
|
await this.database.run("CREATE TABLE IF NOT EXISTS handlers (topic TEXT, message TEXT, requestUrl TEXT)");
|
|
console.log('[SQLITE] Created handlers table if it didnt exist.');
|
|
|
|
|
|
|
|
}
|
|
|
|
async getUser(email){
|
|
const result = await this.database.get('SELECT * FROM users WHERE email = ?', email)
|
|
console.log('[SQLITE] Got user from database ['+JSON.stringify(result.email)+'].')
|
|
return result
|
|
}
|
|
|
|
async addUser(email, password){
|
|
try{
|
|
await this.database.run(`INSERT INTO users(email, password) VALUES(:email, :password)`, {':email': email, ':password':password});
|
|
console.log("[SQLITE] Inserted new user("+email+").")
|
|
return true
|
|
}catch(err){
|
|
console.log("[SQLITE] Failed inserting new user("+email+"): "+err)
|
|
return false
|
|
}
|
|
}
|
|
|
|
async getHandlers(){
|
|
const result = await this.database.all('SELECT * FROM handlers')
|
|
console.log('[SQLITE] Got handlers from database ['+JSON.stringify(result)+'].')
|
|
return result
|
|
}
|
|
|
|
async addHandler(topic, message, requestUrl){
|
|
try{
|
|
await this.database.run(`INSERT INTO handlers(topic, message, requestUrl) VALUES(:topic, :message, :requestUrl)`, {':topic': topic, ':message':message, ':requestUrl': requestUrl});
|
|
console.log("[SQLITE] Inserted new handler [topic: "+topic+", message: "+message+", requestUrl: "+requestUrl+"].")
|
|
return true
|
|
}catch(err){
|
|
console.log("[SQLITE] Failed inserting new handler [topic: "+topic+", message: "+message+", requestUrl: "+requestUrl+"].")
|
|
return false
|
|
}
|
|
}
|
|
|
|
async removeHandler(topic, message, requestUrl){
|
|
const result = await this.database.run('DELETE FROM handlers WHERE topic = :topic AND message = :message AND requestUrl = :requestUrl', {':topic': topic, ':message': message, ':requestUrl': requestUrl})
|
|
if(result.changes>=1){
|
|
console.log("[SQLITE] Deleted message handler [topic: "+topic+", message: "+message+", requestUrl: "+requestUrl+"].")
|
|
}else{
|
|
console.log("[SQLITE] Failed deleting message handler [topic: "+topic+", message: "+message+", requestUrl: "+requestUrl+"].")
|
|
}
|
|
return result
|
|
}
|
|
|
|
|
|
} |