From 57e621681f4df356a1cbdef4d772c90f1dc5a1cd Mon Sep 17 00:00:00 2001 From: perp Date: Thu, 6 Jun 2024 20:08:04 +0100 Subject: [PATCH] Added account delete endpoint --- internal/database/account/delete.go | 20 +++++++++++++++ internal/router/api/v1/account/delete.go | 31 ++++++++++++++++++++++++ internal/router/api/v1/v1.go | 1 + 3 files changed, 52 insertions(+) create mode 100644 internal/database/account/delete.go create mode 100644 internal/router/api/v1/account/delete.go diff --git a/internal/database/account/delete.go b/internal/database/account/delete.go new file mode 100644 index 0000000..9a98bbc --- /dev/null +++ b/internal/database/account/delete.go @@ -0,0 +1,20 @@ +package account + +import "github.com/rs/zerolog/log" + +// Delete a model by id +func (a *Account) DeleteByID(id int64) error { + // Store model + model := &Model{ + ID: id, + } + + // Delete model + _, err := a.db.Delete(model) + if err != nil { + log.Err(err).Str("table", "account").Str("type", "id").Msg("Could not delete row") + return err + } + + return nil +} diff --git a/internal/router/api/v1/account/delete.go b/internal/router/api/v1/account/delete.go new file mode 100644 index 0000000..a1712bf --- /dev/null +++ b/internal/router/api/v1/account/delete.go @@ -0,0 +1,31 @@ +package account + +import ( + "git.supernets.org/perp/gopay/internal/context" +) + +// @summary Delete an account +// @tags account +// @accept json +// @produce json +// @success 204 +// @response default {object} v1.Error "There was an error" +// @router /v1/account/delete [delete] +func Delete(ctx *context.Context) { + // Call middleware + ctx.GetAccount() + + // Account not found + if ctx.Account == nil { + return + } + + // Delete account + err := ctx.Database.Account.DeleteByID(ctx.Account.ID) + if err != nil { + ctx.Error(500, "InternalServerError") + return + } + + ctx.String(200, "") +} diff --git a/internal/router/api/v1/v1.go b/internal/router/api/v1/v1.go index d52b331..708d196 100644 --- a/internal/router/api/v1/v1.go +++ b/internal/router/api/v1/v1.go @@ -26,6 +26,7 @@ func Register(ctx *context.Context, engine *gin.Engine) { { a := v1.Group("account") + a.DELETE("delete", ctx.Register(account.Delete)) a.GET("", ctx.Register(account.Fetch)) a.POST("login", ctx.Register(account.Login)) a.POST("register", ctx.Register(account.Register))