Las bases de datos se exponen a través de la interfaz Databases embebida en rest.Rest. Están disponibles en los planes Standard, Pro y Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Creación de una base de datos
api.CreateDatabase(opts) provisiona una nueva base de datos a partir de un 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) // ready to use — password already embedded
fmt.Println(created.Password) // shown once — store securely
fmt.Println(created.Certificate) // shown once — only for engines that issue a TLS cert
| Campo | Tipo | Descripción |
|---|
Name | string | Nombre visible, de 1 a 32 caracteres |
Memory | int | Memoria asignada en MB |
Type | squarecloud.DatabaseType | Motor: DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis o DatabaseTypePostgres (slugs mongo, mysql, redis, postgres) |
Version | string | Versión del motor |
Password (y Certificate, cuando aplica) aparecen únicamente en la respuesta de creación y no se pueden recuperar después: guárdalos ahora. ConnectionURL viene lista para usar con la contraseña ya incluida.
Un tipo no soportado falla con INVALID_DATABASE_TYPE; una memoria insuficiente para el plan falla con INSUFFICIENT_MEMORY; un fallo durante el aprovisionamiento falla con DATABASE_CREATION_FAILED.
Listado de tus bases de datos
api.GetDatabases() lista todas las bases de datos que posees como descriptores 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)
}
Obtención de una única base de datos
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")
Estado y métricas
Los endpoints de estado y métricas de bases de datos comparten las mismas formas que los de aplicaciones (son alias de tipo) — consulta Gestionar aplicaciones para el desglose campo por campo.
status, err := api.GetDatabaseStatus("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(status.Status, status.CPU, status.RAM) // strings formateados
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), "metric points (up to 288 over 24h)")
Resumen de estado de cada base de datos
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Actualización
api.UpdateDatabase(dbID, opts) cambia el nombre visible y/o la asignación de memoria. Debe proporcionarse al menos un campo.
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
Credenciales
api.GetDatabaseCertificate(dbID) devuelve el certificado TLS (PEM codificado en base64):
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("certificate length:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) rota la contraseña o el certificado, usando las constantes squarecloud.DatabaseReset*:
// Rotate the password — the new value is shown only once
result, err := api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetPassword)
if err != nil {
panic(err)
}
fmt.Println("new password:", result.Password)
// Rotate the certificate — fetch the new one via GetDatabaseCertificate
_, err = api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetCertificate)
La nueva contraseña se devuelve únicamente en la respuesta del reseteo de contraseña y se muestra una sola vez: guárdala de inmediato.
Snapshots
Los snapshots de bases de datos reflejan la API de snapshots de las aplicaciones — consulta Snapshots.
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
panic(err)
}
created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("download URL:", created.URL)
Eliminación de una base de datos
Eliminar una base de datos es irreversible. Asegúrate de tener un snapshot reciente si es posible que necesites recuperar los datos.
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}