From c1c8950f249f1e8410515cf30aaa3e3625e38990 Mon Sep 17 00:00:00 2001 From: wisplite Date: Tue, 21 Apr 2026 23:10:58 -0500 Subject: [PATCH] setting up some more stuff for queries --- engine.go | 10 +++++++--- example/main.go | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/engine.go b/engine.go index b18c3a3..7b1b148 100644 --- a/engine.go +++ b/engine.go @@ -10,15 +10,19 @@ import ( type Engine struct { db *gorm.DB + dbType string // sqlite or postgres mutations map[string]func(ctx *MutationCtx) error queries map[string]func(ctx *QueryCtx) error tracker *reactivity.Tracker } -func NewEngine(db *gorm.DB) *Engine { +func NewEngine(db *gorm.DB, dbType string) *Engine { slog.SetLogLoggerLevel(slog.LevelDebug) 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) { @@ -26,7 +30,7 @@ func (e *Engine) RegisterMutation(name string, mutation func(ctx *MutationCtx) e 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 slog.Debug("Registered query", "name", name) } diff --git a/example/main.go b/example/main.go index d7b18f7..564c76e 100644 --- a/example/main.go +++ b/example/main.go @@ -30,7 +30,7 @@ func main() { panic("failed to connect database") } - engine := tether.NewEngine(db) + engine := tether.NewEngine(db, "sqlite") engine.CreateTable("users", &User{}) engine.CreateTable("messages", &Messages{}) @@ -41,7 +41,7 @@ func main() { engine.RegisterQuery("getUser", func(ctx *tether.QueryCtx) error { return nil - }) + }, []string{"users"}) 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)})