51 lines
1.1 KiB
PHP
51 lines
1.1 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace OCA\GPodderSync\Migration;
|
|
|
|
use OCP\IDBConnection;
|
|
use OCP\Migration\IOutput;
|
|
use Safe\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;
|
|
}
|
|
|
|
}
|