Passer au contenu principal
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
ChampTypeDescription
NamestringNom d’affichage, 1 à 32 caractères
MemoryintMémoire allouée en Mo
Typesquarecloud.DatabaseTypeMoteur : DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis ou DatabaseTypePostgres (slugs mongo, mysql, redis, postgres)
VersionstringVersion 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)
}