diff --git a/backend_splatournament_manager/.gitignore b/backend_splatournament_manager/.gitignore index fce7966..3d5f694 100644 --- a/backend_splatournament_manager/.gitignore +++ b/backend_splatournament_manager/.gitignore @@ -2,7 +2,7 @@ node_modules dist/* !dist/csv/ dist/csv/* -!dist/csv/tournaments.csv +!dist/csv/*.csv *.sqlite _requests.http request_logs.txt \ No newline at end of file diff --git a/backend_splatournament_manager/dist/csv/users.csv b/backend_splatournament_manager/dist/csv/users.csv new file mode 100644 index 0000000..74a44b5 --- /dev/null +++ b/backend_splatournament_manager/dist/csv/users.csv @@ -0,0 +1,2 @@ +username, password +tikaiz, htlgkr \ No newline at end of file diff --git a/backend_splatournament_manager/src/services/user-service.ts b/backend_splatournament_manager/src/services/user-service.ts index bfc958f..fb7a5d0 100644 --- a/backend_splatournament_manager/src/services/user-service.ts +++ b/backend_splatournament_manager/src/services/user-service.ts @@ -1,18 +1,43 @@ import { User } from '../models/user'; import { Database } from 'sqlite3'; import * as argon2 from 'argon2'; +import fs from "fs"; +import path from "path"; export class UserService { + private csvFilename = 'csv/users.csv'; private db: Database; constructor(db: Database) { this.db = db; - this.db.run(`CREATE TABLE IF NOT EXISTS Users + this.db.serialize(() => { + this.db.run(`CREATE TABLE IF NOT EXISTS Users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, - password TEXT NOT NULL + password TEXT NOT NULL )`); + this.seedDb(); + }) + } + + seedDb() { + fs.readFile(path.join(process.cwd(), "dist", this.csvFilename), 'utf-8', async (_, data) => { + const entries = data.split('\n'); + entries.shift(); + const lines = entries.filter(line => line.trim()); + const statement = this.db.prepare(`INSERT INTO Users + (username, password) + VALUES (?, ?)`); + for (const line of lines) { + const parts = line.split(','); + const username = parts[0].trim(); + const hash = await argon2.hash(parts[1].trim()); + statement.run(username, hash); + console.log({ username, password: hash }); + } + statement.finalize(); + }); } register(username: string, password: string): Promise<{ id: number; username: string }> {