Files
jarvis/api/lib/db.php
T
myron dc55e6c45b Initial commit: JARVIS AI dashboard v2.3
- 4-tier chat: HA control → Ollama → Groq → Claude
- Push-based agent system with heartbeat/metrics
- Network monitoring, alerts, Proxmox, Home Assistant
- Windows + Linux agent installers
- Stats cache cron, facts collector, KB engine
2026-05-25 13:22:57 +00:00

41 lines
1.3 KiB
PHP

<?php
class JarvisDB {
private static ?PDO $pdo = null;
public static function get(): PDO {
if (self::$pdo === null) {
self::$pdo = new PDO(
'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4',
DB_USER, DB_PASS,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false]
);
}
return self::$pdo;
}
public static function query(string $sql, array $params = []): array {
$stmt = self::get()->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll();
}
public static function execute(string $sql, array $params = []): int {
$stmt = self::get()->prepare($sql);
$stmt->execute($params);
return $stmt->rowCount();
}
public static function single(string $sql, array $params = []): ?array {
$rows = self::query($sql, $params);
return $rows[0] ?? null;
}
public static function insert(string $sql, array $params = []): int {
$stmt = self::get()->prepare($sql);
$stmt->execute($params);
return (int)self::get()->lastInsertId();
}
}