import React, { useState, useEffect } from 'react';
import dynamic from 'next/dynamic';
import { stockApi } from '@/lib/api';
import { List, Database as DBIcon, Layers, Calendar } from 'lucide-react';
import Layout from '@/components/Layout';
const DatabaseStats = dynamic(() => import('@/components/DatabaseStats'), {
ssr: false,
loading: () => (
),
});
const DatabasePage: React.FC = () => {
const [tab, setTab] = useState<'stats' | 'etf' | 'financial'>('stats');
const [etf, setEtf] = useState<{loading:boolean; items:any[]; total:number}>({loading:false, items:[], total:0});
const [fin, setFin] = useState<{loading:boolean; items:any[]; total:number}>({loading:false, items:[], total:0});
const loadEtf = async () => {
setEtf(s => ({...s, loading:true}));
try {
const res = await stockApi.getEtfSnapshots({ limit: 25 });
setEtf({loading:false, items:res.results, total:res.count});
} catch {
setEtf({loading:false, items:[], total:0});
}
};
const loadFin = async () => {
setFin(s => ({...s, loading:true}));
try {
const res = await stockApi.getFinancialRecords({ limit: 50 });
setFin({loading:false, items:res.results, total:res.count});
} catch {
setFin({loading:false, items:[], total:0});
}
};
useEffect(() => {
if (tab === 'etf') loadEtf();
if (tab === 'financial') loadFin();
}, [tab]);
return (
{tab==='stats' && }
{tab==='etf' && (
저장된 ETF 스냅샷
{etf.loading ? (
로딩 중...
) : etf.items.length===0 ? (
저장된 스냅샷이 없습니다.
) : (
| Snapshot ID |
Ticker |
Date |
Source |
Holdings |
{etf.items.map((s:any) => (
| {s.id} |
{s.ticker} |
{new Date(s.snapshot_date).toLocaleDateString('ko-KR')} |
{s.source || '-'} |
{s.holdings_count} |
))}
)}
)}
{tab==='financial' && (
저장된 재무 레코드
{fin.loading ? (
로딩 중...
) : fin.items.length===0 ? (
레코드가 없습니다.
) : (
| Ticker |
Period |
Type |
Revenue |
Net Income |
Source |
{fin.items.map((r:any) => (
| {r.ticker} |
{new Date(r.period_date).toLocaleDateString('ko-KR')} |
{r.period_type} |
{r.revenue?.toLocaleString() ?? '-'} |
{r.net_income?.toLocaleString() ?? '-'} |
{r.data_source} |
))}
)}
)}
);
};
export default DatabasePage;