aboutsummaryrefslogtreecommitdiff
path: root/server/database/items.go
diff options
context:
space:
mode:
authorMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-05-01 08:22:47 +0530
committerMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-05-01 08:22:47 +0530
commit0fa16426f56120c4eb18bc18c202703c460daed8 (patch)
tree8d3479316a31c3ca6fe689d0d8f79f0b7d99154a /server/database/items.go
parentaf6f3e5955f50699aea2868cea9400c50aee5bfd (diff)
divided package database into multiple files for ease
Diffstat (limited to 'server/database/items.go')
-rw-r--r--server/database/items.go74
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
+}