mirror of
https://github.com/wisplite/tether.git
synced 2026-05-01 06:22:41 -05:00
c366164a9a
MUTATIONS WORK BTW!!!
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"net/http"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/google/uuid"
|
|
"github.com/wisplite/tether"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type User struct {
|
|
ID string `gorm:"primaryKey"`
|
|
Name string
|
|
}
|
|
|
|
type Messages struct {
|
|
ID string `gorm:"primaryKey"`
|
|
Message string
|
|
SenderID string
|
|
RoomID string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func main() {
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
|
|
if err != nil {
|
|
panic("failed to connect database")
|
|
}
|
|
|
|
engine := tether.NewEngine(db, "sqlite")
|
|
|
|
engine.CreateTable("users", &User{})
|
|
engine.CreateTable("messages", &Messages{})
|
|
|
|
engine.RegisterQuery("getMessages", func(ctx *tether.QueryCtx) interface{} {
|
|
var messages []Messages
|
|
ctx.DB.Where("room_id = ?", ctx.Params["room"].(string)).Find(&messages)
|
|
return messages
|
|
}, []string{"messages"})
|
|
|
|
engine.RegisterMutation("createMessage", func(ctx *tether.MutationCtx) interface{} {
|
|
msg := &Messages{ID: uuid.NewString(), Message: ctx.Params["message"].(string), SenderID: ctx.AuthCtx.UserID, RoomID: ctx.Params["room"].(string)}
|
|
if err := ctx.DB.Create(msg).Error; err != nil {
|
|
return map[string]interface{}{"error": err.Error()}
|
|
}
|
|
return msg
|
|
})
|
|
|
|
http.HandleFunc("/tether", engine.Handle)
|
|
http.ListenAndServe(":8080", nil)
|
|
}
|