Skip to content

Commit

Permalink
include replica connection info, clusters + pools
Browse files Browse the repository at this point in the history
  • Loading branch information
dwilsondo committed Jan 19, 2024
1 parent c154e94 commit 8f346e5
Show file tree
Hide file tree
Showing 2 changed files with 211 additions and 27 deletions.
54 changes: 29 additions & 25 deletions databases.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,24 +170,26 @@ var _ DatabasesService = &DatabasesServiceOp{}
// "pg", "mysql" or "redis". A Database also includes connection information and other
// properties of the service like region, size and current status.
type Database struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
EngineSlug string `json:"engine,omitempty"`
VersionSlug string `json:"version,omitempty"`
Connection *DatabaseConnection `json:"connection,omitempty"`
PrivateConnection *DatabaseConnection `json:"private_connection,omitempty"`
Users []DatabaseUser `json:"users,omitempty"`
NumNodes int `json:"num_nodes,omitempty"`
SizeSlug string `json:"size,omitempty"`
DBNames []string `json:"db_names,omitempty"`
RegionSlug string `json:"region,omitempty"`
Status string `json:"status,omitempty"`
MaintenanceWindow *DatabaseMaintenanceWindow `json:"maintenance_window,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
PrivateNetworkUUID string `json:"private_network_uuid,omitempty"`
Tags []string `json:"tags,omitempty"`
ProjectID string `json:"project_id,omitempty"`
StorageSizeMib uint64 `json:"storage_size_mib,omitempty"`
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
EngineSlug string `json:"engine,omitempty"`
VersionSlug string `json:"version,omitempty"`
Connection *DatabaseConnection `json:"connection,omitempty"`
PrivateConnection *DatabaseConnection `json:"private_connection,omitempty"`
StandbyConnection *DatabaseConnection `json:"standby_connection,omitempty"`
StandbyPrivateConnection *DatabaseConnection `json:"standby_private_connection,omitempty"`
Users []DatabaseUser `json:"users,omitempty"`
NumNodes int `json:"num_nodes,omitempty"`
SizeSlug string `json:"size,omitempty"`
DBNames []string `json:"db_names,omitempty"`
RegionSlug string `json:"region,omitempty"`
Status string `json:"status,omitempty"`
MaintenanceWindow *DatabaseMaintenanceWindow `json:"maintenance_window,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
PrivateNetworkUUID string `json:"private_network_uuid,omitempty"`
Tags []string `json:"tags,omitempty"`
ProjectID string `json:"project_id,omitempty"`
StorageSizeMib uint64 `json:"storage_size_mib,omitempty"`
}

// DatabaseCA represents a database ca.
Expand Down Expand Up @@ -381,13 +383,15 @@ type DatabaseReplica struct {

// DatabasePool represents a database connection pool
type DatabasePool struct {
User string `json:"user"`
Name string `json:"name"`
Size int `json:"size"`
Database string `json:"db"`
Mode string `json:"mode"`
Connection *DatabaseConnection `json:"connection"`
PrivateConnection *DatabaseConnection `json:"private_connection,omitempty"`
User string `json:"user"`
Name string `json:"name"`
Size int `json:"size"`
Database string `json:"db"`
Mode string `json:"mode"`
Connection *DatabaseConnection `json:"connection"`
PrivateConnection *DatabaseConnection `json:"private_connection,omitempty"`
StandbyConnection *DatabaseConnection `json:"standby_connection,omitempty"`
StandbyPrivateConnection *DatabaseConnection `json:"standby_private_connection,omitempty"`
}

// DatabaseCreatePoolRequest is used to create a new database connection pool
Expand Down
184 changes: 182 additions & 2 deletions databases_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@ var db = Database{
Password: "zt91mum075ofzyww",
SSL: true,
},
StandbyConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Host: "replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
Port: 25060,
User: "doadmin",
Password: "zt91mum075ofzyww",
SSL: true,
},
PrivateConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@private-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Expand All @@ -36,6 +45,15 @@ var db = Database{
Password: "zt91mum075ofzyww",
SSL: true,
},
StandbyPrivateConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Host: "private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
Port: 25060,
User: "doadmin",
Password: "zt91mum075ofzyww",
SSL: true,
},
Users: []DatabaseUser{
{
Name: "doadmin",
Expand Down Expand Up @@ -87,6 +105,24 @@ var dbJSON = `
"password": "zt91mum075ofzyww",
"ssl": true
},
"standby_connection": {
"uri": "postgres://doadmin:zt91mum075ofzyww@replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "zt91mum075ofzyww",
"ssl": true
},
"standby_private_connection": {
"uri": "postgres://doadmin:zt91mum075ofzyww@private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "zt91mum075ofzyww",
"ssl": true
},
"users": [
{
"name": "doadmin",
Expand Down Expand Up @@ -224,10 +260,28 @@ func TestDatabases_Create(t *testing.T) {
Password: "zt91mum075ofzyww",
SSL: true,
},
StandbyConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Host: "replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
Port: 25060,
User: "doadmin",
Password: "zt91mum075ofzyww",
SSL: true,
},
PrivateConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@private-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Host: "dbtest-do-user-3342561-0.db.ondigitalocean.com",
Host: "private-dbtest-do-user-3342561-0.db.ondigitalocean.com",
Port: 25060,
User: "doadmin",
Password: "zt91mum075ofzyww",
SSL: true,
},
StandbyPrivateConnection: &DatabaseConnection{
URI: "postgres://doadmin:zt91mum075ofzyww@private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
Database: "defaultdb",
Host: "private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
Port: 25060,
User: "doadmin",
Password: "zt91mum075ofzyww",
Expand Down Expand Up @@ -264,7 +318,25 @@ func TestDatabases_Create(t *testing.T) {
"private_connection": {
"uri": "postgres://doadmin:zt91mum075ofzyww@private-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "dbtest-do-user-3342561-0.db.ondigitalocean.com",
"host": "private-dbtest-do-user-3342561-0.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "zt91mum075ofzyww",
"ssl": true
},
"standby_connection": {
"uri": "postgres://doadmin:zt91mum075ofzyww@replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "zt91mum075ofzyww",
"ssl": true
},
"standby_private_connection": {
"uri": "postgres://doadmin:zt91mum075ofzyww@private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "private-replica-dbtest-do-user-3342561-0.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "zt91mum075ofzyww",
Expand Down Expand Up @@ -1028,6 +1100,24 @@ func TestDatabases_ListPools(t *testing.T) {
SSL: true,
Database: "db",
},
StandbyConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
StandbyPrivateConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-private-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
},
}

Expand Down Expand Up @@ -1056,6 +1146,24 @@ func TestDatabases_ListPools(t *testing.T) {
"password": "pass",
"database": "db",
"ssl": true
},
"standby_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
},
"standby_private_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-private-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
}
}]
}
Expand Down Expand Up @@ -1102,6 +1210,24 @@ func TestDatabases_CreatePool(t *testing.T) {
SSL: true,
Database: "db",
},
StandbyConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
StandbyPrivateConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-private-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
}

body := `
Expand Down Expand Up @@ -1129,6 +1255,24 @@ func TestDatabases_CreatePool(t *testing.T) {
"password": "pass",
"database": "db",
"ssl": true
},
"standby_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
},
"standby_private_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-private-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
}
}
}
Expand Down Expand Up @@ -1181,6 +1325,24 @@ func TestDatabases_GetPool(t *testing.T) {
SSL: true,
Database: "db",
},
StandbyConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
StandbyPrivateConnection: &DatabaseConnection{
URI: "postgresql://user:[email protected]/db",
Host: "replica-private-host.com",
Port: 1234,
User: "user",
Password: "pass",
SSL: true,
Database: "db",
},
}

body := `
Expand Down Expand Up @@ -1208,6 +1370,24 @@ func TestDatabases_GetPool(t *testing.T) {
"password": "pass",
"database": "db",
"ssl": true
},
"standby_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
},
"standby_private_connection": {
"uri": "postgresql://user:[email protected]/db",
"host": "replica-private-host.com",
"port": 1234,
"user": "user",
"password": "pass",
"database": "db",
"ssl": true
}
}
}
Expand Down

0 comments on commit 8f346e5

Please sign in to comment.