package main

import (
	"flag"
	"fmt"
	"log"

	"linux-auth/internal/db"
	"linux-auth/internal/utils"
)

/**
 * @brief CLI утилита для добавления нового пользователя в базу
 *
 * Позволяет добавлять пользователей интерактивно или через аргументы.
 */
func main() {
	// ---------- Аргументы ----------
	username := flag.String("username", "", "Логин нового пользователя")
	password := flag.String("password", "", "Пароль нового пользователя")
	dbPath := flag.String("db", "./data/users.db", "Путь к файлу базы данных")
	flag.Parse()

	// ---------- Проверка аргументов ----------
	if *username == "" || *password == "" {
		fmt.Println("Использование: go run cmd/add_user/main.go -username USER -password PASS [-db ./data/users.db]")
		return
	}

	// ---------- Инициализация БД ----------
	err := db.Init(*dbPath)
	if err != nil {
		log.Fatalf("Ошибка инициализации БД: %v\n", err)
	}
	defer db.Close()

	// ---------- Создание пользователя ----------
	hash := utils.HashPassword(*password)
	err = db.CreateUser(*username, hash)
	if err != nil {
		log.Fatalf("Не удалось создать пользователя %s: %v\n", *username, err)
	}

	fmt.Printf("Пользователь %s успешно добавлен.\n", *username)
}
