From b000b2237af35fad5267e24a45f35897bd4d7d6e Mon Sep 17 00:00:00 2001 From: MikunoNaka Date: Sun, 13 Jun 2021 23:41:06 +0530 Subject: implement API route for users --- server/database/main.go | 8 ++++++ server/database/users.go | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ server/main.go | 24 ++++++++++++++++- 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 server/database/users.go (limited to 'server') diff --git a/server/database/main.go b/server/database/main.go index 811a8eb..4eb1a91 100644 --- a/server/database/main.go +++ b/server/database/main.go @@ -39,5 +39,13 @@ func StartDB() { 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/users.go b/server/database/users.go new file mode 100644 index 0000000..d31b394 --- /dev/null +++ b/server/database/users.go @@ -0,0 +1,67 @@ +/* + * 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 ( + _ "github.com/mattn/go-sqlite3" +) + +type User struct { + Name, Email string +} + +func GetAllUsers() []User { + var allUsers []User + rows, _ := myDatabase.Query( + `SELECT Name, Email FROM Users`, + ) + + var ( + name, email string + ) + + for rows.Next() { + rows.Scan(&name, &email) + allUsers = append(allUsers, User{name, email}) + } + + return allUsers +} + +// to be added soon +/* +func RegisterUser(item Item) bool { + itemNames, _ := myDatabase.Query("SELECT model FROM Items") + + register_item, _ := myDatabase.Prepare( + `INSERT INTO Items + (Model, Desc, Price, Hsn, Gst, Category, Brand) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + ) + + // check if item already exists + // probably this should be handled by front end + // so we can check this without need of using api + for itemNames.Next() { + var rModel string + itemNames.Scan(&rModel) + if rModel == item.Model { + return false + } + } + + register_item.Exec( + item.Model, item.Desc, + item.Price, item.HSN, + item.GST, item.Cat, + item.Brand, + ) + + return true +} +*/ diff --git a/server/main.go b/server/main.go index e6c70e6..8553713 100644 --- a/server/main.go +++ b/server/main.go @@ -33,6 +33,7 @@ func main() { api := myRouter.Group("/api") people := api.Group("/people") items := api.Group("/items") + users := api.Group("/users") // items API routes items.GET("/get-all", getAllItems) @@ -43,6 +44,10 @@ func main() { people.GET("/get-all", getAllPeople) people.POST("/register", registerPerson) + // users API routes + users.GET("/get-all", getAllUsers) + // users.POST("/register", registerUser) + myRouter.Run(":8080") } @@ -75,7 +80,7 @@ func registerItem(ctx *gin.Context) { // people API functions func getAllPeople(ctx *gin.Context) { - // ctx.Header("Content-Type", "application/json") + ctx.Header("Content-Type", "application/json") ctx.JSON(http.StatusOK, db.GetAllPeople()) } @@ -89,3 +94,20 @@ func registerPerson(ctx *gin.Context) { 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