Skip to content

Commit fcc948c

Browse files
author
thisisaaronland
committed
better error handling, start blocking out MySQL support
1 parent 5f1c70b commit fcc948c

File tree

4 files changed

+63
-1
lines changed

4 files changed

+63
-1
lines changed

sql/database.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,18 @@ func OpenWithURI(ctx context.Context, db_uri string) (*sql.DB, error) {
4646
engine := u.Host
4747
dsn := q.Get("dsn")
4848

49+
if engine == "" {
50+
return nil, fmt.Errorf("Missing database engine")
51+
}
52+
53+
if dsn == "" {
54+
return nil, fmt.Errorf("Missing DSN string")
55+
}
56+
4957
db, err := sql.Open(engine, dsn)
5058

5159
if err != nil {
52-
return nil, fmt.Errorf("Unable to create database (%s) because %v", db_uri, err)
60+
return nil, fmt.Errorf("Unable to create database (%s) because %v", engine, err)
5361
}
5462

5563
switch Driver(db) {

sql/database_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package sql
2+
3+
import (
4+
_ "context"
5+
"net/url"
6+
"testing"
7+
)
8+
9+
func TestOpenWithURIEngine(t *testing.T) {
10+
11+
tests := map[string]string{
12+
"sql://mysql/?dsn={...}@tcp(sfomuseum-debug.hdhdhhdjs99.us-east-1.rds.amazonaws.com)/sfomueum_debug&tls=true": "mysql",
13+
}
14+
15+
for db_uri, expected := range tests {
16+
17+
u, err := url.Parse(db_uri)
18+
19+
if err != nil {
20+
t.Fatalf("Failed to parse db_uri, %v", err)
21+
}
22+
23+
q := u.Query()
24+
25+
engine := u.Host
26+
dsn := q.Get("dsn")
27+
28+
if engine == "" {
29+
t.Fatal("Missing engine")
30+
}
31+
32+
if dsn == "" {
33+
t.Fatal("Missing dsn")
34+
}
35+
36+
if engine != expected {
37+
t.Fatalf("Invalid engine. Got '%s' but expected '%s'", engine, expected)
38+
}
39+
40+
}
41+
}

sql/driver.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ func Driver(db *sql.DB) string {
3030
return POSTGRES_DRIVER
3131
case "duckdb.Driver", "*duckdb.Driver":
3232
return DUCKDB_DRIVER
33+
case "*mysql.MySQLDriver", "mysql.MySQLDriver":
34+
return MYSQL_DRIVER
3335
default:
3436
slog.Warn("Unhandled driver type", "type", driver_type)
3537
return ""

sql/mysql.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package sql
2+
3+
import (
4+
"context"
5+
"database/sql"
6+
"fmt"
7+
)
8+
9+
func ConfigureMySQLDatabase(ctx context.Context, db *sql.DB, opts *ConfigureDatabaseOptions) error {
10+
return fmt.Errorf("Not implemented.")
11+
}

0 commit comments

Comments
 (0)