nextcloud-gpodder/lib/Migration/TimestampMigration.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;
}
}