mirror of
https://github.com/wisplite/tether.git
synced 2026-05-01 06:22:41 -05:00
setting up some more stuff for queries
This commit is contained in:
@@ -10,15 +10,19 @@ import (
|
|||||||
|
|
||||||
type Engine struct {
|
type Engine struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
|
dbType string // sqlite or postgres
|
||||||
mutations map[string]func(ctx *MutationCtx) error
|
mutations map[string]func(ctx *MutationCtx) error
|
||||||
queries map[string]func(ctx *QueryCtx) error
|
queries map[string]func(ctx *QueryCtx) error
|
||||||
tracker *reactivity.Tracker
|
tracker *reactivity.Tracker
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEngine(db *gorm.DB) *Engine {
|
func NewEngine(db *gorm.DB, dbType string) *Engine {
|
||||||
slog.SetLogLoggerLevel(slog.LevelDebug)
|
slog.SetLogLoggerLevel(slog.LevelDebug)
|
||||||
tracker := reactivity.NewTracker()
|
tracker := reactivity.NewTracker()
|
||||||
return &Engine{db: db, mutations: make(map[string]func(ctx *MutationCtx) error), queries: make(map[string]func(ctx *QueryCtx) error), tracker: tracker}
|
if dbType != "sqlite" && dbType != "postgres" {
|
||||||
|
panic("Invalid database type")
|
||||||
|
}
|
||||||
|
return &Engine{db: db, dbType: dbType, mutations: make(map[string]func(ctx *MutationCtx) error), queries: make(map[string]func(ctx *QueryCtx) error), tracker: tracker}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Engine) RegisterMutation(name string, mutation func(ctx *MutationCtx) error) {
|
func (e *Engine) RegisterMutation(name string, mutation func(ctx *MutationCtx) error) {
|
||||||
@@ -26,7 +30,7 @@ func (e *Engine) RegisterMutation(name string, mutation func(ctx *MutationCtx) e
|
|||||||
slog.Debug("Registered mutation", "name", name)
|
slog.Debug("Registered mutation", "name", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Engine) RegisterQuery(name string, query func(ctx *QueryCtx) error) {
|
func (e *Engine) RegisterQuery(name string, query func(ctx *QueryCtx) error, dependencies []string) {
|
||||||
e.queries[name] = query // stores the query in the list of valid queries
|
e.queries[name] = query // stores the query in the list of valid queries
|
||||||
slog.Debug("Registered query", "name", name)
|
slog.Debug("Registered query", "name", name)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -30,7 +30,7 @@ func main() {
|
|||||||
panic("failed to connect database")
|
panic("failed to connect database")
|
||||||
}
|
}
|
||||||
|
|
||||||
engine := tether.NewEngine(db)
|
engine := tether.NewEngine(db, "sqlite")
|
||||||
|
|
||||||
engine.CreateTable("users", &User{})
|
engine.CreateTable("users", &User{})
|
||||||
engine.CreateTable("messages", &Messages{})
|
engine.CreateTable("messages", &Messages{})
|
||||||
@@ -41,7 +41,7 @@ func main() {
|
|||||||
|
|
||||||
engine.RegisterQuery("getUser", func(ctx *tether.QueryCtx) error {
|
engine.RegisterQuery("getUser", func(ctx *tether.QueryCtx) error {
|
||||||
return nil
|
return nil
|
||||||
})
|
}, []string{"users"})
|
||||||
|
|
||||||
engine.RegisterMutation("createMessage", func(ctx *tether.MutationCtx) error {
|
engine.RegisterMutation("createMessage", func(ctx *tether.MutationCtx) error {
|
||||||
ctx.DB.Create(&Messages{ID: uuid.NewString(), Message: ctx.Params["message"].(string), SenderID: ctx.AuthCtx.UserID, RoomID: ctx.Params["room"].(string)})
|
ctx.DB.Create(&Messages{ID: uuid.NewString(), Message: ctx.Params["message"].(string), SenderID: ctx.AuthCtx.UserID, RoomID: ctx.Params["room"].(string)})
|
||||||
|
|||||||
Reference in New Issue
Block a user