diff options
Diffstat (limited to 'server/database/items.go')
-rw-r--r-- | server/database/items.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/server/database/items.go b/server/database/items.go new file mode 100644 index 0000000..d3d56fd --- /dev/null +++ b/server/database/items.go @@ -0,0 +1,74 @@ +/* + * 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 +*/ + +// handles all Items related database functions + +package database + +import ( + _ "github.com/mattn/go-sqlite3" +) + +type Item struct { + Model string + Desc string `json:"Description"` + Price float64 + HSN int + GST float64 + Cat string `json:"Category"` + Brand string +} + +func GetAllItems() []Item { + var allItems []Item + rows, _ := myDatabase.Query( + `SELECT model, desc, price, hsn, gst, category, brand FROM registered_items`, + ) + + var ( + model, desc, cat, brand string + price, GST float64 + HSN int + ) + + for rows.Next() { + rows.Scan(&model, &desc, &price, &HSN, &GST, &cat, &brand) + allItems = append(allItems, Item{model, desc, price, HSN, GST, cat, brand}) + } + + return allItems +} + +func RegisterItem(item Item) bool { + itemNames, _ := myDatabase.Query("SELECT model FROM registered_items") + + register_item, _ := myDatabase.Prepare( + `INSERT INTO registered_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 +} |