Skip to content

Commit

Permalink
Merge pull request #11 from doneill/task/jdo-30-query-dbuser
Browse files Browse the repository at this point in the history
Query db for username
  • Loading branch information
doneill committed Dec 17, 2023
2 parents c1ea451 + cbebbc8 commit 2d9a199
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 24 deletions.
46 changes: 22 additions & 24 deletions cmd/open.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package cmd

import (
"fmt"
"os"

"github.com/doneill/er-cli/data"
"github.com/olekukonko/tablewriter"
"github.com/spf13/cobra"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)

var dbUser bool
var displayTables bool

// ----------------------------------------------
Expand All @@ -29,51 +31,47 @@ var openCmd = &cobra.Command{
// ----------------------------------------------

func open(file string) {
db, err := connectToSQLite(file)
var count int64

db, err := data.DbConnect(file)
if err != nil {
fmt.Println(err)
return
}

switch {
case dbUser:
var user []data.Accounts_User
db.First(&user)
fmt.Println(user[0].Username)
case displayTables:
tables, err := getTables(*db)
tables, err := data.GetTables(*db)
if err != nil {
fmt.Println(err)
return
}

table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Name", "Count"})

for _, tableName := range tables {
fmt.Println(tableName)
db.Table(tableName).Count(&count)
table.Append([]string{tableName, fmt.Sprintf("%d", count)})
}

table.Render()
default:
message := fmt.Sprintf("%s successfully opened", file)
message := fmt.Sprintf("%s successfully opened!", file)
fmt.Println(message)
}
}

func connectToSQLite(file string) (*gorm.DB, error) {
db, err := gorm.Open(sqlite.Open(file), &gorm.Config{})
if err != nil {
return nil, err
}

return db, nil
}

func getTables(db gorm.DB) (tableList []string, err error) {
tables, err := db.Migrator().GetTables()
if err != nil {
return nil, err
}

return tables, nil
}

// ----------------------------------------------
// initialize
// ----------------------------------------------

func init() {
rootCmd.AddCommand(openCmd)
openCmd.Flags().BoolVarP(&dbUser, "user", "u", false, "Display database account user")
openCmd.Flags().BoolVarP(&displayTables, "tables", "t", false, "Display all database tables")
}
28 changes: 28 additions & 0 deletions data/connect.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package data

import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)

// ----------------------------------------------
// exported funtions
// ----------------------------------------------

func DbConnect(file string) (*gorm.DB, error) {
db, err := gorm.Open(sqlite.Open(file), &gorm.Config{})
if err != nil {
return nil, err
}

return db, nil
}

func GetTables(db gorm.DB) (tableList []string, err error) {
tables, err := db.Migrator().GetTables()
if err != nil {
return nil, err
}

return tables, nil
}
26 changes: 26 additions & 0 deletions data/tables.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package data

// ----------------------------------------------
// table stucts
// ----------------------------------------------

type Accounts_User struct {
ID int `gorm:"primaryKey;autoIncrement"`
RemoteID string `json:"remote_id" gorm:"column:remote_id"`
Username string `json:"username" gorm:"column:username"`
FirstName string `json:"first_name" gorm:"column:first_name"`
LastName string `json:"last_name" gorm:"column:last_name"`
Email string `json:"email" gorm:"column:email"`
}

// ----------------------------------------------
// table configurations
// ----------------------------------------------

type Tabler interface {
TableName() string
}

func (Accounts_User) TableName() string {
return "accounts_user"
}

0 comments on commit 2d9a199

Please sign in to comment.