package db import ( "database/sql" "os" "scrap/internal/config" "strings" _ "github.com/mattn/go-sqlite3" ) var dbInstance *sql.DB func Setup() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { panic(err) } dbInstance = db tableFilenames := getTableFilenames() createTablesFromSQLFiles(tableFilenames) } func GetInstance() *sql.DB { return dbInstance } func Close() { dbInstance.Close() } func getTableFilenames() []string { appConfig := config.GetAppConfig() files, err := os.ReadDir(appConfig.SqlTablesDir) if err != nil { panic(err) } filenames := []string{} for _, f := range files { fName := f.Name() if !strings.HasSuffix(fName, ".sql") { continue } filenames = append(filenames, fName) } return filenames } func createTablesFromSQLFiles(filenames []string) { appConfig := config.GetAppConfig() for _, fName := range filenames { tableBytes, err := os.ReadFile(appConfig.SqlTablesDir + fName) if err != nil { panic(err) } tableQuery := string(tableBytes) if _, err = dbInstance.Exec(tableQuery); err != nil { panic(err) } } }