Add the event service

This commit is contained in:
Achim Rohn
2025-11-16 19:54:42 +01:00
parent bcc5c7493d
commit 049fefed75
26 changed files with 2656 additions and 9 deletions
+62
View File
@@ -0,0 +1,62 @@
package event
import (
"context"
"fmt"
. "git.gorlug.de/code/ersteller"
"git.gorlug.de/code/ersteller/schema/ent"
)
type Service struct {
entClient *ent.Client
}
func NewService(entClient *ent.Client) *Service {
return &Service{
entClient: entClient,
}
}
func (s *Service) Create(htmxContext HtmxContext, name string, data any) error {
return Create(s.entClient, htmxContext, name, data)
}
func Should(err error) {
if err != nil {
Error("should not happen: ", err)
}
}
func Create(entClient *ent.Client, c HtmxContext, name string, data any) error {
Debug("event", name, data)
hasAuth, authContext := c.GetAuthContext()
if !hasAuth {
return fmt.Errorf("failed to get auth context")
}
return CreateWithSession(entClient, c.GetGoContext(), authContext, name, data)
}
func CreateWithSession(entClient *ent.Client, ctx context.Context,
auth AuthContext, name string, data any) error {
Debug("event", name, data)
var mapData JSONB
if data == nil {
mapData = make(JSONB)
} else {
mappedStruct, err := StructToMap(data)
if err != nil {
return fmt.Errorf("failed to map data to map for event create: %w", err)
}
mapData = mappedStruct
}
_, err := entClient.Event.Create().
SetUserID(auth.UserId).
SetName(name).
SetData(mapData).
Save(ctx)
if err != nil {
return fmt.Errorf("failed to create event: %w", err)
}
return nil
}