summaryrefslogtreecommitdiff
path: root/sqlite.go
diff options
context:
space:
mode:
authorNikolaus Gotsche <n@softwarefools.com>2018-01-25 03:23:19 +0100
committerNikolaus Gotsche <n@softwarefools.com>2018-01-25 03:23:19 +0100
commit2d5c636a16f8b1eeff86e82f1b3c041d9b301796 (patch)
treea02a4663439265c70d9c79217225d59f4229e0fa /sqlite.go
parent2b1503c57722a417038d3e2dafa7faa23ef59a5b (diff)
Added Interactive Mode
And Colours Gerneral Debugging
Diffstat (limited to 'sqlite.go')
-rw-r--r--sqlite.go181
1 files changed, 104 insertions, 77 deletions
diff --git a/sqlite.go b/sqlite.go
index 9082855..273c91b 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -9,7 +9,9 @@ import (
"strings"
"regexp"
"strconv"
+
_ "github.com/mattn/go-sqlite3"
+ "github.com/fatih/color"
)
type project struct{
@@ -64,6 +66,7 @@ func initDB(filename string) {
}
func newTaskTime(proj int, tim string) {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
if (opentask.id == 0) {
timstr := "1791-09-30 19:07"
if isDate(tim) {
@@ -72,8 +75,9 @@ func newTaskTime(proj int, tim string) {
currdate := time.Now().UTC().Format("2006-01-02")
timstr = currdate+" "+getTime(tim)
}else {
- fmt.Println(tim,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
- os.Exit(0)
+ fmt.Println(tim,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
+ return
+ //os.Exit(0)
}
stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'utc'), ?, ?)")
fmt.Println(timstr)
@@ -90,13 +94,14 @@ func newTaskTime(proj int, tim string) {
getOpenTask()
updateProject(currproject.id)
} else {
- fmt.Println("Another Task is already Open")
+ fmt.Println(boldRed("Another Task is already Open"))
showOpenTask()
}
}
func newTask(proj int) {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
if (opentask.id == 0) {
task := getInput("Specify Task: ")
stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)")
@@ -111,14 +116,15 @@ func newTask(proj int) {
getOpenTask()
updateProject(currproject.id)
} else {
- fmt.Println("Another Task is already Open")
+ fmt.Println(boldRed("Another Task is already Open"))
showOpenTask()
}
}
func closeTaskTime(tim string) {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
if opentask.id==0 {
- fmt.Println("There is no Open Task")
+ fmt.Println(boldRed("There is no Open Task"))
return
}
//timt,err := time.Parse("2006-01-02 15:04",tim)
@@ -131,8 +137,9 @@ func closeTaskTime(tim string) {
timstr = time.Now().Local().Format("2006-01-02")+" "+getTime(tim)
timst = timstr+" "+zone
} else {
- fmt.Println(tim,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
- os.Exit(0)
+ fmt.Println(tim,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
+ return
+ //os.Exit(0)
}
timt,err := time.Parse("2006-01-02 15:04 MST",timst)
@@ -149,14 +156,15 @@ func closeTaskTime(tim string) {
opentask.id=0
updateProject(opentask.projectid)
}else{
- fmt.Println("Cannot Stop before the Beginning!")
+ fmt.Println(boldRed("Cannot Stop before the Beginning!"))
}
//fmt.Println(tim,timt)
}
func closeTask() {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
if opentask.id==0 {
- fmt.Println("There is no Open Task")
+ fmt.Println(boldRed("There is no Open Task"))
return
}
if (time.Now().After(opentask.start.Local())) {
@@ -168,7 +176,7 @@ func closeTask() {
opentask.id=0
updateProject(opentask.projectid)
}else{
- fmt.Println("Cannot Stop before the Beginning!")
+ fmt.Println(boldRed("Cannot Stop before the Beginning!"))
}
}
@@ -223,6 +231,7 @@ func showLastProject() {
func newProject() {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
if (opentask.id == 0) {
nam := getInput("Enter Project Name: ")
stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)")
@@ -232,14 +241,12 @@ func newProject() {
fmt.Println(" Project Created:",nam)
getLastProject()
} else {
- fmt.Println("There is an Open Task")
+ fmt.Println(boldRed("There is an Open Task"))
showOpenTask()
}
}
func getClosedTasks(num int) {
- //var rows sql.Rows
- //var err error
fmt.Println("___Past Tasks_______________")
rows,err := db.Query("SELECT * FROM timetable WHERE stop != '1791-09-30 19:07' ORDER BY datetime(start)",currproject.id)
checkErr(err)
@@ -266,7 +273,7 @@ func getClosedTasks(num int) {
}
rows.Close()
fmt.Println("____________________________")
- fmt.Println("Gesamt:",sum,"h")
+ fmt.Printf("Gesamt: %.2f h\n",sum)
}
func getLastProject() {
@@ -291,39 +298,45 @@ func getLastProject() {
}
}
rows.Close() //good habit to close
- // fmt.Println(nuid,"Last Project",nprname)
- // fmt.Println(nlast)
- // fmt.Println("----------------------------------")
currproject.id = nuid
currproject.name = nprname
currproject.first = nfirst
currproject.last = nlast
currproject.finish = nfinish
- // getLastTasks(0)
}
func setProject (nid int) {
- rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid)
- checkErr(err)
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
+ if !isProject(nid){
+ fmt.Println(boldRed("There is no Project"),nid)
+ return
+ }
+ if (opentask.id == 0) {
+ rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid)
+ checkErr(err)
- var uid int
- var prname string
- var first time.Time
- var last time.Time
- var finish int
+ var uid int
+ var prname string
+ var first time.Time
+ var last time.Time
+ var finish int
- for rows.Next() {
- err = rows.Scan(&uid, &prname, &first, &last, &finish)
- checkErr(err)
- }
- rows.Close() //good habit to close
- currproject.id = uid
- currproject.name = prname
- currproject.first = first
- currproject.last = last
- currproject.finish = finish
- updateProject(uid)
+ for rows.Next() {
+ err = rows.Scan(&uid, &prname, &first, &last, &finish)
+ checkErr(err)
+ }
+ rows.Close() //good habit to close
+ currproject.id = uid
+ currproject.name = prname
+ currproject.first = first
+ currproject.last = last
+ currproject.finish = finish
+ updateProject(uid)
+ } else {
+ fmt.Println(boldRed("There is an Open Task"))
+ showOpenTask()
+ }
}
func allProjects() {
@@ -346,6 +359,7 @@ func allProjects() {
}
func editTask(id int) {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
var chk,prj int
var start,stop time.Time
var task,startstr,stopstr string
@@ -355,8 +369,9 @@ func editTask(id int) {
err = rows.Scan(&prj, &start, &stop, &task, &chk)
checkErr(err)
}else{
- fmt.Println("There Is No Task",id)
- os.Exit(0)
+ fmt.Println(boldRed("There Is No Task"),id)
+ return
+ //os.Exit(0)
}
rows.Close() //good habit to close
@@ -368,38 +383,46 @@ func editTask(id int) {
}
startstr=start.Local().Format("2006-01-02 15:04")
stopstr=stop.Local().Format("2006-01-02 15:04")
- fmt.Println("Old Start:",startstr)
- newstart := getInput("Enter New:")
- if newstart!=""{
- if isDate(newstart) {
- startstr=newstart
- }else{
- fmt.Println(newstart,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
- os.Exit(0)
- }
+ for{
+ fmt.Println("Old Start:",startstr)
+ newstart := getInput("Enter New:")
+ if newstart!=""{
+ if isDate(newstart) {
+ startstr=newstart
+ break
+ }else{
+ fmt.Println(newstart,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
+ //os.Exit(0)
+ }
+ }else{break}
}
fmt.Println("Old End:",stopstr)
- newend := getInput("Enter New:")
- if newend!=""{
- if isDate(newend) {
- stopstr=newend
- }else{
- fmt.Println(newend,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
- os.Exit(0)
- }
+ for{
+ newend := getInput("Enter New:")
+ if newend!=""{
+ if isDate(newend) {
+ stopstr=newend
+ break
+ }else{
+ fmt.Println(newend,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
+ //os.Exit(0)
+ }
+ }else{break}
}
fmt.Println("Old Project:",prj)
- newprj := getInput("Enter New:")
- if newprj!=""{
- prj,err = strconv.Atoi(newprj)
- if err != nil {
- fmt.Println(newprj,"is Not a Valid id. Try an Integer instead")
- os.Exit(0)
- }
- if !isProject(prj) {
- fmt.Println("There is no project",prj,"Try -all for Project List")
- os.Exit(0)
- }
+ for{
+ newprj := getInput("Enter New:")
+ if newprj!=""{
+ prj,err = strconv.Atoi(newprj)
+ if err != nil {
+ fmt.Println(newprj,boldRed("is Not a Valid id."), "Try an Integer instead")
+ //os.Exit(0)
+ }
+ if !isProject(prj) {
+ fmt.Println(boldRed("There is no project"),prj,"Try -all for Project List")
+ //os.Exit(0)
+ }else{break}
+ }else{break}
}
stmt, err := db.Prepare("UPDATE timetable SET task = ?, start = datetime(?,'utc'), stop = datetime(?,'utc'), project = ? WHERE id = ?")
checkErr(err)
@@ -410,6 +433,7 @@ func editTask(id int) {
}
func editProject(id int) {
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
var fin int
var first time.Time
var name,nfirst string
@@ -426,19 +450,22 @@ func editProject(id int) {
}
nfirst=first.Local().Format("2006-01-02 15:04")
fmt.Println("Old Begin:",nfirst)
- newfirst := getInput("Enter New:")
- if newfirst!=""{
- if isDate(newfirst) {
- nfirst=newfirst
- }else{
- fmt.Println(newfirst,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
- os.Exit(0)
- }
+ for{
+ newfirst := getInput("Enter New:")
+ if newfirst!=""{
+ if isDate(newfirst) {
+ nfirst=newfirst
+ break
+ }else{
+ fmt.Println(newfirst,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'")
+ //os.Exit(0)
+ }
+ }else{break}
}
-
}else{
- fmt.Println("There Is No Project",id)
- os.Exit(0)
+ fmt.Println(boldRed("There Is No Project"),id)
+ return
+ //os.Exit(0)
}
rows.Close() //good habit to close
stmt, err := db.Prepare("UPDATE projects SET name = ?, last = datetime(?,'utc') WHERE id = ?")