init go project

This commit is contained in:
juancwu 2025-10-10 08:14:33 -04:00
commit 5dde43e409
85 changed files with 16720 additions and 0 deletions

48
internal/db/db.go Normal file
View file

@ -0,0 +1,48 @@
package db
import (
"fmt"
"log/slog"
"os"
"path/filepath"
"time"
_ "github.com/jackc/pgx/v5/stdlib"
"github.com/jmoiron/sqlx"
_ "modernc.org/sqlite"
)
func Init(driver, connection string) (*sqlx.DB, error) {
if driver == "sqlite" {
dir := filepath.Dir(connection)
err := os.MkdirAll(dir, 0755)
if err != nil {
return nil, fmt.Errorf("failed to create data directory: %w", err)
}
}
db, err := sqlx.Connect(driver, connection)
if err != nil {
return nil, fmt.Errorf("failed to connect: %w", err)
}
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(5)
db.SetConnMaxLifetime(5 * time.Minute)
slog.Info("database connected", "driver", driver)
err = db.Ping()
if err != nil {
return nil, fmt.Errorf("failed to ping database: %w", err)
}
return db, nil
}
func Close(db *sqlx.DB) error {
if db != nil {
return db.Close()
}
return nil
}