Skip to content

Commit c3d9eb1

Browse files
committed
feat(config): projectID from connection string's hostname as config property
1 parent 3726525 commit c3d9eb1

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

connection.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
type SQCloudConfig struct {
3535
Host string
3636
Port int
37+
ProjectID string // ProjectID to identify the user's node
3738
Username string
3839
Password string
3940
Database string
@@ -141,6 +142,12 @@ func ParseConnectionString(ConnectionString string) (config *SQCloudConfig, err
141142
}
142143
}
143144

145+
// eg: project ID "abvqqetyhq" in "abvqqetyhq.global3.ryujaz.sqlite.cloud"
146+
config.ProjectID = strings.Split(config.Host, ".")[0]
147+
if config.ProjectID == "" {
148+
return nil, fmt.Errorf("invalid connection string: missing project ID in host")
149+
}
150+
144151
for key, values := range u.Query() {
145152
lastLiteral := strings.TrimSpace(values[len(values)-1])
146153
switch strings.ToLower(strings.TrimSpace(key)) {

test/unit/connection_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import (
1111
)
1212

1313
func TestParseConnectionString(t *testing.T) {
14-
connectionString := "sqlitecloud://myhost.sqlite.cloud:8860/mydatabase?timeout=11&compress=yes"
14+
connectionString := "sqlitecloud://myproject.sqlite.cloud:8860/mydatabase?timeout=11&compress=yes"
1515

1616
expectedConfig := &sqlitecloud.SQCloudConfig{
17-
Host: "myhost.sqlite.cloud",
17+
Host: "myproject.sqlite.cloud",
1818
Port: 8860,
19+
ProjectID: "myproject",
1920
Username: "",
2021
Password: "",
2122
Database: "mydatabase",

0 commit comments

Comments
 (0)