setting up some more stuff for queries

This commit is contained in:
2026-04-21 23:10:58 -05:00
parent 8092488b29
commit c1c8950f24
2 changed files with 9 additions and 5 deletions
+7 -3
View File
@@ -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)
}
+2 -2
View File
@@ -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)})