48 lines
1.8 KiB
PHP
Executable File
48 lines
1.8 KiB
PHP
Executable File
<?php
|
|
header('Content-Type: application/json');
|
|
|
|
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
|
|
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS hamid_conversations (
|
|
id SERIAL PRIMARY KEY, session_id VARCHAR(100), title VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW()
|
|
)");
|
|
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS hamid_messages (
|
|
id SERIAL PRIMARY KEY, conversation_id INT, role VARCHAR(20), content TEXT,
|
|
provider VARCHAR(50), created_at TIMESTAMP DEFAULT NOW()
|
|
)");
|
|
|
|
$action = $_POST['action'] ?? $_GET['action'] ?? '';
|
|
|
|
switch ($action) {
|
|
case 'new_conversation':
|
|
$stmt = $pdo->prepare("INSERT INTO hamid_conversations (session_id, title) VALUES (?, ?)");
|
|
$stmt->execute([uniqid('conv_'), $_POST['title'] ?? 'Nouvelle conversation']);
|
|
echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]);
|
|
break;
|
|
|
|
case 'list_conversations':
|
|
$convs = $pdo->query("SELECT * FROM hamid_conversations ORDER BY updated_at DESC LIMIT 20")->fetchAll(PDO::FETCH_ASSOC);
|
|
echo json_encode(['conversations' => $convs]);
|
|
break;
|
|
|
|
case 'search':
|
|
$q = $_GET['q'] ?? '';
|
|
$results = $pdo->query("SELECT * FROM hamid_messages WHERE content ILIKE '%$q%' LIMIT 20")->fetchAll(PDO::FETCH_ASSOC);
|
|
echo json_encode(['results' => $results]);
|
|
break;
|
|
|
|
case 'stats':
|
|
$stats = [
|
|
'conversations' => $pdo->query("SELECT COUNT(*) FROM hamid_conversations")->fetchColumn(),
|
|
'messages' => $pdo->query("SELECT COUNT(*) FROM hamid_messages")->fetchColumn()
|
|
];
|
|
echo json_encode($stats);
|
|
break;
|
|
|
|
default:
|
|
echo json_encode(['actions' => ['new_conversation', 'list_conversations', 'search', 'stats']]);
|
|
}
|
|
|