feat: add user information display in extractions table and update extraction retrieval method

This commit is contained in:
JSC
2025-08-17 01:44:38 +02:00
parent ed888dd8d1
commit 04401092bb
4 changed files with 41 additions and 4 deletions

View File

@@ -9,7 +9,8 @@ import {
CheckCircle, CheckCircle,
Clock, Clock,
ExternalLink, ExternalLink,
Loader2 Loader2,
User
} from 'lucide-react' } from 'lucide-react'
interface ExtractionsRowProps { interface ExtractionsRowProps {
@@ -88,6 +89,14 @@ export function ExtractionsRow({ extraction }: ExtractionsRowProps) {
<TableCell className="text-center"> <TableCell className="text-center">
{getServiceBadge(extraction.service)} {getServiceBadge(extraction.service)}
</TableCell> </TableCell>
<TableCell>
<div className="flex items-center gap-2">
<User className="h-4 w-4 text-muted-foreground" />
<span className="font-medium">
{extraction.user_name || 'Unknown'}
</span>
</div>
</TableCell>
<TableCell> <TableCell>
<div className="space-y-1"> <div className="space-y-1">
{getStatusBadge(extraction.status)} {getStatusBadge(extraction.status)}

View File

@@ -20,6 +20,7 @@ export function ExtractionsTable({ extractions }: ExtractionsTableProps) {
<TableRow> <TableRow>
<TableHead>Title</TableHead> <TableHead>Title</TableHead>
<TableHead className="text-center">Service</TableHead> <TableHead className="text-center">Service</TableHead>
<TableHead>User</TableHead>
<TableHead>Status</TableHead> <TableHead>Status</TableHead>
<TableHead>Created</TableHead> <TableHead>Created</TableHead>
<TableHead className="text-center">Actions</TableHead> <TableHead className="text-center">Actions</TableHead>

View File

@@ -9,6 +9,7 @@ export interface ExtractionInfo {
service_id?: string service_id?: string
sound_id?: number sound_id?: number
user_id: number user_id: number
user_name?: string
error?: string error?: string
created_at: string created_at: string
updated_at: string updated_at: string
@@ -56,9 +57,9 @@ export class ExtractionsService {
} }
/** /**
* Get user's extractions * Get all extractions
*/ */
async getUserExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> { async getAllExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
const searchParams = new URLSearchParams() const searchParams = new URLSearchParams()
if (params?.search) { if (params?.search) {
@@ -80,6 +81,32 @@ export class ExtractionsService {
const response = await apiClient.get<GetExtractionsResponse>(url) const response = await apiClient.get<GetExtractionsResponse>(url)
return response.extractions return response.extractions
} }
/**
* Get user's extractions
*/
async getUserExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
const searchParams = new URLSearchParams()
if (params?.search) {
searchParams.append('search', params.search)
}
if (params?.sort_by) {
searchParams.append('sort_by', params.sort_by)
}
if (params?.sort_order) {
searchParams.append('sort_order', params.sort_order)
}
if (params?.status_filter) {
searchParams.append('status_filter', params.status_filter)
}
const queryString = searchParams.toString()
const url = queryString ? `/api/v1/extractions/user?${queryString}` : '/api/v1/extractions/user'
const response = await apiClient.get<GetExtractionsResponse>(url)
return response.extractions
}
} }
export const extractionsService = new ExtractionsService() export const extractionsService = new ExtractionsService()

View File

@@ -48,7 +48,7 @@ export function ExtractionsPage() {
try { try {
setLoading(true) setLoading(true)
setError(null) setError(null)
const data = await extractionsService.getUserExtractions({ const data = await extractionsService.getAllExtractions({
search: debouncedSearchQuery.trim() || undefined, search: debouncedSearchQuery.trim() || undefined,
sort_by: sortBy, sort_by: sortBy,
sort_order: sortOrder, sort_order: sortOrder,