# README
supabase-go
Unofficial Supabase client for Go. It is an amalgamation of all the libraries similar to the official Supabase client.
Installation
go get github.com/nedpals/supabase-go
Usage
Authenticate
import supa "github.com/nedpals/supabase-go"
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
ctx := context.Background()
user, err := supabase.Auth.SignUp(ctx, supa.UserCredentials{
Email: "[email protected]",
Password: "password",
})
if err != nil {
panic(err)
}
fmt.Println(user)
}
Sign-In
import supa "github.com/nedpals/supabase-go"
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
ctx := context.Background()
user, err := supabase.Auth.SignIn(ctx, supa.UserCredentials{
Email: "[email protected]",
Password: "password",
})
if err != nil {
panic(err)
}
fmt.Println(user)
}
Insert
import supa "github.com/nedpals/supabase-go"
type Country struct {
ID int `json:"id"`
Name string `json:"name"`
Capital string `json:"capital"`
}
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
row := Country{
ID: 5,
Name: "Germany",
Capital: "Berlin",
}
var results []Country
err := supabase.DB.From("countries").Insert(row).Execute(&results)
if err != nil {
panic(err)
}
fmt.Println(results) // Inserted rows
}
Select
import supa "github.com/nedpals/supabase-go"
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
var results map[string]interface{}
err := supabase.DB.From("countries").Select("*").Single().Execute(&results)
if err != nil {
panic(err)
}
fmt.Println(results) // Selected rows
}
Update
import supa "github.com/nedpals/supabase-go"
type Country struct {
Name string `json:"name"`
Capital string `json:"capital"`
}
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
row := Country{
Name: "France",
Capital: "Paris",
}
var results map[string]interface{}
err := supabase.DB.From("countries").Update(row).Eq("id", "5").Execute(&results)
if err != nil {
panic(err)
}
fmt.Println(results) // Updated rows
}
Delete
import supa "github.com/nedpals/supabase-go"
func main() {
supabaseUrl := "<SUPABASE-URL>"
supabaseKey := "<SUPABASE-KEY>"
supabase := supa.CreateClient(supabaseUrl, supabaseKey)
var results map[string]interface{}
err := supabase.DB.From("countries").Delete().Eq("name", "France").Execute(&results)
if err != nil {
panic(err)
}
fmt.Println(results) // Empty - nothing returned from delete
}
Roadmap
- Auth support (1)
- DB support (2)
- Realtime
- Storage
- Testing
(1) - Thin API wrapper. Does not rely on the GoTrue library for simplicity
(2) - Through postgrest-go
I just implemented features which I actually needed for my project for now. If you like to implement these features, feel free to submit a pull request as stated in the Contributing section below.
Design Goals
It tries to mimick as much as possible the official Javascript client library in terms of ease-of-use and in setup process.
Contributing
Submitting a pull request
- Fork it (https://github.com/nedpals/supabase-go/fork)
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- nedpals - creator and maintainer
# Functions
CreateClient creates a new Supabase client.
# Constants
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
# Structs
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
adapted from https://go-review.googlesource.com/c/oauth2/+/463979/9/pkce.go#64.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Type aliases
No description provided by the author