From 37ead7ea9ca1e0c435c57866c289917e0f488459 Mon Sep 17 00:00:00 2001 From: MikunoNaka Date: Sun, 13 Jun 2021 23:57:18 +0530 Subject: seperated the router into another module --- server/router/router.go | 110 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 server/router/router.go (limited to 'server/router') diff --git a/server/router/router.go b/server/router/router.go new file mode 100644 index 0000000..169ec17 --- /dev/null +++ b/server/router/router.go @@ -0,0 +1,110 @@ +/* + * OpenBills - Self hosted browser app to generate and keep track of simple invoices + * Version - 0 + * Licensed under the MIT license - https://opensource.org/licenses/MIT + * + * Copyright (c) 2021 Vidhu Kant Sharma +*/ + +package router + +import ( + "github.com/gin-gonic/gin" + "github.com/gin-gonic/contrib/static" + "net/http" + + "strconv" + db "github.com/MikunoNaka/openbills/database" +) + +func InitRouter() { + db.InitDB() + myRouter := gin.New() + myRouter.Use(gin.Logger()) + + // serve static front end on / + myRouter.Use(static.Serve("/", + static.LocalFile("./app", true))) + + // define routes + api := myRouter.Group("/api") + people := api.Group("/people") + items := api.Group("/items") + users := api.Group("/users") + + // items API routes + items.GET("/get-all", getAllItems) + items.POST("/register", registerItem) + + + // people API routes + people.GET("/get-all", getAllPeople) + people.POST("/register", registerPerson) + + // users API routes + users.GET("/get-all", getAllUsers) + // users.POST("/register", registerUser) + + myRouter.Run(":8080") +} + +// items API functions +func getAllItems(ctx *gin.Context) { + ctx.Header("Content-Type", "application/json") + ctx.JSON(http.StatusOK, db.GetAllItems()) +} + +func registerItem(ctx *gin.Context) { + // extract data not string + price, _ := strconv.ParseFloat(ctx.Query("price"), 64) + hsn, _ := strconv.Atoi(ctx.Query("hsn")) + gst, _ := strconv.ParseFloat(ctx.Query("gst"), 64) + cat := "cat coming soon" + brand := "brand coming soon" + + item := db.Item { + Model: ctx.Query("model"), + Desc: ctx.Query("desc"), + Price: price, + HSN: hsn, + GST: gst, + Cat: cat, + Brand: brand, + } + + db.RegisterItem(item) +} + +// people API functions +func getAllPeople(ctx *gin.Context) { + ctx.Header("Content-Type", "application/json") + ctx.JSON(http.StatusOK, db.GetAllPeople()) +} + +func registerPerson(ctx *gin.Context) { + person := db.Person { + Name: ctx.Query("name"), + Address: ctx.Query("address"), + Phone: ctx.Query("phone"), + Email: ctx.Query("email"), + } + + db.RegisterPerson(person) +} + +// users API functions +func getAllUsers(ctx *gin.Context) { + ctx.Header("Content-Type", "application/json") + ctx.JSON(http.StatusOK, db.GetAllUsers()) +} + +// func registerUser(ctx *gin.Context) { +// person := db.Person { +// Name: ctx.Query("name"), +// Address: ctx.Query("address"), +// Phone: ctx.Query("phone"), +// Email: ctx.Query("email"), +// } +// +// db.RegisterPerson(person) +// } -- cgit v1.2.3