random-fo76/src/main/api.php

55 lines
1.5 KiB
PHP

<?php
header("Content-type:application/json;charset=utf-8");
if (!isset($_GET["action"]))
exit("null");
$action = $_GET["action"];
$db = new SQLite3(".fo76-dumps-ids.db", SQLITE3_OPEN_READONLY);
switch ($action) {
case "get-meta":
$results = $db->query("SELECT * FROM meta;");
$meta = [];
while ($row = $results->fetchArray())
$meta[$row["key"]] = $row["value"];
print(json_encode($meta));
break;
case "list-signatures":
$results = $db->query("SELECT DISTINCT Signature FROM IDs ORDER BY Signature;");
$signatures = [];
while ($row = $results->fetchArray())
array_push($signatures, $row["Signature"]);
print(json_encode($signatures));
break;
case "get-random":
if (!isset($_GET["signatures"])) {
print("null");
break;
}
if (empty($_GET["signatures"])) {
print("null");
break;
}
$signatures = $_GET["signatures"];
$signatures = explode(",", $signatures);
$in_params = implode(",", array_fill(0, count($signatures), "?"));
$stmt = $db->prepare("SELECT * FROM IDs WHERE Signature IN ({$in_params}) ORDER BY RANDOM() LIMIT 1;");
foreach ($signatures as $i => $signature)
$stmt->bindValue($i + 1, $signature);
$results = $stmt->execute();
while ($row = $results->fetchArray(SQLITE3_ASSOC))
print(json_encode($row));
break;
default:
print("null");
break;
}
$db->close();