Vai al contenuto principale
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
Gli snapshot esistono in tre ambiti: per applicazione, per database e a livello di account.

La struct Snapshot

I metodi di elenco restituiscono []squarecloud.Snapshot:
CampoTipoDescrizione
NamestringNome dell’oggetto snapshot
SizeintDimensione in byte
ModifiedstringData dell’ultima modifica
KeystringQuery string firmata usata per costruire l’URL di download

Snapshot delle applicazioni

Elencare

snapshots, err := api.GetApplicationSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for _, snap := range snapshots {
	fmt.Println(snap.Name, snap.Size, snap.Modified)
}

Creare

api.CreateApplicationSnapshot(appID) genera un nuovo snapshot e restituisce un squarecloud.SnapshotCreated con l’URL di download firmato.
created, err := api.CreateApplicationSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(created.URL) // signed download URL
fmt.Println(created.Key)

Ripristinare

api.RestoreApplicationSnapshot(appID, snapshotID, versionID) riporta l’applicazione a una versione precedente dello snapshot.
err := api.RestoreApplicationSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000",
	"abc123def4567890",
)
if err != nil {
	panic(err)
}

Snapshot dei database

L’ambito dei database rispecchia quello delle applicazioni:
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}
fmt.Println(created.URL)

err = api.RestoreDatabaseSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000_mongo",
	"v1",
)
if err != nil {
	panic(err)
}

Elencare gli snapshot a livello di account

api.UserSnapshots(scope) restituisce ogni snapshot che possiedi tra tutte le tue applicazioni o database. L’ambito è una delle costanti squarecloud.SnapshotScope*:
appSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeApplications)
if err != nil {
	panic(err)
}

dbSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeDatabases)
if err != nil {
	panic(err)
}
L’elenco degli snapshot a livello di account richiede un piano a pagamento attivo. Ogni piano ha inoltre una quota giornaliera di snapshot — una volta esaurita, la creazione fallisce con il codice DAILY_SNAPSHOTS_LIMIT_REACHED, distinto dal generico errore di rate limit KEEP_CALM.