Animarr/src/ImportOldDatabase.php

128 lines
4.2 KiB
PHP

<?php
include "AutoLoader.php";
use Animarr\Database;
use Animarr\Filter;
use Animarr\Release\Release;
use Animarr\Release\MultiRelease;
use Animarr\Downloader;
use Animarr\Torrent\Torrent;
use Animarr\Source\SourceList;
/*
function errHandle($errNo, $errStr, $errFile, $errLine) {
$msg = "$errStr in $errFile on line $errLine";
if ($errNo == E_NOTICE || $errNo == E_WARNING) {
throw new ErrorException($msg, $errNo);
} else {
echo $msg;
}
}
set_error_handler('errHandle');
*/
ini_set('memory_limit', '2048M');
setlocale(LC_CTYPE, "en_US.UTF-8");
chdir(__DIR__ . "/" . "..");
Database::parseConfig($argv[1]);
Downloader::log("Starting config...");
Downloader::log("Loading Database...");
$user = Database::getConfigKey("database.psql.user");
$pass = Database::getConfigKey("database.psql.password");
$host = Database::getConfigKey("database.psql.host");
$dbname = Database::getConfigKey("database.psql.dbname", "animarr");
$dbnew = pg_connect("host=$host user=$user password=$pass dbname=$dbname");
//pg_query(file_get_contents("db.sql"));
$dbold = new \SQLite3($argv[2]);
$q = $dbold->query("SELECT * FROM tracked;");
$count = $dbold->query("SELECT COUNT(*) as count FROM tracked;")->fetchArray(SQLITE3_ASSOC)["count"];
pg_query($dbnew, "BEGIN");
$i = 0;
while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){
echo "\rproc tracked ".(++$i)."/".$count. " " . $row["aid"];
$sql = "INSERT INTO tracked ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;";
$keys = [];
$kvalues = [];
foreach($row as $k => $value){
$keys[] = $k;
$kvalues[] = '$' . (count($kvalues) + 1);
}
pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row);
}
$q->finalize();
pg_query($dbnew, "COMMIT");
$q = $dbold->query("SELECT * FROM releases;");
$count = $dbold->query("SELECT COUNT(*) as count FROM releases;")->fetchArray(SQLITE3_ASSOC)["count"];
pg_query($dbnew, "BEGIN");
$i = 0;
while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){
echo "\rproc releases ".(++$i)."/".$count. " " . $row["release_id"];
$sql = "INSERT INTO releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;";
$keys = [];
$kvalues = [];
foreach($row as $k => $value){
if($k === "release_data"){
$row[$k] = base64_decode($value);
}
$keys[] = $k;
$kvalues[] = '$' . (count($kvalues) + 1);
}
pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row);
}
$q->finalize();
pg_query($dbnew, "COMMIT");
$q = $dbold->query("SELECT * FROM episodes_releases;");
$count = $dbold->query("SELECT COUNT(*) as count FROM episodes_releases;")->fetchArray(SQLITE3_ASSOC)["count"];
pg_query($dbnew, "BEGIN");
$i = 0;
while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){
echo "\rproc episodes_releases ".(++$i)."/".$count. " " . $row["release_id"];
$sql = "INSERT INTO episodes_releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;";
$keys = [];
$kvalues = [];
foreach($row as $k => $value){
if($k === "release_data"){
$row[$k] = base64_decode($value);
}
$keys[] = $k;
$kvalues[] = '$' . (count($kvalues) + 1);
}
pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row);
}
$q->finalize();
pg_query($dbnew, "COMMIT");
$q = $dbold->query("SELECT * FROM tracked_releases;");
$count = $dbold->query("SELECT COUNT(*) as count FROM tracked_releases;")->fetchArray(SQLITE3_ASSOC)["count"];
pg_query($dbnew, "BEGIN");
$i = 0;
while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){
echo "\rproc tracked_releases ".(++$i)."/".$count. " " . $row["release_id"];
$sql = "INSERT INTO tracked_releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;";
$keys = [];
$kvalues = [];
foreach($row as $k => $value){
if($k === "release_data"){
$row[$k] = base64_decode($value);
}
$keys[] = $k;
$kvalues[] = '$' . (count($kvalues) + 1);
}
pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row);
}
$q->finalize();
pg_query($dbnew, "COMMIT");