aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-06-13 23:41:06 +0530
committerMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-06-13 23:41:06 +0530
commitb000b2237af35fad5267e24a45f35897bd4d7d6e (patch)
treee0fc9fc3345eca222538895dd93f691f93a201c0
parent671c3a765ffc53575f517cef715dc16be5aa43c5 (diff)
implement API route for users
-rw-r--r--server/database/main.go8
-rw-r--r--server/database/users.go67
-rw-r--r--server/main.go24
3 files changed, 98 insertions, 1 deletions
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)
+// }