package main import ( "fmt" "gitea-issue/giteaClient" "github.com/caarlos0/env" "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" "net/http" "strconv" ) var ( db *gorm.DB giteaConfig giteaClient.GiteaConfig ) func init() { //open a db connection var err error db, err := gorm.Open("sqlite3", "./database.db") if err != nil { panic("failed to connect database") } if err := env.Parse(&giteaConfig); err != nil { panic("ENV error") } giteaClient.SetUp(giteaConfig) db.AutoMigrate(&userModel{}) } func main() { router := gin.Default() v1 := router.Group("/api/v1/issues") { v1.GET("/", getIssues) v1.GET("/:id", getIssue) //Migrate the schema v1.GET("/:id/comments", getIssue) } _ = router.Run() } type ( // todoModel describes a todoModel type userModel struct { gorm.Model Email string `json:"email"` Token int `json:"token"` } ) func getIssues(c *gin.Context) { issues, err := giteaClient.GetIssues(); if(err != nil){ c.AbortWithStatus(http.StatusNotFound) } c.AsciiJSON(http.StatusOK, issues) } func getIssue(c *gin.Context) { issueId, err := strconv.ParseInt(c.Param("id"), 10, 64) if err != nil { fmt.Println(fmt.Sprintf("ParseInt err: %+v", err)) c.AsciiJSON(http.StatusNotFound, err.Error()) } issue, err := giteaClient.GetIssue(issueId) if err != nil { c.AbortWithStatus(http.StatusNotFound) } c.AsciiJSON(http.StatusOK, issue) } func getIssueComments(c *gin.Context) { issueId, err := strconv.ParseInt(c.Param("id"), 10, 64) if err != nil { fmt.Println(fmt.Sprintf("ParseInt err: %+v", err)) c.AsciiJSON(http.StatusNotFound, err.Error()) } issueComments, err := giteaClient.GetIssueComments(issueId) if err != nil { c.AbortWithStatus(http.StatusNotFound) } c.AsciiJSON(http.StatusOK, issueComments) }