https://github.com/kontenbase/kontenbase-go
Kontenbase SDK for Go
https://github.com/kontenbase/kontenbase-go
api database go rest-api sdk
Last synced: 3 months ago
JSON representation
Kontenbase SDK for Go
- Host: GitHub
- URL: https://github.com/kontenbase/kontenbase-go
- Owner: kontenbase
- License: mit
- Created: 2022-05-23T06:26:24.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-11-03T18:01:24.000Z (over 3 years ago)
- Last Synced: 2024-06-21T08:15:55.498Z (almost 2 years ago)
- Topics: api, database, go, rest-api, sdk
- Language: Go
- Homepage: https://kontenbase.com
- Size: 22.5 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kontenbase
This is the official Go SDK for Kontenbase API.
Kontenbase is a no-code backend API platform or Backend as a Service (BaaS) that allows you to create a backend API as fast as possible. We make it easy for developers to build backend API without having to touch backend code at all.
Visit [Kontenbase](https://kontenbase.com/) for more information and see [our documentation](https://docs.kontenbase.com/) for more technical details.
## API Documentation
For API documentation, visit [Kontenbase API Reference](https://docs.kontenbase.com/).
## Installation
```bash
go get -u github.com/kontenbase/kontenbase-go
```
## Usage
Before you begin, you need to sign up on [Kontenbase Dashboard](https://app.kontenbase.com/) to retrieve an **API key** of your project.
### Create a client
```go
client := kontenbase.NewClient("YOUR_API_KEY", kontenbase.DefaultURL())
```
# Authentication
### Register
```go
resp, err := client.Auth.Register(client.RegisterParams{
Email: "user@mail.com",
Password: "password",
FirstName: "Ega",
})
```
### Login
```go
resp, err := client.Auth.Login(client.LoginParams{
Email: "user@mail.com",
Password: "password",
})
```
### Get user info
```go
resp, err := client.Auth.User()
```
### Update user info
```go
resp, err := client.Auth.Update(map[string]interface{}{
"firstName": "Ega",
})
```
### Logout
```go
resp, err := client.Auth.Logout()
```
## Database
### Create a new record
```go
resp, err := client.Service("posts").Create(map[string]interface{}{
"name" : "Post 1",
"notes": "Hello Kontenbase",
})
```
### Get a record by Id
```go
resp, err := client.Service("posts").GetByID("605a251d7b8678bf6811k3b1")
```
### Find records
**Get all records**
```go
resp, err := client.Service("posts").Find()
```
**Find records and modify the result**
```go
resp, err := client.Service("posts").Find()
.SetLimit(10)
.SetSkip(10)
.SetSelect([]interface{}{"name", "notes"})
.SetLookup("*")
```
**Find records with criteria**
```go
resp, err := client.Service("posts").Find()
.SetWhere(map[string]interface{}{
"name": "Ega",
"notes": map[string]interface{}{
"$contains": "hello",
},
"number": map[string]interface{}{
"$gte": 10,
},
"status" map[string]interface{}{
"$in": []interface{}{"todo", "done"},
},
})
```
### Update record
```go
resp, err := client.Service("posts").UpdateByID("605a251d7b8678bf6811k3b1", map[string]interface{}{
"notes": "Hello world",
})
```
### Delete record
```go
resp, err := client.Service("posts").DeleteByID("605a251d7b8678bf6811k3b1")
```
### Link record
```go
resp, err := client.Service("posts").Link("605a251d7b8678bf6811k3b1", map[string]interface{}{
"categories": "61d26e8e2adb12b85c33029c",
})
```
### Unlink record
```go
resp, err := client.Service("posts").Unlink("605a251d7b8678bf6811k3b1", map[string]interface{}{
"categories": "61d26e8e2adb12b85c33029c",
})
```
### Count total records
**Count all records**
```go
resp, err := client.Service("posts").Count()
```
**Count records that match given criteria**
```go
resp, err := client.Service("posts").Count().SetWhere(map[string]interface{}{
"name": "Ega",
})
```
## Storage
### Upload a file
```go
file, err := os.Open("your_file.txt")
if err != nil {
return err
}
defer file.Close()
resp, err := client.Storage.Upload(file)
```
## Realtime
### Subscribe
```go
func onMessage (event string, payload map[string]interface{}) error {
fmt.Println(event)
return nil
}
func onError (event string, payload map[string]interface{}) error {
fmt.Println(payload)
return nil
}
func main() {
key, err := client.Realtime.Subscribe("Movies", options.SubscribeOptions{
Event: options.RealtimeAll,
OnMessage: onMessage,
OnError: onError,
})
}
```
### Unsubscribe
```go
err := client.Realtime.Unsubsribe(key)
if err != nil {
return err
}
```
## Feedback
Please use our [GitHub Issues](https://github.com/kontenbase/feedback) for high-level feedback. Also you can join our [Discord server](https://a.kontenbase.com/discord).