insighthub-backend / app /api /datasets.py
im1d's picture
initial deploy
72d2ab9
"""
Endpoints لاستعراض الـ datasets المتاحة.
GET /api/v1/datasets - قائمة الـ datasets (للـ Frontend dropdown)
GET /api/v1/datasets/{id} - تفاصيل dataset واحد
"""
from __future__ import annotations
from typing import Any, Dict, List
from fastapi import APIRouter, HTTPException
from app.datasets.registry import get_dataset, list_datasets
router = APIRouter()
def _serialize(meta) -> Dict[str, Any]:
return {
"id": meta.id,
"name": meta.name,
"name_ar": meta.name_ar,
"domain": meta.domain.value,
"source": meta.source.value,
"size_estimate_rows": meta.size_estimate_rows,
"has_timestamp": meta.has_timestamp,
"has_user_metadata": meta.has_user_metadata,
"has_engagement": meta.has_engagement,
"language": meta.language,
"license": meta.license,
"description_ar": meta.description_ar,
"homepage": meta.homepage,
}
@router.get("")
def list_all() -> List[Dict[str, Any]]:
return [_serialize(m) for m in list_datasets()]
@router.get("/{dataset_id}")
def get_one(dataset_id: str) -> Dict[str, Any]:
meta = get_dataset(dataset_id)
if meta is None:
raise HTTPException(status_code=404, detail="Dataset not found")
return _serialize(meta)