Files
vt/routers/ansprechpartner.go
2025-08-21 19:35:01 +02:00

128 lines
2.7 KiB
Go

package routers
import (
"git.kocoder.xyz/kocoded/vt/model"
"git.kocoder.xyz/kocoded/vt/query"
"git.kocoder.xyz/kocoded/vt/utils"
"github.com/gofiber/fiber/v2"
)
type ansprechpartnerRouter struct {
utils.Application
}
func RegisterAnsprechpartnerRouter(group fiber.Router, appCtx utils.Application) {
router := &ansprechpartnerRouter{Application: appCtx}
group.Post("/new", router.createAnsprechpartner)
group.Get("/all", router.getAllAnsprechpartners)
group.Get("/:id<int>", router.getAnsprechpartner)
group.Get("/:id<int>/firmen", router.getAnsprechpartnerFirmen)
group.Put("/:id<int>", router.updateAnsprechpartner)
group.Delete("/:id<int>", router.deleteAnsprechpartner)
}
func (r *ansprechpartnerRouter) createAnsprechpartner(c *fiber.Ctx) error {
ansprechpartner := new(model.Ansprechpartner)
if err := c.BodyParser(ansprechpartner); err != nil {
return err
}
ap := query.Ansprechpartner
if err := ap.Omit(ap.UpdatedAt, ap.DeletedAt).Create(ansprechpartner); err != nil {
return err
}
return c.SendString("Hello")
}
func (r *ansprechpartnerRouter) getAllAnsprechpartners(c *fiber.Ctx) error {
aps, err := query.Ansprechpartner.Find()
if err != nil {
return err
}
err = c.JSON(aps)
if err != nil {
return err
}
return nil
}
func (r *ansprechpartnerRouter) getAnsprechpartner(c *fiber.Ctx) error {
id, err := c.ParamsInt("id")
if err != nil {
return err
}
ap, err := query.Ansprechpartner.Where(query.Ansprechpartner.ID.Eq(uint(id))).First()
if err != nil {
return err
}
return c.JSON(ap)
}
func (r *ansprechpartnerRouter) getAnsprechpartnerFirmen(c *fiber.Ctx) error {
id, err := c.ParamsInt("id")
if err != nil {
return err
}
ap, err := query.Ansprechpartner.Where(query.Ansprechpartner.ID.Eq(uint(id))).First()
if err != nil {
return err
}
firmen, err := query.Ansprechpartner.Firmen.Model(ap).Find()
if err != nil {
return err
}
ap.Firmen = firmen
return c.JSON(ap)
}
func (r *ansprechpartnerRouter) updateAnsprechpartner(c *fiber.Ctx) error {
ansprechpartner := new(model.Ansprechpartner)
id, err := c.ParamsInt("id")
if err != nil {
return err
}
if err = c.BodyParser(ansprechpartner); err != nil {
return err
}
ap := query.Ansprechpartner
res, err := ap.Where(ap.ID.Eq(uint(id))).Omit(ap.ID, ap.CreatedAt, ap.UpdatedAt, ap.DeletedAt).Updates(ansprechpartner)
if err != nil {
return err
}
return c.JSON(res)
}
func (r *ansprechpartnerRouter) deleteAnsprechpartner(c *fiber.Ctx) error {
id, err := c.ParamsInt("id")
if err != nil {
return err
}
res, err := query.Ansprechpartner.Where(query.Ansprechpartner.ID.Value(uint(id))).Delete()
if err != nil {
return err
}
return c.JSON(res)
}