package sqliteutil
import (
"database/sql"
"fmt"
"os"
_ "modernc.org/sqlite"
"github.com/moond4rk/hackbrowserdata/log"
)
func QuerySQLite(dbPath string, journalOff bool, query string, scanFn func(*sql.Rows) error) error {
if _, err := os.Stat(dbPath); err != nil {
return fmt.Errorf("database file: %w", err)
}
db, err := sql.Open("sqlite", dbPath)
if err != nil {
return err
}
defer db.Close()
if journalOff {
if _, err := db.Exec("PRAGMA journal_mode=off"); err != nil {
return err
}
}
rows, err := db.Query(query)
if err != nil {
return err
}
defer rows.Close()
for rows.Next() {
if err := scanFn(rows); err != nil {
log.Debugf("scan row error: %v", err)
continue
}
}
return rows.Err()
}