const db = require('./DataBaseConnection');

class VariablesRepository {
    constructor() {
            this.db = db.getConnection();
    }

    async GetValue(varname) {
        try {
            const sql = `SELECT data FROM variables WHERE name = ?`;
            const [rows] = await this.db.execute(sql, [varname]);

            if (rows.afectedRows < 1) {
                return null;
            }

            return rows[0];
        }
        catch(e) {
            console.error(`Variables Repository: Nie udało się pobrać danych z DB: ${e}`);
            return null;
        }
    }

    async SetValue(varname, data) {
        try {
            const sql = `UPDATE variables SET data = ? WHERE name = ?`;
            const [rows] = await this.db.execute(sql, [data, varname]);

            if (rows.afectedRows < 1) {
                const sql = `INSERT INTO (name, data) VALUES (?, ?)`;
                const [rows] = await this.db.execute(sql, [varname, data]);

                if (rows.afectedRows < 1) {
                    return false;
                }
            }

            return true;
        }
        catch(e) {
            console.error(`Variables Repository: Nie udało się zapisać danych: ${e}`);
            return null;
        }
    }

    async DeleteValue(varname) {
        try {
            const sql = `DELETE FROM variables WHERE name = ?`;
            const [rows] = this.db.execute(sql, [varname]);

            if (rows.afectedRows < 1) {
                return false;
            }

            return true;
        }
        catch(e) {
            console.error(`Variables Repository: Nie udało się skasować danych: ${e}`);
            return false;
        }
    }
}