Files
nexusphp/app/Models/Peer.php

82 lines
1.9 KiB
PHP
Raw Normal View History

2021-05-15 19:29:44 +08:00
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
2022-03-17 18:46:49 +08:00
use Illuminate\Support\Facades\Cache;
2021-05-15 19:29:44 +08:00
class Peer extends NexusModel
{
2022-03-17 18:46:49 +08:00
protected $fillable = [
'torrent', 'peer_id', 'ip', 'port', 'uploaded', 'downloaded', 'to_go', 'seeder', 'started', 'last_action',
'prev_action', 'connectable', 'userid', 'agent', 'finishedat', 'downloadoffset', 'uploadedoffset', 'passkey',
2022-09-12 20:00:07 +08:00
'ipv4', 'ipv6', 'is_seed_box'
2022-03-17 18:46:49 +08:00
];
2021-05-15 19:29:44 +08:00
const CONNECTABLE_YES = 'yes';
const CONNECTABLE_NO = 'no';
protected $casts = [
'started' => 'datetime',
'last_action' => 'datetime',
'prev_action' => 'datetime',
2022-04-01 23:13:42 +08:00
'finishedat' => 'datetime:U',
2021-05-15 19:29:44 +08:00
];
public static $connectableText = [
self::CONNECTABLE_YES => '是',
self::CONNECTABLE_NO => '否',
];
const SEEDER_YES = 'yes';
const SEEDER_NO = 'no';
public static $cardTitles = [
'upload_text' => '上传',
'download_text' => '下载',
'share_ratio' => '分享率',
'agent_human' => '客户端',
'connect_time_total' => '连接时间',
'download_progress' => '完成进度',
];
public function getConnectableTextAttribute()
{
return self::$connectableText[$this->connectable] ?? '';
}
public function scopeIsSeeder(Builder $builder)
{
return $builder->where('seeder', self::SEEDER_YES);
}
public function scopeIsNotSeeder(Builder $builder)
{
return $builder->where('seeder', self::SEEDER_NO);
}
public function isSeeder()
{
return $this->seeder == self::SEEDER_YES;
}
public function isNotSeeder()
{
return $this->seeder == self::SEEDER_NO;
}
public function user()
{
return $this->belongsTo(User::class, 'userid');
}
public function relative_torrent()
{
return $this->belongsTo(Torrent::class, 'torrent');
}
}