package handlers import ( "github.com/gofiber/fiber/v2" "github.com/google/uuid" "relay-server/database" "relay-server/utils" ) func DeleteContact(c *fiber.Ctx) error { type params struct { ContactID uuid.UUID `params:"contactID"` ConversationID uuid.UUID `params:"conversationID"` } p := new(params) if err := c.ParamsParser(p); err != nil { return utils.NewError(utils.ErrInvalidInput, "Invalid params", err) } if p.ContactID == uuid.Nil { return utils.NewError(utils.ErrInvalidInput, "contact ID is empty", nil) } if p.ConversationID == uuid.Nil { return utils.NewError(utils.ErrInvalidInput, "conversation ID is empty", nil) } err := database.DeleteContact(database.DB, p.ContactID, p.ConversationID) if err != nil { return err } return c.Status(fiber.StatusOK).JSON(fiber.Map{"message": "Contact deleted"}) } func InsertContact(c *fiber.Ctx) error { type params struct { ContactUsername string `params:"contactUsername"` } userID := c.Locals("userID").(uuid.UUID) p := new(params) if err := c.ParamsParser(p); err != nil { return utils.NewError(utils.ErrInvalidInput, "Invalid params", err) } if p.ContactUsername == "" { return utils.NewError(utils.ErrInvalidInput, "contact username is empty", nil) } if !utils.IsValidUsername(p.ContactUsername) { return utils.NewError(utils.ErrInvalidInput, "invalid username", nil) } contactID, err := database.GetUserID(database.DB, p.ContactUsername) if err != nil { return err } newContacts, err := database.InsertContact(database.DB, userID, contactID, p.ContactUsername) if err != nil { return err } return c.Status(fiber.StatusOK).JSON(newContacts) } func GetContacts(c *fiber.Ctx) error { userID := c.Locals("userID").(uuid.UUID) contacts, err := database.GetContacts(database.DB, userID) if err != nil { return err } return c.Status(fiber.StatusOK).JSON(contacts) } func GetContactSuggestions(c *fiber.Ctx) error { type params struct { ContactUsername string `params:"contactUsername"` } p := new(params) if err := c.ParamsParser(p); err != nil { return utils.NewError(utils.ErrInvalidInput, "Invalid params", err) } if p.ContactUsername == "" { return utils.NewError(utils.ErrInvalidInput, "contact username is empty", nil) } suggestions, err := database.ContactSuggestion(database.DB, p.ContactUsername) if err != nil { return err } return c.Status(fiber.StatusOK).JSON(suggestions) }