Saltar al contenido principal
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
CampoTipoDescripción
NamestringNombre visible, de 1 a 32 caracteres
MemoryintMemoria asignada en MB
Typesquarecloud.DatabaseTypeMotor: DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis o DatabaseTypePostgres (slugs mongo, mysql, redis, postgres)
VersionstringVersió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)
}