Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ var text = tview.NewTextView().

func main() {

dbConnect.DBconnect()
utils.AddItemsList()
appDB := dbConnect.DBconnect()
utils.AddItemsList(appDB)

flex.SetDirection(tview.FlexRow).
AddItem(tview.NewFlex().
Expand All @@ -40,11 +40,11 @@ func main() {
app.Stop()
case event.Rune() == 117:
form.Clear(true)
forms.AddUserForm()
forms.AddUserForm(appDB)
pages.SwitchToPage("Add User")
case event.Rune() == 105:
form.Clear(true)
forms.AddItemForm()
forms.AddItemForm(appDB)
pages.SwitchToPage("Add Item")
}
return event
Expand Down
3 changes: 2 additions & 1 deletion pkg/dbConnect/dbConnect.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (

var db *sql.DB

func DBconnect() {
func DBconnect() *sql.DB {
// Capture connection properties.
cfg := mysql.Config{
User: os.Getenv("DBUSER"),
Expand All @@ -35,4 +35,5 @@ func DBconnect() {
log.Fatal(pingErr)
}
fmt.Println("Connected!")
return db
}
13 changes: 7 additions & 6 deletions pkg/forms/forms.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package forms

import (
"strconv"
"database/sql"

queries "github.com/dopaminegirl19/usership/pkg/queries"
structs "github.com/dopaminegirl19/usership/pkg/structs"
Expand All @@ -15,7 +16,7 @@ var form = tview.NewForm().
SetFieldBackgroundColor(tcell.ColorRosyBrown).
SetButtonBackgroundColor(tcell.ColorRosyBrown)

func AddUserForm() *tview.Form {
func AddUserForm(db *sql.DB) *tview.Form {

user := structs.User{}
form.AddInputField("name", "", 20, nil, func(Name string) {
Expand All @@ -32,9 +33,9 @@ func AddUserForm() *tview.Form {

form.AddButton("Save", func() {
// users = append(users, user)
id, _ := queries.AddUser(user)
id, _ := queries.AddUser(user, db)
_ = id
utils.AddUsersList()
utils.AddUsersList(db)
pages.SwitchToPage("Menu")
})

Expand All @@ -45,7 +46,7 @@ func AddUserForm() *tview.Form {
return form
}

func AddItemForm() *tview.Form {
func AddItemForm(db *sql.DB) *tview.Form {

item := structs.Item{}
form.AddInputField("name", "", 20, nil, func(Name string) {
Expand All @@ -63,9 +64,9 @@ func AddItemForm() *tview.Form {

form.AddButton("Save", func() {
// users = append(users, user)
id, _ := queries.AddItem(item)
id, _ := queries.AddItem(item, db)
_ = id
utils.AddItemsList()
utils.AddItemsList(db)
pages.SwitchToPage("Menu")
})

Expand Down
31 changes: 15 additions & 16 deletions pkg/queries/queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ import (
"fmt"
)

var db *sql.DB

// UpdateUser updates the name and/or contact info of a user
func UpdateUser(u structs.User) (int64, error) {
func UpdateUser(u structs.User, db *sql.DB) (int64, error) {
result, err := db.Exec("UPDATE users SET name = ?, contact = ?, contact2 = ? WHERE id = ?", u.Name, u.Contact, sqlutils.NewNullString(u.Contact2), u.ID)
if err != nil {
return 0, fmt.Errorf("UpdateUser: %v", err)
Expand All @@ -24,7 +23,7 @@ func UpdateUser(u structs.User) (int64, error) {
}

// UpdateItem updates the name and/or description of an item
func UpdateItem(i structs.Item) (int64, error) {
func UpdateItem(i structs.Item, db *sql.DB) (int64, error) {
result, err := db.Exec("UPDATE items SET name = ?, description = ?, WHERE id = ?", i.Name, sqlutils.NewNullString(i.Description), i.ID)
if err != nil {
return 0, fmt.Errorf("UpdateItem: %v", err)
Expand All @@ -37,7 +36,7 @@ func UpdateItem(i structs.Item) (int64, error) {
}

// UpdateItemCurrentUser updates the current_user_id in an item's row
func UpdateItemCurrentUser(itemID int32, newUserID int32) (int64, error) {
func UpdateItemCurrentUser(itemID int32, newUserID int32, db *sql.DB) (int64, error) {
result, err := db.Exec("UPDATE items SET current_user_id = ? WHERE id = ?", newUserID, itemID)
if err != nil {
return 0, fmt.Errorf("UpdateItemCurrentUser: %v", err)
Expand All @@ -50,7 +49,7 @@ func UpdateItemCurrentUser(itemID int32, newUserID int32) (int64, error) {
}

// DeleteUser deletes a row from the users table
func DeleteUser(userID int32) (int64, error) {
func DeleteUser(userID int32, db *sql.DB) (int64, error) {

result, err := db.Exec("DELETE FROM users WHERE id = ?", userID)
if err != nil {
Expand All @@ -64,7 +63,7 @@ func DeleteUser(userID int32) (int64, error) {
}

// DeleteItem deletes a row from the items table
func DeleteItem(itemID int32) (int64, error) {
func DeleteItem(itemID int32, db *sql.DB) (int64, error) {

result, err := db.Exec("DELETE FROM items WHERE id = ?", itemID)
if err != nil {
Expand All @@ -78,7 +77,7 @@ func DeleteItem(itemID int32) (int64, error) {
}

// AddUser adds a row to the users table
func AddUser(u structs.User) (int32, error) {
func AddUser(u structs.User, db *sql.DB) (int32, error) {
result, err := db.Exec("INSERT INTO users (name, contact, contact2) VALUES (?, ?, ?)", u.Name, u.Contact, sqlutils.NewNullString(u.Contact2))
if err != nil {
return 0, fmt.Errorf("AddUser: %v", err)
Expand All @@ -91,7 +90,7 @@ func AddUser(u structs.User) (int32, error) {
}

// AddItem adds a row to the items table
func AddItem(i structs.Item) (int32, error) {
func AddItem(i structs.Item, db *sql.DB) (int32, error) {
result, err := db.Exec("INSERT INTO items (name, description, current_user_id) VALUES (?, ?, ?)", i.Name, sqlutils.NewNullString(i.Description), i.CurrentUserID)
if err != nil {
return 0, fmt.Errorf("AddItem: %v", err)
Expand All @@ -104,15 +103,15 @@ func AddItem(i structs.Item) (int32, error) {
}

// UserByItemID queries for the user that's currently in possession of an item.
func UserByItemID(queryItemID int32) (structs.User, error) {
func UserByItemID(queryItemID int32, db *sql.DB) (structs.User, error) {
var u structs.User
// find the item corresponding to that item id
item, err := ItemByID(queryItemID)
item, err := ItemByID(queryItemID, db)
if err != nil {
return u, fmt.Errorf("UserByItemID %q: %v", queryItemID, err)
}
// find the user corresponding to item's current user id
user, err := UserByID(item.CurrentUserID)
user, err := UserByID(item.CurrentUserID, db)
if err != nil {
return u, fmt.Errorf("UserByItemID %q: %v", queryItemID, err)
}
Expand All @@ -121,7 +120,7 @@ func UserByItemID(queryItemID int32) (structs.User, error) {
}

// ItemsByString queries for items which match a string either in name or description.
func ItemsByString(queryString string) ([]structs.Item, error) {
func ItemsByString(queryString string, db *sql.DB) ([]structs.Item, error) {
var items []structs.Item

rows, err := db.Query("SELECT * FROM items WHERE name LIKE '%?%' OR description LIKE '%?%'", queryString, queryString)
Expand All @@ -145,7 +144,7 @@ func ItemsByString(queryString string) ([]structs.Item, error) {
}

// UserByID queries for the user with a specific ID
func UserByID(queryUserid int32) (structs.User, error) {
func UserByID(queryUserid int32, db *sql.DB) (structs.User, error) {
// A user to hold data from the returned row.
var u structs.User

Expand All @@ -160,7 +159,7 @@ func UserByID(queryUserid int32) (structs.User, error) {
}

// ItemByID queries for the user with a specific ID
func ItemByID(queryItemID int32) (structs.Item, error) {
func ItemByID(queryItemID int32, db *sql.DB) (structs.Item, error) {
// An item to hold data from the returned row.
var i structs.Item

Expand All @@ -175,7 +174,7 @@ func ItemByID(queryItemID int32) (structs.Item, error) {
}

// ItemsByUser queries for items that are in the possession of a user (by user ID)
func ItemsByUser(queryUserid int32) ([]structs.Item, error) {
func ItemsByUser(queryUserid int32, db *sql.DB) ([]structs.Item, error) {
// an items slice to hold data from returned rows.
var items []structs.Item

Expand All @@ -200,7 +199,7 @@ func ItemsByUser(queryUserid int32) ([]structs.Item, error) {
}

// UsersByName queries for users that have the specified name.
func UsersByName(queryName string) ([]structs.User, error) {
func UsersByName(queryName string, db *sql.DB) ([]structs.User, error) {
// A users slice to hold data from returned rows.
var users []structs.User

Expand Down
12 changes: 5 additions & 7 deletions pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,20 @@ package utils
import (
queries "github.com/dopaminegirl19/usership/pkg/queries"
structs "github.com/dopaminegirl19/usership/pkg/structs"

"database/sql"
"fmt"
"strconv"

tview "github.com/rivo/tview"
)

var db *sql.DB

var itemText = tview.NewTextView()
var userText = tview.NewTextView()
var itemsList = tview.NewList().ShowSecondaryText(false)
var usersList = tview.NewList().ShowSecondaryText(false)

func AddUsersList() {
func AddUsersList(db *sql.DB) {
var users = make([]structs.User, 0)
usersList.Clear()

Expand Down Expand Up @@ -49,7 +47,7 @@ func SetUserText(user *structs.User) {
userText.SetText(text)
}

func AddItemsList() {
func AddItemsList(db *sql.DB) {
var items = make([]structs.Item, 0)
itemsList.Clear()

Expand All @@ -70,15 +68,15 @@ func AddItemsList() {
}

itemsList.SetSelectedFunc(func(index int, name string, description string, shortcut rune) {
SetItemText(&items[index])
SetItemText(&items[index], db)
})
}

func SetItemText(item *structs.Item) {
func SetItemText(item *structs.Item, db *sql.DB) {
itemText.Clear()

// Get current user info
current_user, _ := queries.UserByID(int32(item.CurrentUserID))
current_user, _ := queries.UserByID(int32(item.CurrentUserID), db)

text := item.Name + "\n" + item.Description + "\n\nCurrent user: \n" + current_user.Name + "\n" + current_user.Contact + "\n" + current_user.Contact2

Expand Down