Files
neckfireandClaude Opus 4.8 af32669931
Build & Deploy / build (push) Successful in 18s
StreakFit — API Laravel 13 OSDD + Octane/FrankenPHP
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 03:00:17 +02:00

66 lines
1.9 KiB
PHP

<?php
namespace Functional\Tracking\Database\Factories;
use Functional\Exercises\Models\Exercise;
use Functional\Tracking\Models\SetLog;
use Functional\Tracking\Models\WorkoutSession;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends Factory<SetLog>
*/
class SetLogFactory extends Factory
{
protected $model = SetLog::class;
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'workout_session_id' => WorkoutSession::factory(),
'exercise_id' => Exercise::factory(),
'set_number' => fake()->numberBetween(1, 5),
'reps' => fake()->numberBetween(4, 15),
'weight' => fake()->randomFloat(2, 5, 150),
'rpe' => fake()->randomFloat(1, 6, 10),
'duration_seconds' => null,
'distance_meters' => null,
'is_warmup' => false,
'is_completed' => true,
'logged_at' => fake()->dateTimeBetween('-2 months', 'now'),
];
}
/** Série d'échauffement, plus légère. */
public function warmup(): static
{
return $this->state(fn (array $attributes) => [
'is_warmup' => true,
'weight' => fake()->randomFloat(2, 5, 40),
]);
}
/** Série démarrée mais non terminée par l'utilisateur. */
public function incomplete(): static
{
return $this->state(fn (array $attributes) => [
'is_completed' => false,
]);
}
/** Série cardio (course, rameur...) : durée/distance plutôt que reps/poids. */
public function cardio(): static
{
return $this->state(fn (array $attributes) => [
'reps' => null,
'weight' => null,
'rpe' => null,
'duration_seconds' => fake()->numberBetween(60, 3600),
'distance_meters' => fake()->randomFloat(2, 200, 10000),
]);
}
}