From 5ca14fcf3e949308eb0b2d636169e6601df1908d Mon Sep 17 00:00:00 2001 From: MikunoNaka Date: Wed, 28 Apr 2021 16:19:00 +0530 Subject: New Feature: Ability to register new items in the database --- server/database/database.go | 58 +++++++++++++++++++++++++++++++------------- server/main.go | 23 +++++++++++++++++- server/openbills.db | Bin 8192 -> 12288 bytes 3 files changed, 63 insertions(+), 18 deletions(-) (limited to 'server') diff --git a/server/database/database.go b/server/database/database.go index 16b6f65..8b7c7f6 100644 --- a/server/database/database.go +++ b/server/database/database.go @@ -12,43 +12,67 @@ package database import ( - _ "github.com/mattn/go-sqlite3" "database/sql" + _ "github.com/mattn/go-sqlite3" ) type Item struct { Model string Desc string `json:"Description"` - Price int // *float32 + Price float64 HSN int } - var myDatabase *sql.DB +var registered_items *sql.Stmt +var register_item *sql.Stmt func init() { myDatabase, _ = sql.Open("sqlite3", "./openbills.db") -} -var myItems *sql.Stmt -var addToMyItems *sql.Stmt -func init() { - myItems, _ = myDatabase.Prepare("CREATE TABLE IF NOT EXISTS RegisteredItems (id INTEGER PRIMARY KEY, model TEXT, desc TEXT, price INTEGER, HSN INTEGER)") - myItems.Exec() + registered_items, _ = myDatabase.Prepare( + `CREATE TABLE IF NOT EXISTS registered_items + (id INTEGER PRIMARY KEY AUTOINCREMENT, + model TEXT NOT NULL, + desc TEXT, + price REAL, + hsn BLOB)`, + ) + registered_items.Exec() - addToMyItems, _ = myDatabase.Prepare("INSERT INTO RegisteredItems (id, model, desc, price, hsn) VALUES (?, ?, ?, ?, ?)") + register_item, _ = myDatabase.Prepare( + `INSERT INTO registered_items + (model, desc, price, hsn) + VALUES (?, ?, ?, ?)`, + ) } func GetAllItems() []Item { var allItems []Item - rows, _ := myDatabase.Query("SELECT model, desc, price, hsn FROM RegisteredItems") + rows, _ := myDatabase.Query( + `SELECT model, desc, price, hsn FROM registered_items`, + ) + + var ( + model, desc string + price float64 + HSN int + ) - var model string - var desc string - var price int - var hsn int for rows.Next() { - rows.Scan(&model, &desc, &price, &hsn) - allItems = append(allItems, Item{model, desc, price, hsn}) + rows.Scan(&model, &desc, &price, &HSN) + allItems = append(allItems, Item{model, desc, price, HSN}) } + return allItems } + +func RegisterItem(model string, desc string, price float64, HSN int) { + /* + var item Item = Item{ + model, desc, price, HSN, + } + + register_item.Exec(item.Model, item.Desc, item.Price, item.HSN) + */ + register_item.Exec(model, desc, price, HSN) +} diff --git a/server/main.go b/server/main.go index b514a31..1aa34c3 100644 --- a/server/main.go +++ b/server/main.go @@ -16,7 +16,7 @@ import ( "github.com/gin-gonic/contrib/static" "net/http" - // this handles all the database functions + "strconv" db "github.com/MikunoNaka/openbills/database" ) @@ -33,6 +33,9 @@ func main() { items := api.Group("/items") items.GET("/", getAllItems) + items.POST("/", registerItem) + + // items.POST("/", registerItem) myRouter.Run(":8080") } @@ -41,3 +44,21 @@ func getAllItems(ctx *gin.Context) { ctx.Header("Content-Type", "application/json") ctx.JSON(http.StatusOK, db.GetAllItems()) } + +func registerItem(ctx *gin.Context) { + // extract data + model := ctx.Query("model") + desc := ctx.Query("desc") + price, _ := strconv.ParseFloat(ctx.Query("price"), 64) + hsn, _ := strconv.Atoi(ctx.Query("hsn")) + + // why does it show warnings + item := db.Item { + model, + desc, + price, + hsn, + } + + db.RegisterItem(item.Model, item.Desc, item.Price, item.HSN) +} diff --git a/server/openbills.db b/server/openbills.db index 1f2afd2..4f15f57 100644 Binary files a/server/openbills.db and b/server/openbills.db differ -- cgit v1.2.3