debug
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
use think\migration\Migrator;
|
||||
use think\migration\db\Column;
|
||||
|
||||
class CreateServerNodeTable extends Migrator
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
if (!$this->hasTable('server_node')) {
|
||||
$this->table('server_node', ['id' => false])
|
||||
->addColumn(Column::integer('sn_id')->setUnsigned()->setIdentity(true)->setComment('节点ID'))
|
||||
->addColumn(Column::string('sn_name', 255)->setDefault('')->setComment('节点名称'))
|
||||
->addColumn(Column::string('sn_code', 100)->setNullable(true)->setComment('节点编码'))
|
||||
->addColumn(Column::string('sn_host', 255)->setDefault('')->setComment('SSH 主机/IP'))
|
||||
->addColumn(Column::smallInteger('sn_port')->setUnsigned()->setDefault(22)->setComment('SSH 端口'))
|
||||
->addColumn(Column::string('sn_username', 100)->setDefault('')->setComment('SSH 用户名'))
|
||||
->addColumn(Column::string('sn_auth_type', 20)->setDefault('password')->setComment('认证方式: password/private_key'))
|
||||
->addColumn(Column::text('sn_password')->setNullable(true)->setComment('SSH 密码'))
|
||||
->addColumn(Column::mediumText('sn_private_key')->setNullable(true)->setComment('SSH 私钥'))
|
||||
->addColumn(Column::text('sn_passphrase')->setNullable(true)->setComment('私钥口令'))
|
||||
->addColumn(Column::string('sn_region', 100)->setNullable(true)->setComment('区域/环境'))
|
||||
->addColumn(Column::string('sn_purpose', 255)->setNullable(true)->setComment('机器用途'))
|
||||
->addColumn(Column::string('sn_project_dir', 500)->setNullable(true)->setComment('项目目录'))
|
||||
->addColumn(Column::string('sn_log_dir', 500)->setNullable(true)->setComment('日志目录'))
|
||||
->addColumn(Column::string('sn_nginx_dir', 500)->setNullable(true)->setComment('Nginx 配置目录'))
|
||||
->addColumn(Column::text('sn_note')->setNullable(true)->setComment('备注'))
|
||||
->addColumn(Column::tinyInteger('sn_status')->setUnsigned()->setDefault(1)->setComment('状态:1启用,0禁用'))
|
||||
->addTimestamps('created_at', 'updated_at')
|
||||
->addIndex(['sn_id'], ['type' => 'primary'])
|
||||
->addIndex(['sn_code'], ['unique' => true])
|
||||
->addIndex(['sn_status'])
|
||||
->addIndex(['sn_host'])
|
||||
->setComment('前端服务器节点')
|
||||
->create();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$Table = $this->table('server_node');
|
||||
|
||||
$this->addColumnIfMissing($Table, 'sn_name', Column::string('sn_name', 255)->setDefault('')->setComment('节点名称'));
|
||||
$this->addColumnIfMissing($Table, 'sn_code', Column::string('sn_code', 100)->setNullable(true)->setComment('节点编码'));
|
||||
$this->addColumnIfMissing($Table, 'sn_host', Column::string('sn_host', 255)->setDefault('')->setComment('SSH 主机/IP'));
|
||||
$this->addColumnIfMissing($Table, 'sn_port', Column::smallInteger('sn_port')->setUnsigned()->setDefault(22)->setComment('SSH 端口'));
|
||||
$this->addColumnIfMissing($Table, 'sn_username', Column::string('sn_username', 100)->setDefault('')->setComment('SSH 用户名'));
|
||||
$this->addColumnIfMissing($Table, 'sn_auth_type', Column::string('sn_auth_type', 20)->setDefault('password')->setComment('认证方式: password/private_key'));
|
||||
$this->addColumnIfMissing($Table, 'sn_password', Column::text('sn_password')->setNullable(true)->setComment('SSH 密码'));
|
||||
$this->addColumnIfMissing($Table, 'sn_private_key', Column::mediumText('sn_private_key')->setNullable(true)->setComment('SSH 私钥'));
|
||||
$this->addColumnIfMissing($Table, 'sn_passphrase', Column::text('sn_passphrase')->setNullable(true)->setComment('私钥口令'));
|
||||
$this->addColumnIfMissing($Table, 'sn_region', Column::string('sn_region', 100)->setNullable(true)->setComment('区域/环境'));
|
||||
$this->addColumnIfMissing($Table, 'sn_purpose', Column::string('sn_purpose', 255)->setNullable(true)->setComment('机器用途'));
|
||||
$this->addColumnIfMissing($Table, 'sn_project_dir', Column::string('sn_project_dir', 500)->setNullable(true)->setComment('项目目录'));
|
||||
$this->addColumnIfMissing($Table, 'sn_log_dir', Column::string('sn_log_dir', 500)->setNullable(true)->setComment('日志目录'));
|
||||
$this->addColumnIfMissing($Table, 'sn_nginx_dir', Column::string('sn_nginx_dir', 500)->setNullable(true)->setComment('Nginx 配置目录'));
|
||||
$this->addColumnIfMissing($Table, 'sn_note', Column::text('sn_note')->setNullable(true)->setComment('备注'));
|
||||
$this->addColumnIfMissing($Table, 'sn_status', Column::tinyInteger('sn_status')->setUnsigned()->setDefault(1)->setComment('状态:1启用,0禁用'));
|
||||
$this->addColumnIfMissing($Table, 'created_at', Column::timestamp('created_at')->setDefault('CURRENT_TIMESTAMP'));
|
||||
$this->addColumnIfMissing($Table, 'updated_at', Column::timestamp('updated_at')->setDefault('CURRENT_TIMESTAMP')->setUpdate('CURRENT_TIMESTAMP'));
|
||||
|
||||
$this->addIndexIfMissing($Table, ['sn_code'], ['unique' => true]);
|
||||
$this->addIndexIfMissing($Table, ['sn_status']);
|
||||
$this->addIndexIfMissing($Table, ['sn_host']);
|
||||
|
||||
$Table->update();
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
if ($this->hasTable('server_node')) {
|
||||
$this->table('server_node')->drop()->save();
|
||||
}
|
||||
}
|
||||
|
||||
protected function addColumnIfMissing($table, string $columnName, Column $column): void
|
||||
{
|
||||
if (!$table->hasColumn($columnName)) {
|
||||
$table->addColumn($column);
|
||||
}
|
||||
}
|
||||
|
||||
protected function addIndexIfMissing($table, array $columns, array $options = []): void
|
||||
{
|
||||
if (!$table->hasIndex($columns)) {
|
||||
$table->addIndex($columns, $options);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user