Files
scrap/internal/db/setup.go
2025-10-04 15:11:20 +02:00

66 lines
1.1 KiB
Go

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)
}
}
}