feat: save ai usage

This commit is contained in:
2026-05-24 11:12:04 +02:00
parent 24ec4165a6
commit 8715267361
11 changed files with 629 additions and 40 deletions
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace App\Models;
use App\Enums\AiUsageStatus;
use App\Enums\AiUsageType;
use Illuminate\Database\Eloquent\Concerns\HasUlids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class AiUsage extends Model
{
/** @use HasFactory<\Database\Factories\AiUsageFactory> */
use HasFactory, HasUlids;
protected $fillable = [
'user_id',
'type',
'status',
'input',
'output',
'provider',
'model',
'prompt_tokens',
'completion_tokens',
'total_tokens',
'error_message',
'related_type',
'related_id',
];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function related(): MorphTo
{
return $this->morphTo();
}
protected function casts(): array
{
return [
'type' => AiUsageType::class,
'status' => AiUsageStatus::class,
'input' => 'array',
'output' => 'array',
'prompt_tokens' => 'integer',
'completion_tokens' => 'integer',
'total_tokens' => 'integer',
];
}
}
+8 -2
View File
@@ -25,7 +25,7 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Storage;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable implements FilamentUser, HasLocalePreference, MustVerifyEmail, HasAvatar
class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocalePreference, MustVerifyEmail
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasApiTokens, HasFactory, HasUlids, Notifiable, SoftDeletes;
@@ -97,8 +97,9 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
public function getFilamentAvatarUrl(): ?string
{
return Storage::url($this->avatar_url);
return Storage::url($this->avatar_url);
}
public function deviceTokens(): HasMany
{
return $this->hasMany(DeviceToken::class);
@@ -109,6 +110,11 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
return $this->hasMany(MealPosts::class);
}
public function aiUsages(): HasMany
{
return $this->hasMany(AiUsage::class);
}
public function workouts(): HasMany
{
return $this->hasMany(WorkoutSessions::class);