Official Go client library for the RaidFrame API.
go get github.com/raidframe/sdk-go
package main
import (
"os"
rf "github.com/raidframe/sdk-go"
)
func main() {
client := rf.NewClient(rf.Config{
Token: os.Getenv("RAIDFRAME_TOKEN"),
Project: "my-saas",
})
}
// List services
services, err := client.Services.List(ctx)
// Get service
api, err := client.Services.Get(ctx, "api")
fmt.Printf("Status: %s, Instances: %d\n", api.Status, api.InstanceCount)
// Scale
err = client.Services.Scale(ctx, "api", rf.ScaleOptions{Min: 4, Max: 20})
// Restart
err = client.Services.Restart(ctx, "api")
// Deploy
deployment, err := client.Deploy(ctx, rf.DeployOptions{Watch: true})
fmt.Printf("Deployed: %s (%s)\n", deployment.ID, deployment.Version)
// Rollback
err = client.Deployments.Rollback(ctx)
// List
deployments, err := client.Deployments.List(ctx, rf.ListOptions{Limit: 10})
// Create
db, err := client.Databases.Create(ctx, rf.DatabaseCreateOptions{
Engine: "postgres",
Name: "main",
Plan: "pro",
})
// Query
result, err := client.Databases.Query(ctx, "main", "SELECT count(*) FROM users")
// Backup
err = client.Databases.Backup(ctx, "main", rf.BackupOptions{Name: "before-migration"})
// Branch
err = client.Databases.Branch(ctx, "main", rf.BranchOptions{Name: "feature-x"})
// Set
err = client.Env.Set(ctx, map[string]string{
"STRIPE_KEY": "sk_live_xxx",
"API_SECRET": "secret",
})
// Get
value, err := client.Env.Get(ctx, "STRIPE_KEY")
// List
vars, err := client.Env.List(ctx)
// Delete
err = client.Env.Delete(ctx, "OLD_KEY")
// Query
logs, err := client.Logs.Query(ctx, rf.LogQuery{
Service: "api",
Since: "1h",
Level: "error",
Limit: 50,
})
for _, entry := range logs {
fmt.Printf("[%s] %s\n", entry.Service, entry.Message)
}
// Stream
stream, err := client.Logs.Stream(ctx, rf.LogStreamOptions{Service: "api"})
defer stream.Close()
for {
entry, err := stream.Next()
if err != nil {
break
}
fmt.Printf("[%s] %s\n", entry.Service, entry.Message)
}
import "github.com/raidframe/sdk-go/errors"
_, err := client.Services.Get(ctx, "nonexistent")
if errors.IsNotFound(err) {
fmt.Println("Service not found")
} else if errors.IsRateLimit(err) {
rle := err.(*errors.RateLimitError)
fmt.Printf("Rate limited. Retry after %ds\n", rle.RetryAfter)
}