Bancos de dados são expostos pela interface Databases embutida em rest.Rest. Disponível nos planos Standard, Pro e Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Criando um banco
api.CreateDatabase(opts) provisiona um novo banco a partir de um squarecloud.DatabaseCreateOptions.
created, err := api.CreateDatabase(squarecloud.DatabaseCreateOptions{
Name: "my-mongo",
Memory: 1024,
Type: squarecloud.DatabaseTypeMongo,
Version: "8",
})
if err != nil {
panic(err)
}
fmt.Println(created.ID)
fmt.Println(created.ConnectionURL) // pronta para uso — senha já embutida
fmt.Println(created.Password) // exibida uma única vez — guarde com segurança
fmt.Println(created.Certificate) // exibido uma única vez — apenas em engines que emitem certificado TLS
| Campo | Tipo | Descrição |
|---|
Name | string | Nome de exibição, de 1 a 32 caracteres |
Memory | int | Memória alocada em MB |
Type | squarecloud.DatabaseType | Engine: DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis ou DatabaseTypePostgres (slugs mongo, mysql, redis, postgres) |
Version | string | Versão do engine |
Password (e Certificate, quando aplicável) aparecem apenas na resposta de criação e não podem ser recuperados depois — guarde-os agora. ConnectionURL vem pronta para uso com a senha embutida.
Um tipo não suportado falha com INVALID_DATABASE_TYPE; memória insuficiente para o plano falha com INSUFFICIENT_MEMORY; uma falha durante o provisionamento falha com DATABASE_CREATION_FAILED.
Listando seus bancos
api.GetDatabases() lista todos os bancos que você possui como descritores compactos squarecloud.UserDatabase:
dbs, err := api.GetDatabases()
if err != nil {
panic(err)
}
for _, db := range dbs {
fmt.Printf("%s (%s)\n", db.Name, db.ID)
}
Buscando um banco específico
db, err := api.GetDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(db.ID, db.Name, db.Type, db.RAM, db.Cluster, db.CreatedAt)
Ciclo de vida
err := api.StartDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.StopDatabase("abc123def456abc123def456")
Status e métricas
Os endpoints de status e métricas de banco de dados compartilham os mesmos formatos dos de aplicação (são type aliases) — veja Gerenciando aplicações para o detalhamento campo a campo.
status, err := api.GetDatabaseStatus("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(status.Status, status.CPU, status.RAM) // strings formatadas
raw, err := api.GetDatabaseStatusRaw("abc123def456abc123def456") // valores numéricos
if err != nil {
panic(err)
}
metrics, err := api.GetDatabaseMetrics("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(len(metrics), "pontos de métrica (até 288 em 24h)")
Status resumido de todos os bancos
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Atualizando
api.UpdateDatabase(dbID, opts) altera o nome de exibição e/ou a memória alocada. Pelo menos um campo deve ser fornecido.
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
Credenciais
api.GetDatabaseCertificate(dbID) retorna o certificado TLS (PEM codificado em base64):
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("tamanho do certificado:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) rotaciona a senha ou o certificado, usando as constantes squarecloud.DatabaseReset*:
// Rotaciona a senha — o novo valor é exibido apenas uma vez
result, err := api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetPassword)
if err != nil {
panic(err)
}
fmt.Println("nova senha:", result.Password)
// Rotaciona o certificado — busque o novo via GetDatabaseCertificate
_, err = api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetCertificate)
A nova senha é retornada apenas na resposta do reset de senha e exibida uma única vez — guarde-a imediatamente.
Snapshots
Snapshots de banco de dados espelham a API de snapshots de aplicações — veja Snapshots.
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
panic(err)
}
created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("URL de download:", created.URL)
Excluindo um banco
Excluir um banco é irreversível. Garanta um snapshot recente caso precise recuperar os dados.
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}