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/database/database.go | 51 ++++++++++++++++++++ server/database/main.go | 51 -------------------- server/main.go | 97 +------------------------------------- server/router/router.go | 110 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 163 insertions(+), 146 deletions(-) create mode 100644 server/database/database.go delete mode 100644 server/database/main.go create mode 100644 server/router/router.go diff --git a/server/database/database.go b/server/database/database.go new file mode 100644 index 0000000..c2c0dfe --- /dev/null +++ b/server/database/database.go @@ -0,0 +1,51 @@ +/* + * 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 database + +import ( + "database/sql" + _ "github.com/mattn/go-sqlite3" +) + +var myDatabase *sql.DB +func InitDB() { + myDatabase, _ = sql.Open("sqlite3", "./openbills.db") + + init_items, _ := myDatabase.Prepare( + `CREATE TABLE IF NOT EXISTS Items + (id INTEGER PRIMARY KEY AUTOINCREMENT, + Model TEXT NOT NULL, + Desc TEXT, + Price REAL, + Hsn BLOB, + Gst REAL, + Category TEXT, + Brand TEXT)`, + ) + init_items.Exec() + + init_people, _ := myDatabase.Prepare( + `CREATE TABLE IF NOT EXISTS People + (id INTEGER PRIMARY KEY AUTOINCREMENT, + Name TEXT, + Address TEXT, + Phone TEXT, + Email TEXT)`, + ) + init_people.Exec() + + init_users, _ := myDatabase.Prepare( + `CREATE TABLE IF NOT EXISTS Users + (id INTEGER PRIMARY KEY AUTOINCREMENT, + Name TEXT, + Email TEXT)`, + ) + init_users.Exec() +} + diff --git a/server/database/main.go b/server/database/main.go deleted file mode 100644 index 4eb1a91..0000000 --- a/server/database/main.go +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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 database - -import ( - "database/sql" - _ "github.com/mattn/go-sqlite3" -) - -var myDatabase *sql.DB -func StartDB() { - myDatabase, _ = sql.Open("sqlite3", "./openbills.db") - - init_items, _ := myDatabase.Prepare( - `CREATE TABLE IF NOT EXISTS Items - (id INTEGER PRIMARY KEY AUTOINCREMENT, - Model TEXT NOT NULL, - Desc TEXT, - Price REAL, - Hsn BLOB, - Gst REAL, - Category TEXT, - Brand TEXT)`, - ) - init_items.Exec() - - init_people, _ := myDatabase.Prepare( - `CREATE TABLE IF NOT EXISTS People - (id INTEGER PRIMARY KEY AUTOINCREMENT, - Name TEXT, - Address TEXT, - Phone TEXT, - Email TEXT)`, - ) - init_people.Exec() - - init_users, _ := myDatabase.Prepare( - `CREATE TABLE IF NOT EXISTS Users - (id INTEGER PRIMARY KEY AUTOINCREMENT, - Name TEXT, - Email TEXT)`, - ) - init_users.Exec() -} - diff --git a/server/main.go b/server/main.go index 8553713..2f0d87f 100644 --- a/server/main.go +++ b/server/main.go @@ -12,102 +12,9 @@ package main import ( - "github.com/gin-gonic/gin" - "github.com/gin-gonic/contrib/static" - "net/http" - - "strconv" - db "github.com/MikunoNaka/openbills/database" + router "github.com/MikunoNaka/openbills/router" ) func main() { - db.StartDB() - 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()) + router.InitRouter() } - -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) -// } 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