<?php

/**
 * config 表在初始 install 中未含 create_time/update_time，而 Config 模型开启自动时间戳，
 * Version205 等迁移使用 Model::save() 会生成对 update_time 的 UPDATE，导致 1054 错误。
 * 本迁移在 Version205 之前执行，补齐字段。
 */
use Phinx\Migration\AbstractMigration;

class AddConfigTimestamps extends AbstractMigration
{
    public function up(): void
    {
        if (!$this->hasTable('config')) {
            return;
        }
        $config = $this->table('config');
        if (!$config->hasColumn('update_time')) {
            $config->addColumn('update_time', 'biginteger', [
                'limit'   => 16,
                'signed'  => false,
                'null'    => true,
                'default' => null,
                'comment' => '更新时间',
                'after'   => 'weigh',
            ])->save();
        }
        $config = $this->table('config');
        if (!$config->hasColumn('create_time')) {
            $config->addColumn('create_time', 'biginteger', [
                'limit'   => 16,
                'signed'  => false,
                'null'    => true,
                'default' => null,
                'comment' => '创建时间',
                'after'   => 'update_time',
            ])->save();
        }
    }

    public function down(): void
    {
        if (!$this->hasTable('config')) {
            return;
        }
        $config = $this->table('config');
        if ($config->hasColumn('create_time')) {
            $config->removeColumn('create_time')->save();
        }
        $config = $this->table('config');
        if ($config->hasColumn('update_time')) {
            $config->removeColumn('update_time')->save();
        }
    }
}
