56 lines
1.3 KiB
PHP
56 lines
1.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace OCA\GPodderSync\Migration;
|
|
|
|
use OCP\IDBConnection;
|
|
use OCP\Migration\IOutput;
|
|
use DateTime;
|
|
|
|
class TimestampMigration implements \OCP\Migration\IRepairStep
|
|
{
|
|
private IDBConnection $db;
|
|
|
|
public function __construct(IDBConnection $db)
|
|
{
|
|
$this->db = $db;
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function getName(): string
|
|
{
|
|
return "Migrate timestamp values to integer to store unix epoch";
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function run(IOutput $output)
|
|
{
|
|
$queryTimestamps =
|
|
"SELECT id, timestamp FROM `*PREFIX*gpodder_episode_action` WHERE timestamp_epoch = 0";
|
|
$timestamps = $this->db->executeQuery($queryTimestamps)->fetchAll();
|
|
|
|
$result = 0;
|
|
|
|
foreach ($timestamps as $timestamp) {
|
|
$timestampEpoch = (new DateTime($timestamp["timestamp"]))->format(
|
|
"U"
|
|
);
|
|
$sql =
|
|
"UPDATE `*PREFIX*gpodder_episode_action` " .
|
|
"SET `timestamp_epoch` = " .
|
|
$timestampEpoch .
|
|
" " .
|
|
"WHERE `id` = " .
|
|
$timestamp["id"];
|
|
|
|
$result += $this->db->executeUpdate($sql);
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
}
|