<?php

use Phinx\Db\Adapter\MysqlAdapter;

class TableCreation extends Phinx\Migration\AbstractMigration
{
    public function change()
    {
        $this->table('migrations', [
                'id' => false,
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_general_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
            ])
            ->addColumn('name', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_general_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('executedAt', 'date', [
                'null' => false,
                'after' => 'name',
            ])
            ->create();
        $this->table('config', [
                'id' => false,
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_general_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('version', 'string', [
                'null' => false,
                'limit' => 11,
                'collation' => 'utf8mb4_general_ci',
                'encoding' => 'utf8mb4',
            ])
            ->create();
        $this->table('panels', [
                'id' => false,
                'primary_key' => ['id'],
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
                'identity' => true,
            ])
            ->addColumn('name', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('a', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'name',
            ])
            ->addColumn('aaaa', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'a',
            ])
            ->addColumn('apikey', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'aaaa',
            ])
            ->addColumn('apikey_prefix', 'string', [
                'null' => false,
                'limit' => 8,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'apikey',
            ])
            ->addColumn('self', 'enum', [
                'null' => false,
                'default' => 'no',
                'limit' => 3,
                'values' => ['yes', 'no'],
                'after' => 'apikey_prefix',
            ])
            ->create();
        $this->table('dyndns', [
                'id' => false,
                'primary_key' => ['id'],
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
                'identity' => true,
            ])
            ->addColumn('name', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('a', 'varbinary', [
                'null' => false,
                'limit' => 255,
                'after' => 'name',
            ])
            ->addColumn('aaaa', 'varbinary', [
                'null' => false,
                'limit' => 255,
                'after' => 'a',
            ])
            ->addColumn('last_update', 'timestamp', [
                'null' => false,
                'default' => 'current_timestamp()',
                'update' => 'CURRENT_TIMESTAMP',
                'after' => 'aaaa',
            ])
            ->create();
        $this->table('domains', [
                'id' => false,
                'primary_key' => ['id'],
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
                'identity' => true,
            ])
            ->addColumn('name', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('panel', 'string', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'name',
            ])
            ->create();
        $this->table('apikeys', [
                'id' => false,
                'primary_key' => ['id'],
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
                'identity' => true,
            ])
            ->addColumn('name', 'string', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('apikey_prefix', 'string', [
                'null' => false,
                'limit' => 13,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'name',
            ])
            ->addColumn('apikey', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'apikey_prefix',
            ])
            ->create();
        $this->table('nameservers', [
                'id' => false,
                'primary_key' => ['id'],
                'engine' => 'InnoDB',
                'encoding' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'comment' => '',
                'row_format' => 'DYNAMIC',
            ])
            ->addColumn('id', 'integer', [
                'null' => false,
                'limit' => MysqlAdapter::INT_REGULAR,
                'identity' => true,
            ])
            ->addColumn('name', 'string', [
                'null' => false,
                'limit' => 255,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'id',
            ])
            ->addColumn('a', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'name',
            ])
            ->addColumn('aaaa', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'a',
            ])
            ->addColumn('apikey', 'varbinary', [
                'null' => true,
                'default' => null,
                'limit' => 255,
                'after' => 'aaaa',
            ])
            ->addColumn('apikey_prefix', 'string', [
                'null' => false,
                'limit' => 13,
                'collation' => 'utf8mb4_unicode_ci',
                'encoding' => 'utf8mb4',
                'after' => 'apikey',
            ])
            ->create();
    }
}
