Added rules frontend
This commit is contained in:
@@ -175,22 +175,26 @@ func (c *CachedSiteRepository) CreateForwardRule(siteID string, fr *models.Forwa
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) UpdateForwardRule(fr *models.ForwardRule) error {
|
||||
if err := c.inner.UpdateForwardRule(fr); err != nil {
|
||||
func (c *CachedSiteRepository) UpdateForwardRule(siteID string, fr *models.ForwardRule) error {
|
||||
if err := c.inner.UpdateForwardRule(siteID, fr); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
c.forwardRules[fr.ID] = fr
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) DeleteForwardRule(id string) error {
|
||||
if err := c.inner.DeleteForwardRule(id); err != nil {
|
||||
func (c *CachedSiteRepository) DeleteForwardRule(siteID string, id string) error {
|
||||
if err := c.inner.DeleteForwardRule(siteID, id); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
delete(c.forwardRules, id)
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
@@ -228,22 +232,26 @@ func (c *CachedSiteRepository) CreateCustomHeaders(siteID string, ch *models.Cus
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) UpdateCustomHeaders(ch *models.CustomHeaders) error {
|
||||
if err := c.inner.UpdateCustomHeaders(ch); err != nil {
|
||||
func (c *CachedSiteRepository) UpdateCustomHeaders(siteID string, ch *models.CustomHeaders) error {
|
||||
if err := c.inner.UpdateCustomHeaders(siteID, ch); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
c.customHeaders[ch.ID] = ch
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) DeleteCustomHeaders(id string) error {
|
||||
if err := c.inner.DeleteCustomHeaders(id); err != nil {
|
||||
func (c *CachedSiteRepository) DeleteCustomHeaders(siteID string, id string) error {
|
||||
if err := c.inner.DeleteCustomHeaders(siteID, id); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
delete(c.customHeaders, id)
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
@@ -269,33 +277,39 @@ func (c *CachedSiteRepository) GetHeader(id string) (*models.Header, error) {
|
||||
return h, nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) CreateHeader(customHeaderID string, h *models.Header) error {
|
||||
if err := c.inner.CreateHeader(customHeaderID, h); err != nil {
|
||||
func (c *CachedSiteRepository) CreateHeader(siteID string, customHeaderID string, h *models.Header) error {
|
||||
if err := c.inner.CreateHeader(siteID, customHeaderID, h); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
c.headers[h.ID] = h
|
||||
delete(c.customHeaders, customHeaderID)
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) UpdateHeader(h *models.Header) error {
|
||||
if err := c.inner.UpdateHeader(h); err != nil {
|
||||
func (c *CachedSiteRepository) UpdateHeader(siteID string, h *models.Header) error {
|
||||
if err := c.inner.UpdateHeader(siteID, h); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
c.headers[h.ID] = h
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) DeleteHeader(id string) error {
|
||||
if err := c.inner.DeleteHeader(id); err != nil {
|
||||
func (c *CachedSiteRepository) DeleteHeader(siteID string, id string) error {
|
||||
if err := c.inner.DeleteHeader(siteID, id); err != nil {
|
||||
return err
|
||||
}
|
||||
c.mu.Lock()
|
||||
delete(c.headers, id)
|
||||
delete(c.sites, siteID)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func (h *SiteHandler) GetSiteForwardRules(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /forward-rules/{id} [get]
|
||||
func (h *SiteHandler) GetForwardRule(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
id := c.Params("ruleId")
|
||||
|
||||
rule, err := h.Repo.GetForwardRule(id)
|
||||
if err != nil {
|
||||
@@ -169,7 +169,8 @@ func (h *SiteHandler) PostForwardRule(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /forward-rules/{id} [put]
|
||||
func (h *SiteHandler) PutForwardRule(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("ruleId")
|
||||
|
||||
if _, err := h.Repo.GetForwardRule(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -190,7 +191,7 @@ func (h *SiteHandler) PutForwardRule(c fiber.Ctx) error {
|
||||
}
|
||||
|
||||
rule.ID = id
|
||||
if err := h.Repo.UpdateForwardRule(&rule); err != nil {
|
||||
if err := h.Repo.UpdateForwardRule(siteID, &rule); err != nil {
|
||||
log.Println("Error updating forward rule: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while updating forward rule"})
|
||||
}
|
||||
@@ -216,7 +217,8 @@ func (h *SiteHandler) PutForwardRule(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /forward-rules/{id} [delete]
|
||||
func (h *SiteHandler) DeleteForwardRule(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("ruleId")
|
||||
|
||||
if _, err := h.Repo.GetForwardRule(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -226,7 +228,7 @@ func (h *SiteHandler) DeleteForwardRule(c fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting forward rule"})
|
||||
}
|
||||
|
||||
if err := h.Repo.DeleteForwardRule(id); err != nil {
|
||||
if err := h.Repo.DeleteForwardRule(siteID, id); err != nil {
|
||||
log.Println("Error deleting forward rule: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting forward rule"})
|
||||
}
|
||||
@@ -275,7 +277,7 @@ func (h *SiteHandler) GetSiteCustomHeaders(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /custom-headers/{id} [get]
|
||||
func (h *SiteHandler) GetCustomHeaders(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
id := c.Params("customHeaderId")
|
||||
|
||||
customHeaders, err := h.Repo.GetCustomHeaders(id)
|
||||
if err != nil {
|
||||
@@ -347,7 +349,8 @@ func (h *SiteHandler) PostCustomHeaders(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /custom-headers/{id} [put]
|
||||
func (h *SiteHandler) PutCustomHeaders(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("customHeaderId")
|
||||
|
||||
if _, err := h.Repo.GetCustomHeaders(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -368,7 +371,7 @@ func (h *SiteHandler) PutCustomHeaders(c fiber.Ctx) error {
|
||||
}
|
||||
|
||||
customHeaders.ID = id
|
||||
if err := h.Repo.UpdateCustomHeaders(&customHeaders); err != nil {
|
||||
if err := h.Repo.UpdateCustomHeaders(siteID, &customHeaders); err != nil {
|
||||
log.Println("Error updating custom headers: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while updating custom headers"})
|
||||
}
|
||||
@@ -394,7 +397,8 @@ func (h *SiteHandler) PutCustomHeaders(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /custom-headers/{id} [delete]
|
||||
func (h *SiteHandler) DeleteCustomHeaders(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("customHeaderId")
|
||||
|
||||
if _, err := h.Repo.GetCustomHeaders(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -404,7 +408,7 @@ func (h *SiteHandler) DeleteCustomHeaders(c fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting custom headers"})
|
||||
}
|
||||
|
||||
if err := h.Repo.DeleteCustomHeaders(id); err != nil {
|
||||
if err := h.Repo.DeleteCustomHeaders(siteID, id); err != nil {
|
||||
log.Println("Error deleting custom headers: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting custom headers"})
|
||||
}
|
||||
@@ -424,7 +428,7 @@ func (h *SiteHandler) DeleteCustomHeaders(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /custom-headers/{id}/headers [get]
|
||||
func (h *SiteHandler) GetCustomHeaderHeaders(c fiber.Ctx) error {
|
||||
customHeaderID := c.Params("id")
|
||||
customHeaderID := c.Params("customHeaderId")
|
||||
|
||||
customHeaders, err := h.Repo.GetCustomHeaders(customHeaderID)
|
||||
if err != nil {
|
||||
@@ -453,7 +457,7 @@ func (h *SiteHandler) GetCustomHeaderHeaders(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /headers/{id} [get]
|
||||
func (h *SiteHandler) GetHeader(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
id := c.Params("headerId")
|
||||
|
||||
header, err := h.Repo.GetHeader(id)
|
||||
if err != nil {
|
||||
@@ -482,7 +486,8 @@ func (h *SiteHandler) GetHeader(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /custom-headers/{id}/headers [post]
|
||||
func (h *SiteHandler) PostHeader(c fiber.Ctx) error {
|
||||
customHeaderID := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
customHeaderID := c.Params("customHeaderId")
|
||||
|
||||
if _, err := h.Repo.GetCustomHeaders(customHeaderID); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -502,7 +507,7 @@ func (h *SiteHandler) PostHeader(c fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(&models.APIError{Message: "Invalid request body: " + err.Error()})
|
||||
}
|
||||
|
||||
if err := h.Repo.CreateHeader(customHeaderID, &header); err != nil {
|
||||
if err := h.Repo.CreateHeader(siteID, customHeaderID, &header); err != nil {
|
||||
log.Println("Error creating header: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while creating header"})
|
||||
}
|
||||
@@ -525,7 +530,8 @@ func (h *SiteHandler) PostHeader(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /headers/{id} [put]
|
||||
func (h *SiteHandler) PutHeader(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("headerId")
|
||||
|
||||
if _, err := h.Repo.GetHeader(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -546,7 +552,7 @@ func (h *SiteHandler) PutHeader(c fiber.Ctx) error {
|
||||
}
|
||||
|
||||
header.ID = id
|
||||
if err := h.Repo.UpdateHeader(&header); err != nil {
|
||||
if err := h.Repo.UpdateHeader(siteID, &header); err != nil {
|
||||
log.Println("Error updating header: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while updating header"})
|
||||
}
|
||||
@@ -572,7 +578,8 @@ func (h *SiteHandler) PutHeader(c fiber.Ctx) error {
|
||||
// @Failure 500 {object} models.APIError "Internal server error"
|
||||
// @Router /headers/{id} [delete]
|
||||
func (h *SiteHandler) DeleteHeader(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
siteID := c.Params("id")
|
||||
id := c.Params("headerId")
|
||||
|
||||
if _, err := h.Repo.GetHeader(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
@@ -582,7 +589,7 @@ func (h *SiteHandler) DeleteHeader(c fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting header"})
|
||||
}
|
||||
|
||||
if err := h.Repo.DeleteHeader(id); err != nil {
|
||||
if err := h.Repo.DeleteHeader(siteID, id); err != nil {
|
||||
log.Println("Error deleting header: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting header"})
|
||||
}
|
||||
|
||||
@@ -12,14 +12,14 @@ type SiteRepository interface {
|
||||
DeleteSite(id string) error
|
||||
GetForwardRule(id string) (*models.ForwardRule, error)
|
||||
CreateForwardRule(siteID string, fr *models.ForwardRule) error
|
||||
UpdateForwardRule(fr *models.ForwardRule) error
|
||||
DeleteForwardRule(id string) error
|
||||
UpdateForwardRule(siteID string, fr *models.ForwardRule) error
|
||||
DeleteForwardRule(siteID string, id string) error
|
||||
GetCustomHeaders(id string) (*models.CustomHeaders, error)
|
||||
CreateCustomHeaders(siteID string, ch *models.CustomHeaders) error
|
||||
UpdateCustomHeaders(ch *models.CustomHeaders) error
|
||||
DeleteCustomHeaders(id string) error
|
||||
UpdateCustomHeaders(siteID string, ch *models.CustomHeaders) error
|
||||
DeleteCustomHeaders(siteID string, id string) error
|
||||
GetHeader(id string) (*models.Header, error)
|
||||
CreateHeader(customHeaderID string, h *models.Header) error
|
||||
UpdateHeader(h *models.Header) error
|
||||
DeleteHeader(id string) error
|
||||
CreateHeader(siteID string, customHeaderID string, h *models.Header) error
|
||||
UpdateHeader(siteID string, h *models.Header) error
|
||||
DeleteHeader(siteID string, id string) error
|
||||
}
|
||||
|
||||
@@ -39,23 +39,23 @@ func Register(app *fiber.App, cfg *config.Config, envCfg *envconfig.EnvConfig, d
|
||||
// Forward rules
|
||||
api.Get("/sites/:id/forward-rules", siteHandler.GetSiteForwardRules)
|
||||
api.Post("/sites/:id/forward-rules", siteHandler.PostForwardRule)
|
||||
api.Get("/forward-rules/:id", siteHandler.GetForwardRule)
|
||||
api.Put("/forward-rules/:id", siteHandler.PutForwardRule)
|
||||
api.Delete("/forward-rules/:id", siteHandler.DeleteForwardRule)
|
||||
api.Get("/sites/:id/forward-rules/:ruleId", siteHandler.GetForwardRule)
|
||||
api.Put("/sites/:id/forward-rules/:ruleId", siteHandler.PutForwardRule)
|
||||
api.Delete("/sites/:id/forward-rules/:ruleId", siteHandler.DeleteForwardRule)
|
||||
|
||||
// Custom headers (header rules)
|
||||
api.Get("/sites/:id/custom-headers", siteHandler.GetSiteCustomHeaders)
|
||||
api.Post("/sites/:id/custom-headers", siteHandler.PostCustomHeaders)
|
||||
api.Get("/custom-headers/:id", siteHandler.GetCustomHeaders)
|
||||
api.Put("/custom-headers/:id", siteHandler.PutCustomHeaders)
|
||||
api.Delete("/custom-headers/:id", siteHandler.DeleteCustomHeaders)
|
||||
api.Get("/sites/:id/custom-headers/:customHeaderId", siteHandler.GetCustomHeaders)
|
||||
api.Put("/sites/:id/custom-headers/:customHeaderId", siteHandler.PutCustomHeaders)
|
||||
api.Delete("/sites/:id/custom-headers/:customHeaderId", siteHandler.DeleteCustomHeaders)
|
||||
|
||||
// Headers
|
||||
api.Get("/custom-headers/:id/headers", siteHandler.GetCustomHeaderHeaders)
|
||||
api.Post("/custom-headers/:id/headers", siteHandler.PostHeader)
|
||||
api.Get("/headers/:id", siteHandler.GetHeader)
|
||||
api.Put("/headers/:id", siteHandler.PutHeader)
|
||||
api.Delete("/headers/:id", siteHandler.DeleteHeader)
|
||||
api.Get("/sites/:id/custom-headers/:customHeaderId/headers", siteHandler.GetCustomHeaderHeaders)
|
||||
api.Post("/sites/:id/custom-headers/:customHeaderId/headers", siteHandler.PostHeader)
|
||||
api.Get("/sites/:id/headers/:headerId", siteHandler.GetHeader)
|
||||
api.Put("/sites/:id/headers/:headerId", siteHandler.PutHeader)
|
||||
api.Delete("/sites/:id/headers/:headerId", siteHandler.DeleteHeader)
|
||||
|
||||
// Deployments
|
||||
api.Get("/deployments/:id", deploymentsHandler.GetDeployment)
|
||||
|
||||
@@ -233,7 +233,7 @@ func (r *SQLiteSiteRepository) CreateForwardRule(siteID string, fr *models.Forwa
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) UpdateForwardRule(fr *models.ForwardRule) error {
|
||||
func (r *SQLiteSiteRepository) UpdateForwardRule(siteID string, fr *models.ForwardRule) error {
|
||||
_, err := r.db.Exec(`
|
||||
UPDATE forward_rules SET source=?, destination=?, status_code=?, regex=? WHERE id=?`,
|
||||
fr.Source, fr.Destination, fr.StatusCode, fr.Regex, fr.ID,
|
||||
@@ -244,7 +244,7 @@ func (r *SQLiteSiteRepository) UpdateForwardRule(fr *models.ForwardRule) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) DeleteForwardRule(id string) error {
|
||||
func (r *SQLiteSiteRepository) DeleteForwardRule(_ string, id string) error {
|
||||
_, err := r.db.Exec(`DELETE FROM forward_rules WHERE id = ?`, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("delete forward rule: %w", err)
|
||||
@@ -284,7 +284,7 @@ func (r *SQLiteSiteRepository) CreateCustomHeaders(siteID string, ch *models.Cus
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) UpdateCustomHeaders(ch *models.CustomHeaders) error {
|
||||
func (r *SQLiteSiteRepository) UpdateCustomHeaders(siteID string, ch *models.CustomHeaders) error {
|
||||
tx, err := r.db.Begin()
|
||||
if err != nil {
|
||||
return fmt.Errorf("update custom headers begin tx: %w", err)
|
||||
@@ -305,7 +305,7 @@ func (r *SQLiteSiteRepository) UpdateCustomHeaders(ch *models.CustomHeaders) err
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) DeleteCustomHeaders(id string) error {
|
||||
func (r *SQLiteSiteRepository) DeleteCustomHeaders(_ string, id string) error {
|
||||
_, err := r.db.Exec(`DELETE FROM custom_headers WHERE id = ?`, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("delete custom headers: %w", err)
|
||||
@@ -325,7 +325,7 @@ func (r *SQLiteSiteRepository) GetHeader(id string) (*models.Header, error) {
|
||||
return &h, nil
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) CreateHeader(customHeaderID string, h *models.Header) error {
|
||||
func (r *SQLiteSiteRepository) CreateHeader(_ string, customHeaderID string, h *models.Header) error {
|
||||
h.ID = uuid.NewString()
|
||||
_, err := r.db.Exec(
|
||||
`INSERT INTO headers (id, custom_header_id, key, value) VALUES (?, ?, ?, ?)`,
|
||||
@@ -337,7 +337,7 @@ func (r *SQLiteSiteRepository) CreateHeader(customHeaderID string, h *models.Hea
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) UpdateHeader(h *models.Header) error {
|
||||
func (r *SQLiteSiteRepository) UpdateHeader(_ string, h *models.Header) error {
|
||||
_, err := r.db.Exec(`UPDATE headers SET key=?, value=? WHERE id=?`, h.Key, h.Value, h.ID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("update header: %w", err)
|
||||
@@ -345,7 +345,7 @@ func (r *SQLiteSiteRepository) UpdateHeader(h *models.Header) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *SQLiteSiteRepository) DeleteHeader(id string) error {
|
||||
func (r *SQLiteSiteRepository) DeleteHeader(_ string, id string) error {
|
||||
_, err := r.db.Exec(`DELETE FROM headers WHERE id = ?`, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("delete header: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user