package database import ( "context" "database/sql" "fmt" "log/slog" "entgo.io/ent/dialect" entsql "entgo.io/ent/dialect/sql" _ "github.com/lib/pq" "tangled.sh/seiso.moe/aletheia.directory/ent" ) func NewClient(dbURL string, logger *slog.Logger) (*ent.Client, error) { db, err := sql.Open("postgres", dbURL) if err != nil { return nil, fmt.Errorf("failed to open database connection: %w", err) } if err := db.Ping(); err != nil { return nil, fmt.Errorf("failed to ping database: %w", err) } drv := entsql.OpenDB(dialect.Postgres, db) client := ent.NewClient(ent.Driver(drv)) if err := client.Schema.Create(context.Background()); err != nil { return nil, fmt.Errorf("failed to create schema: %w", err) } logger.Info("database connection established and schema created") return client, nil }