Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
TelemetrySession
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
4 / 4
4
100.00% covered (success)
100.00%
1 / 1
 casts
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 metrics
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 events
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 groupedSessions
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Models;
4
5use Illuminate\Database\Eloquent\Concerns\HasUlids;
6use Illuminate\Database\Eloquent\Model;
7use Illuminate\Database\Eloquent\Relations\HasMany;
8
9class TelemetrySession extends Model
10{
11    use HasUlids;
12
13    public $timestamps = false;
14
15    protected $fillable = [
16        'session_id',
17        'session_group_id',
18        'user_email',
19        'user_id',
20        'account_uuid',
21        'organization_id',
22        'app_version',
23        'terminal_type',
24        'project_name',
25        'billing_model',
26        'hostname',
27        'first_seen_at',
28        'last_seen_at',
29    ];
30
31    protected function casts(): array
32    {
33        return [
34            'first_seen_at' => 'datetime',
35            'last_seen_at' => 'datetime',
36        ];
37    }
38
39    public function metrics(): HasMany
40    {
41        return $this->hasMany(TelemetryMetric::class, 'session_id', 'session_id');
42    }
43
44    public function events(): HasMany
45    {
46        return $this->hasMany(TelemetryEvent::class, 'session_id', 'session_id');
47    }
48
49    public function groupedSessions(): HasMany
50    {
51        return $this->hasMany(self::class, 'session_group_id', 'session_group_id');
52    }
53}