#pragma once
#include <string>
#include <vector>

struct sqlite3; // fwd decl — no include de sqlite3.h en la cabecera

namespace fn_ui {

// Crea la tabla `ui_layouts` si no existe. Idempotente.
// Schema:
//   CREATE TABLE IF NOT EXISTS ui_layouts (
//       name       TEXT PRIMARY KEY,
//       blob       TEXT NOT NULL,
//       created_at TEXT NOT NULL,
//       updated_at TEXT NOT NULL
//   );
// Returns: true on success.
bool layout_storage_init(sqlite3* db);

// Lista todos los nombres de layouts guardados, ordenados alfabeticamente.
std::vector<std::string> layout_storage_list(sqlite3* db);

// Guarda (upsert) un layout. Preserva created_at original si ya existe.
// Returns: true on success.
bool layout_storage_save(sqlite3* db, const std::string& name, const std::string& blob);

// Carga el blob INI de un layout. Retorna "" si no existe o hay error.
std::string layout_storage_load_blob(sqlite3* db, const std::string& name);

// Borra un layout por nombre.
// Returns: true si se borro, false si no existia o hay error.
bool layout_storage_delete(sqlite3* db, const std::string& name);

// Verifica si un layout con ese nombre existe.
bool layout_storage_exists(sqlite3* db, const std::string& name);

} // namespace fn_ui
