diff --git a/backend/handlers/handle_auth.go b/backend/handlers/handle_auth.go index cea3d8a..ccf72cb 100644 --- a/backend/handlers/handle_auth.go +++ b/backend/handlers/handle_auth.go @@ -7,7 +7,6 @@ import ( "adam-french.co.uk/backend/models" "github.com/gin-gonic/gin" "golang.org/x/crypto/bcrypt" - "gorm.io/gorm" ) func (store *Store) AuthMiddlewear(ctx *gin.Context) { @@ -48,7 +47,7 @@ func (store *Store) CheckToken(ctx *gin.Context) { } userID := uint(userIDF) - user := models.User{Model: gorm.Model{ID: userID}} + user := models.User{ID: userID} tx := store.DB.First(&user) if tx.Error != nil { ctx.JSON(http.StatusNotFound, tx.Error.Error()) @@ -80,8 +79,8 @@ func (store *Store) RefreshToken(ctx *gin.Context) { } userID := uint(userIDF) - user := models.User{} - tx := store.DB.First(&user, userID) + user := models.User{ID: userID} + tx := store.DB.First(&user) if tx.Error != nil { ctx.JSON(http.StatusNotFound, tx.Error.Error()) removeCookies(ctx) diff --git a/backend/handlers/handle_post.go b/backend/handlers/handle_post.go index 37c2e6f..283ea51 100644 --- a/backend/handlers/handle_post.go +++ b/backend/handlers/handle_post.go @@ -2,6 +2,7 @@ package handlers import ( "net/http" + "strconv" "adam-french.co.uk/backend/models" "github.com/gin-gonic/gin" @@ -23,9 +24,16 @@ func (store *Store) GetPosts(ctx *gin.Context) { } func (store *Store) GetPost(ctx *gin.Context) { - postID := ctx.Param("id") - var post models.Post - if err := store.DB.First(&post, postID).Error; err != nil { + postIDStr := ctx.Param("id") + + postID, err := strconv.ParseUint(postIDStr, 10, 64) + if err != nil { + ctx.JSON(http.StatusBadRequest, "invalid id") + return + } + + post := models.Post{ID: uint(postID)} + if err := store.DB.First(&post).Error; err != nil { ctx.JSON(http.StatusNotFound, err.Error()) return } diff --git a/backend/models/post.go b/backend/models/post.go index aee0b5b..aa1bbf8 100644 --- a/backend/models/post.go +++ b/backend/models/post.go @@ -1,11 +1,17 @@ package models -import "gorm.io/gorm" +import ( + "database/sql" + "time" +) type Post struct { - gorm.Model // includes ID, CreatedAt, UpdatedAt, DeletedAt - Title string `gorm:"not null" json:"title"` - AuthorID uint `json:"-"` - Author *User `gorm:"foreignKey:AuthorID" json:"author"` - Content string `json:"content"` + ID uint `gorm:"primarykey" json:"id"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` + DeletedAt sql.NullTime `gorm:"index" json:"deletedAt"` + Title string `gorm:"not null" json:"title"` + AuthorID uint `json:"-"` + Author *User `gorm:"foreignKey:AuthorID" json:"author"` + Content string `json:"content"` } diff --git a/backend/models/user.go b/backend/models/user.go index a450125..2f925fe 100644 --- a/backend/models/user.go +++ b/backend/models/user.go @@ -1,10 +1,16 @@ package models -import "gorm.io/gorm" +import ( + "database/sql" + "time" +) type User struct { - gorm.Model // includes ID, CreatedAt, UpdatedAt, DeletedAt - Username string `gorm:"uniqueIndex" json:"username"` - Password []byte `json:"-"` - Admin bool `json:"admin"` + ID uint `gorm:"primarykey" json:"id"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` + DeletedAt sql.NullTime `gorm:"index" json:"deletedAt"` + Username string `gorm:"uniqueIndex" json:"username"` + Password []byte `json:"-"` + Admin bool `json:"admin"` }