#include "CommonDataDAO.h"
#include "DatabaseManager.h"

#include <QSqlQuery>
#include <QSqlError>

#include "time/DateUtils.h"


QDateTime CommonDataDAO::getLastScan() {
    QSqlQuery query(DatabaseManager::instance().database());
    query.prepare("SELECT update_time FROM common_data WHERE id = 1");

    if (!query.exec()) {
        qWarning() << "Ошибка при получении update_time:" << query.lastError().text();
        return {};
    }

    if (query.next()) {
        const QString timestamp = query.value(0).toString();
        return DateUtils::fromUtcString(timestamp);
    }

    return {};
}

bool CommonDataDAO::updateLastScan(const QDateTime &newTime) {
    QSqlQuery query(DatabaseManager::instance().database());
    query.prepare("UPDATE common_data SET update_time = :time WHERE id = 1");
    query.bindValue(":time", DateUtils::toUtcString(newTime));

    if (!query.exec()) {
        qWarning() << "Ошибка при обновлении lastScan:" << query.lastError().text();
        return false;
    }

    if (query.numRowsAffected() == 0) {
        QSqlQuery insertQuery(DatabaseManager::instance().database());
        insertQuery.prepare("INSERT INTO common_data (id, update_time) VALUES (1, :time)");
        insertQuery.bindValue(":time", DateUtils::toUtcString(newTime));

        if (!insertQuery.exec()) {
            qWarning() << "Ошибка при INSERT lastScan:" << insertQuery.lastError().text();
            return false;
        }
    }

    return true;
}
