adding new tables

This commit is contained in:
2026-02-06 12:52:52 +00:00
parent 1931661d0a
commit f546e8ae23
5 changed files with 121 additions and 5 deletions

View File

@@ -0,0 +1,40 @@
package handlers
import (
"net/http"
"adam-french.co.uk/backend/models"
"github.com/gin-gonic/gin"
)
type CreateActivityInput struct {
Type string `json:"type" binding:"required"`
Name string `json:"name" binding:"required"`
Link *string `json:"link"`
}
func (store *Store) GetActivity(ctx *gin.Context) {
var activitys []models.Activity
if err := store.DB.Order("Created_At DESC").Find(&activitys).Error; err != nil {
ctx.JSON(http.StatusInternalServerError, err.Error())
return
}
ctx.JSON(http.StatusOK, activitys)
}
func (store *Store) CreateActivity(ctx *gin.Context) {
var input CreateActivityInput
if err := ctx.ShouldBindBodyWithJSON(&input); err != nil {
ctx.JSON(http.StatusBadRequest, err.Error())
return
}
activity := models.Activity{Type: input.Type, Name: input.Name, Link: input.Link}
tx := store.DB.Create(&activity)
if tx.Error != nil {
ctx.JSON(http.StatusInternalServerError, tx.Error.Error())
return
}
ctx.JSON(http.StatusCreated, activity)
}

View File

@@ -0,0 +1,40 @@
package handlers
import (
"net/http"
"adam-french.co.uk/backend/models"
"github.com/gin-gonic/gin"
)
type CreateFavoriteInput struct {
Type string `json:"type" binding:"required"`
Name string `json:"name" binding:"required"`
Link *string `json:"link"`
}
func (store *Store) GetFavorites(ctx *gin.Context) {
var favorites []models.Favorite
if err := store.DB.Order("Created_At DESC").Find(&favorites).Error; err != nil {
ctx.JSON(http.StatusInternalServerError, err.Error())
return
}
ctx.JSON(http.StatusOK, favorites)
}
func (store *Store) CreateFavorite(ctx *gin.Context) {
var input CreateFavoriteInput
if err := ctx.ShouldBindBodyWithJSON(&input); err != nil {
ctx.JSON(http.StatusBadRequest, err.Error())
return
}
favorite := models.Favorite{Type: input.Type, Name: input.Name, Link: input.Link}
tx := store.DB.Create(&favorite)
if tx.Error != nil {
ctx.JSON(http.StatusInternalServerError, tx.Error.Error())
return
}
ctx.JSON(http.StatusCreated, favorite)
}

View File

@@ -63,32 +63,47 @@ func main() {
protected := r.Group("/", store.AuthMiddlewear) protected := r.Group("/", store.AuthMiddlewear)
// FAVORITES
r.GET("/favorites", store.GetFavorites)
protected.POST("/favorites", store.CreateFavorite)
// ACTIVITIES
r.GET("/activity", store.GetActivity)
protected.POST("/activity", store.CreateActivity)
// POSTS
r.GET("/posts", store.GetPosts) r.GET("/posts", store.GetPosts)
protected.POST("/posts", store.CreatePost) protected.POST("/posts", store.CreatePost)
r.GET("/posts/:id", store.GetPost) r.GET("/posts/:id", store.GetPost)
protected.PUT("/posts/:id", store.UpdatePost) protected.PUT("/posts/:id", store.UpdatePost)
protected.DELETE("/posts/:id", store.DeletePost) protected.DELETE("/posts/:id", store.DeletePost)
// USERS
r.GET("/user/:id", store.GetUser) r.GET("/user/:id", store.GetUser)
protected.PUT("/user/:id", store.UpdateUser) protected.PUT("/user/:id", store.UpdateUser)
protected.DELETE("/user/:id", store.DeleteUser) protected.DELETE("/user/:id", store.DeleteUser)
r.GET("/user", store.GetUsers) r.GET("/user", store.GetUsers)
r.POST("/user", store.CreateUser) r.POST("/user", store.CreateUser)
// AUTH
r.POST("/auth/login", store.Login) r.POST("/auth/login", store.Login)
r.POST("/auth/refresh", store.RefreshToken) r.POST("/auth/refresh", store.RefreshToken)
r.GET("/auth/check", store.CheckToken) r.GET("/auth/check", store.CheckToken)
r.POST("/auth/logout", store.Logout) r.POST("/auth/logout", store.Logout)
// SPOTIFY
r.GET("/spotify/callback", store.CompleteSpotifyAuth) r.GET("/spotify/callback", store.CompleteSpotifyAuth)
r.GET("/spotify/listening", store.ListeningTo) r.GET("/spotify/listening", store.ListeningTo)
r.GET("/spotify/recent", store.RecentlyPlayed) r.GET("/spotify/recent", store.RecentlyPlayed)
// r.POST("/spotify", store.SendSong) // r.POST("/spotify", store.SendSong)
// MESSAGES
r.GET("/ws", store.ConnectWebSocket) r.GET("/ws", store.ConnectWebSocket)
// NOTES
r.GET("/notes/*path", store.GetNoteFile) r.GET("/notes/*path", store.GetNoteFile)
// HELLO WORLD
r.GET("/", func(c *gin.Context) { r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello World"}) c.JSON(200, gin.H{"message": "Hello World"})
}) })

View File

@@ -35,3 +35,23 @@ type Message struct {
CreatedAt time.Time `json:"createdAt"` CreatedAt time.Time `json:"createdAt"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedAt"` DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedAt"`
} }
type Activity struct {
ID uint `gorm:"primarykey" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedAt"`
Type string `json:"type"`
Name string `json:"name"`
Link *string `json:"link"`
}
type Favorite struct {
ID uint `gorm:"primarykey" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedAt"`
Type string `json:"type"`
Name string `json:"name"`
Link *string `json:"link"`
}

View File

@@ -31,11 +31,12 @@ func connectToPostgreSQL(config *SQLConfig) (*gorm.DB, error) {
} }
func migrateDatabase(db *gorm.DB) error { func migrateDatabase(db *gorm.DB) error {
err := db.AutoMigrate(&models.User{}) err := db.AutoMigrate(
if err != nil { &models.User{},
return err &models.Post{},
} &models.Activity{},
err = db.AutoMigrate(&models.Post{}) &models.Favorite{},
)
if err != nil { if err != nil {
return err return err
} }