import streamlit as st
import os
import sys
# Ensure current directory is in sys.path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
st.set_page_config(page_title="Shamela4 SQLite Ingest", layout="centered", page_icon="⚙️")
st.title("⚙️ Shamela4 SQLite Ingest")
st.markdown("
", unsafe_allow_html=True)
st.info("Aplikasi ini secara khusus digunakan untuk mengambil data (ingest) metadata kitab dari HuggingFace dan mengubahnya menjadi format dump database SQLite (.sql). Seluruh proses ini tidak memerlukan koneksi ke PostgreSQL.", icon="ℹ️")
st.markdown("
", unsafe_allow_html=True)
st.markdown("### 💾 Ekspor Skema & Metadata (SQLite)")
st.write("Unduh skema lengkap database (termasuk struktur tabel `pages`, `toc` dll yang kosong) beserta *insert data* untuk metadata (`authors`, `categories`, `books`).")
st.markdown("---")
col_btn1, col_btn2 = st.columns(2)
with col_btn1:
if st.button("🔄 Generate Ulang File SQL", use_container_width=True):
with st.spinner("Sedang men-generate file metadata_dump.sql dari HuggingFace... (Ini bisa memakan waktu beberapa saat)"):
try:
from create_sqlite_dump import generate_sqlite_dump
generate_sqlite_dump()
st.success("File berhasil diperbarui!")
except Exception as e:
st.error(f"Terjadi kesalahan: {e}")
with col_btn2:
if os.path.exists("metadata_dump.sql"):
with open("metadata_dump.sql", "r", encoding="utf-8") as f:
sql_data = f.read()
st.download_button(
label="⬇️ Download metadata_dump.sql",
data=sql_data,
file_name="metadata_dump.sql",
mime="application/sql",
type="primary",
use_container_width=True
)
else:
st.button("🚫 File belum tersedia", disabled=True, use_container_width=True)