KF-MMO-Server/Account/users.ts

45 lines
1.5 KiB
TypeScript

import { userData } from "../Classes/userData.js";
import { DatabaseController, dbUser } from "../Database/dbcontroller.js";
export class userCheckResponse{
result : userCheckResult
userData : userData
constructor(result : userCheckResult, userData : userData){
this.result = result;
this.userData = userData;
}
}
export enum userCheckResult{
OK,
IncorrectPassword,
NotExist
}
export class users{
static async createUser(db: DatabaseController, login : string, password : string){
await db.run('INSERT INTO users (login, password) VALUES (?, ?)', [login, password]);
return await this.readUser(db, login, password)
}
static async readUser(db: DatabaseController, login : string, password : string): Promise<userCheckResponse>{
let user = await db.select<dbUser>(`SELECT * FROM users WHERE login = ? LIMIT 1`, [login])
if (user.length > 0){
let row = user[0]
if (row.password != password){
return new userCheckResponse(userCheckResult.IncorrectPassword, null)
}
return new userCheckResponse(userCheckResult.OK, new userData({...row}))
}
else{
return new userCheckResponse(userCheckResult.NotExist, null)
}
}
static async readUserID(db: DatabaseController, id : number){
let user = await db.select<dbUser>(`SELECT * FROM users WHERE id = ?`, [id])
return user;
}
}