friendliai/atlas-go-sdk
Go
Captured source
source ↗published Aug 21, 2024seen 5dcaptured 13hhttp 200method plain
friendliai/atlas-go-sdk
Description: Private fork of ariga/atlas-go-sdk
Language: Go
License: Apache-2.0
Stars: 0
Forks: 0
Open issues: 0
Created: 2024-08-21T05:53:13Z
Pushed: 2024-08-21T08:04:15Z
Default branch: main
Fork: no
Archived: no
README:
Atlas SDK for Go
An SDK for building ariga/atlas providers in Go.
Installation
go get -u friendliai/atlas-go-sdk
How to use
To use the SDK, you need to create a new client with your migrations folder and the atlas binary path.
package main
import (
...
"friendliai/atlas-go-sdk/atlasexec"
)
func main() {
// Create a new client
client, err := atlasexec.NewClient("my-migration-folder", "my-atlas-cli-path")
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
}APIs
The SDK provides the following APIs:
Login: Login to the Atlas CloudLogout: runs the "atlas logout" command.MigratePush: runs the "atlas migrate push" command.MigrateLint: runs the "atlas migrate lint" command.MigrateApplySlice: runs the "atlas migrate apply" command for multiple targets.MigrateApply: runs the "atlas migrate apply" command.MigrateApplySlice: runs the 'atlas migrate apply' command for multiple targets.MigrateDown: runs the "atlas migrate down" command.MigrateStatus: runs the "atlas migrate status" command.MigrateTest: runs the "atlas migrate test" command.SchemaApply: runs the "atlas schema apply" command.SchemaInspect: runs the "atlas schema inspect" command.SchemaDiff: runs the "atlas schema diff" command.SchemaTest: runs the "atlas schema test" command.
Example with MigrateApply API:
package main
import (
"context"
"fmt"
"log"
"os"
"friendliai/atlas-go-sdk/atlasexec"
)
func main() {
// Define the execution context, supplying a migration directory
// and potentially an `atlas.hcl` configuration file using `atlasexec.WithHCL`.
workdir, err := atlasexec.NewWorkingDir(
atlasexec.WithMigrations(
os.DirFS("./migrations"),
),
)
if err != nil {
log.Fatalf("failed to load working directory: %v", err)
}
// atlasexec works on a temporary directory, so we need to close it
defer workdir.Close()
// Initialize the client.
client, err := atlasexec.NewClient(workdir.Path(), "atlas")
if err != nil {
log.Fatalf("failed to initialize client: %v", err)
}
// Run `atlas migrate apply` on a SQLite database under /tmp.
res, err := client.MigrateApply(context.Background(), &atlasexec.MigrateApplyParams{
URL: "sqlite:///tmp/demo.db?_fk=1&cache=shared",
})
if err != nil {
log.Fatalf("failed to apply migrations: %v", err)
}
fmt.Printf("Applied %d migrations\n", len(res.Applied))
}Notability
notability 2.0/10Routine SDK repo, no traction.