Stuff i guess ?

This commit is contained in:
Lars Behrends
2025-10-31 00:24:17 +01:00
parent db0fd4e728
commit 04140786a7
40 changed files with 5411 additions and 525 deletions

View File

@@ -25,7 +25,7 @@ class AdultVideo extends Model
'external_id'
];
public static function getAllWithPagination(\PDO $pdo, int $page, int $perPage, string $search = '', array $genres = [], array $directors = []): array
public static function getAllWithPagination(\PDO $pdo, int $page, int $perPage, string $search = '', array $genres = [], array $directors = [], string $sort = 'recent'): array
{
$offset = ($page - 1) * $perPage;
@@ -61,7 +61,24 @@ class AdultVideo extends Model
$sql .= $whereClause . " av.director IN (" . implode(',', $placeholders) . ")";
}
$sql .= " ORDER BY av.created_at DESC LIMIT :limit OFFSET :offset";
// Add sorting
$sortOptions = [
'recent' => 'av.created_at DESC',
'oldest' => 'av.created_at ASC',
'title_asc' => 'av.title ASC',
'title_desc' => 'av.title DESC',
'year_asc' => 'av.release_date ASC',
'year_desc' => 'av.release_date DESC',
'rating_asc' => 'av.rating ASC',
'rating_desc' => 'av.rating DESC',
'views_asc' => 'av.watch_count ASC',
'views_desc' => 'av.watch_count DESC',
'runtime_asc' => 'av.runtime_minutes ASC',
'runtime_desc' => 'av.runtime_minutes DESC',
];
$sortOrder = $sortOptions[$sort] ?? $sortOptions['recent'];
$sql .= " ORDER BY " . $sortOrder . " LIMIT :limit OFFSET :offset";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':limit', $perPage, \PDO::PARAM_INT);
@@ -143,7 +160,7 @@ class AdultVideo extends Model
/**
* Get all actors associated with this adult video
*/
public function actors()
public function actors($args)
{
$stmt = $this->pdo->prepare("
SELECT a.*
@@ -152,7 +169,7 @@ class AdultVideo extends Model
WHERE aav.adult_video_id = :adult_video_id
ORDER BY a.name ASC
");
$stmt->execute(['adult_video_id' => $this->id]);
$stmt->execute(['adult_video_id' => $args]);
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
@@ -200,21 +217,6 @@ class AdultVideo extends Model
]);
}
/**
* Get TV show statistics
*/
public static function getStats(\PDO $pdo): array
{
$stmt = $pdo->query("
SELECT
COUNT(*) as total_adult_videos,
COUNT(CASE WHEN is_favorite = 1 THEN 1 END) as favorite_adult_videos,
AVG(rating) as avg_rating
FROM adult_videos
");
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
/**
* Get available genres for filtering
*/
@@ -242,4 +244,36 @@ class AdultVideo extends Model
");
return $stmt->fetchAll(\PDO::FETCH_COLUMN);
}
/**
* Get TV show statistics
*/
public static function getStats(\PDO $pdo): array
{
$stmt = $pdo->query("
SELECT
COUNT(*) as total_adult_videos,
COUNT(CASE WHEN is_favorite = 1 THEN 1 END) as favorite_adult_videos,
AVG(rating) as avg_rating
FROM adult_videos
");
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
/**
* Search actors by name
*/
public static function searchActors(\PDO $pdo, string $query): array
{
$stmt = $pdo->prepare("
SELECT a.*
FROM actors a
WHERE a.name LIKE :query
ORDER BY a.name
LIMIT 10
");
$stmt->execute(['query' => "%{$query}%"]);
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
}