mirror of
https://github.com/lkddi/Xboard.git
synced 2026-04-22 10:17:23 +08:00
66 lines
1.6 KiB
PHP
66 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Support\Str;
|
|
|
|
/**
|
|
* App\Models\ServerMachine
|
|
*
|
|
* @property int $id
|
|
* @property string $name 机器名称
|
|
* @property string $token 认证 Token
|
|
* @property string|null $notes 备注
|
|
* @property bool $is_active 是否启用
|
|
* @property int|null $last_seen_at 最后心跳时间
|
|
* @property array|null $load_status 负载状态
|
|
* @property \Illuminate\Support\Carbon $created_at
|
|
* @property \Illuminate\Support\Carbon $updated_at
|
|
*
|
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, Server> $servers 关联的节点
|
|
*/
|
|
class ServerMachine extends Model
|
|
{
|
|
protected $table = 'v2_server_machine';
|
|
|
|
protected $guarded = ['id'];
|
|
|
|
protected $casts = [
|
|
'is_active' => 'boolean',
|
|
'last_seen_at' => 'integer',
|
|
'load_status' => 'array',
|
|
'created_at' => 'timestamp',
|
|
'updated_at' => 'timestamp',
|
|
];
|
|
|
|
protected $hidden = ['token'];
|
|
|
|
public function servers(): HasMany
|
|
{
|
|
return $this->hasMany(Server::class, 'machine_id');
|
|
}
|
|
|
|
public function loadHistory(): HasMany
|
|
{
|
|
return $this->hasMany(ServerMachineLoadHistory::class, 'machine_id');
|
|
}
|
|
|
|
/**
|
|
* 生成新的随机 Token
|
|
*/
|
|
public static function generateToken(): string
|
|
{
|
|
return Str::random(32);
|
|
}
|
|
|
|
/**
|
|
* 更新最后心跳时间
|
|
*/
|
|
public function updateHeartbeat(): bool
|
|
{
|
|
return $this->forceFill(['last_seen_at' => now()->timestamp])->save();
|
|
}
|
|
}
|