Les bases de données sont exposées par l’interface Databases embarquée dans rest.Rest. Elles sont disponibles sur les plans Standard, Pro et Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Créer une base de données
api.CreateDatabase(opts) provisionne une nouvelle base de données à partir d’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
| Champ | Type | Description |
|---|
Name | string | Nom d’affichage, 1 à 32 caractères |
Memory | int | Mémoire allouée en Mo |
Type | squarecloud.DatabaseType | Moteur : DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis ou DatabaseTypePostgres (slugs mongo, mysql, redis, postgres) |
Version | string | Version du moteur |
Password (et Certificate, le cas échéant) n’apparaissent que dans la réponse de création et ne peuvent pas être récupérés plus tard — conservez-les dès maintenant. ConnectionURL arrive prête à l’emploi avec le mot de passe intégré.
Un type non pris en charge échoue avec INVALID_DATABASE_TYPE ; une mémoire insuffisante pour le plan échoue avec INSUFFICIENT_MEMORY ; un échec durant le provisionnement échoue avec DATABASE_CREATION_FAILED.
Lister vos bases de données
api.GetDatabases() liste toutes les bases de données que vous possédez sous forme de descripteurs compacts squarecloud.UserDatabase :
dbs, err := api.GetDatabases()
if err != nil {
panic(err)
}
for _, db := range dbs {
fmt.Printf("%s (%s)\n", db.Name, db.ID)
}
Récupérer une seule base de données
db, err := api.GetDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(db.ID, db.Name, db.Type, db.RAM, db.Cluster, db.CreatedAt)
Cycle de vie
err := api.StartDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.StopDatabase("abc123def456abc123def456")
Statut et métriques
Les endpoints de statut et de métriques des bases de données partagent les mêmes formes que ceux des applications (ce sont des alias de type) — consultez Gestion des applications pour le détail champ par champ.
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)")
Statut résumé de chaque base de données
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Mettre à jour
api.UpdateDatabase(dbID, opts) modifie le nom d’affichage et/ou l’allocation de mémoire. Au moins un champ doit être fourni.
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
Identifiants
api.GetDatabaseCertificate(dbID) renvoie le certificat TLS (PEM encodé en base64) :
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("certificate length:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) effectue la rotation soit du mot de passe, soit du certificat, à l’aide des 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)
Le nouveau mot de passe n’est renvoyé que dans la réponse de réinitialisation du mot de passe et affiché une seule fois — conservez-le immédiatement.
Snapshots
Les snapshots de bases de données reflètent l’API de snapshots des applications — consultez 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)
Supprimer une base de données
La suppression d’une base de données est irréversible. Assurez-vous d’avoir un snapshot récent si vous pourriez avoir besoin de récupérer les données.
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}