I database sono esposti dall’interfaccia Databases incorporata in rest.Rest. Sono disponibili sui piani Standard, Pro ed Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Creare un database
api.CreateDatabase(opts) provisiona un nuovo database a partire da 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 | Descrizione |
|---|
Name | string | Nome visualizzato, da 1 a 32 caratteri |
Memory | int | Memoria allocata in MB |
Type | squarecloud.DatabaseType | Motore: DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis oppure DatabaseTypePostgres (slug mongo, mysql, redis, postgres) |
Version | string | Versione del motore |
Password (e Certificate, quando applicabile) compaiono solo nella risposta di creazione e non possono essere recuperati in seguito — salvali subito. ConnectionURL arriva pronta all’uso con la password già incorporata.
Un tipo non supportato fallisce con INVALID_DATABASE_TYPE; una memoria insufficiente per il piano fallisce con INSUFFICIENT_MEMORY; un errore durante il provisioning fallisce con DATABASE_CREATION_FAILED.
Elencare i tuoi database
api.GetDatabases() elenca ogni database che possiedi come descrittori compatti squarecloud.UserDatabase:
dbs, err := api.GetDatabases()
if err != nil {
panic(err)
}
for _, db := range dbs {
fmt.Printf("%s (%s)\n", db.Name, db.ID)
}
Recuperare un singolo database
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 di vita
err := api.StartDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.StopDatabase("abc123def456abc123def456")
Stato e metriche
Gli endpoint di stato e metriche dei database condividono le stesse forme di quelli delle applicazioni (sono alias di tipo) — consulta Gestire le applicazioni per il dettaglio campo per campo.
status, err := api.GetDatabaseStatus("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(status.Status, status.CPU, status.RAM) // formatted strings
raw, err := api.GetDatabaseStatusRaw("abc123def456abc123def456") // numeric values
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)")
Stato riepilogativo di ogni database
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Aggiornamento
api.UpdateDatabase(dbID, opts) modifica il nome visualizzato e/o l’allocazione di memoria. Deve essere fornito almeno un campo.
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
Credenziali
api.GetDatabaseCertificate(dbID) restituisce il certificato TLS (PEM codificato in base64):
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("certificate length:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) ruota la password oppure il certificato, usando le costanti 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 nuova password viene restituita solo nella risposta del reset della password e mostrata una sola volta — salvala immediatamente.
Snapshot
Gli snapshot dei database rispecchiano l’API degli snapshot delle applicazioni — consulta Snapshot.
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)
Eliminare un database
L’eliminazione di un database è irreversibile. Assicurati di avere uno snapshot recente se potresti aver bisogno di recuperare i dati.
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}