This repository has been archived on 2022-08-31. You can view files and clone it, but cannot push or open issues or pull requests.
awesome-email-extractor/Globals.cs

69 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Data.Sqlite;
namespace AwesomeEmailExtractor
{
internal class Globals
{
// Getter and setter for SQLite database connection
public static SqliteConnection db { get; set; }
public static string getAppDirectory()
{
return Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData
),
"AwesomeEmailExtractor"
);
}
public static string getAppDatabase()
{
return Path.Combine(
getAppDirectory(),
"database.db"
);
}
public static void CreateTables()
{
SqliteCommand command = new SqliteCommand();
command.Connection = db;
// Создать таблицу для хранения ролей
command.CommandText = "CREATE TABLE IF NOT EXISTS roles (id INTEGER PRIMARY KEY, name TEXT NOT NULL);";
command.ExecuteNonQuery();
// Добавить роли
command.CommandText = "INSERT OR IGNORE INTO roles (id, name) VALUES (0, 'DEFAULT'), (1, 'ADMIN');";
command.ExecuteNonQuery();
// Создать таблицу для хранения пользователей
command.CommandText = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT NOT NULL UNIQUE, password TEXT NOT NULL, role_id INTEGER NOT NULL, FOREIGN KEY(role_id) REFERENCES roles(id));";
command.ExecuteNonQuery();
// Если таблица пуста - добавить пользователя по умолчанию
command.CommandText = "SELECT COUNT(*) FROM users";
if (Convert.ToInt32(command.ExecuteScalar()) == 0)
{
command.CommandText = "INSERT INTO users (login, password, role_id) VALUES ('admin', @password, 1);";
SqliteParameter passwordParam = new SqliteParameter("@password", Authorization.EncryptPassword("admin"));
command.Parameters.Add(passwordParam);
command.ExecuteNonQuery();
command.Parameters.Clear();
}
}
}
}