summaryrefslogtreecommitdiff
path: root/sqlite.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.go')
-rw-r--r--sqlite.go130
1 files changed, 106 insertions, 24 deletions
diff --git a/sqlite.go b/sqlite.go
index 271a429..9739297 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -5,6 +5,9 @@ import (
"fmt"
"time"
"os"
+ "bufio"
+ "strings"
+ "regexp"
_ "github.com/mattn/go-sqlite3"
)
@@ -59,18 +62,62 @@ func initDB(filename string) {
}
}
-func newTask(proj int ,task string) {
- stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)")
- checkErr(err)
- if (proj == 0) {
- _, err = stmt.Exec(currproject.id,task,0)
- }else{
- _, err = stmt.Exec(proj,task,0)
+func newTaskTime(proj int, tim string) {
+ if (opentask.id == 0) {
+ timstr := "1791-09-30 19:07"
+ if isDate(tim) {
+ timstr = getDate(tim)
+ }else if isTime(tim) {
+ 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)
+ }
+ stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'utc'), ?, ?)")
+ fmt.Println(timstr)
+ task := getInput("Specify Task: ")
+ //stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'localtime'), ?, ?)")
+ checkErr(err)
+ if (proj == 0) {
+ _, err = stmt.Exec(currproject.id,timstr,task,0)
+ }else{
+ _, err = stmt.Exec(proj,timstr,task,0)
+ }
+ checkErr(err)
+ //stmt, err = db.Prepare("UPDATE timetable SET start = datetime('?') WHERE id = ?")
+ //checkErr(err)
+ //_, err = stmt.Exec(opentask.id)
+ //checkErr(err)
+
+ fmt.Println("...new task inserted into",currproject.name,": ",task)
+ getOpenTask()
+ updateProject(currproject.id)
+ } else {
+ fmt.Println("Another Task is already Open")
+ showOpenTask()
+ }
+
+}
+
+func newTask(proj int) {
+ if (opentask.id == 0) {
+ task := getInput("Specify Task: ")
+ stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)")
+ checkErr(err)
+ if (proj == 0) {
+ _, err = stmt.Exec(currproject.id,task,0)
+ }else{
+ _, err = stmt.Exec(proj,task,0)
+ }
+ checkErr(err)
+ fmt.Println("...New Task inserted into",currproject.name,": ",task)
+ getOpenTask()
+ updateProject(currproject.id)
+ } else {
+ fmt.Println("Another Task is already Open")
+ showOpenTask()
}
- checkErr(err)
- fmt.Println("...New Task inserted into",currproject.name,": ",task)
- getOpenTask()
- updateProject(currproject.id)
}
func closeTask() {
@@ -116,7 +163,7 @@ func showOpenTask() {
fmt.Println("___No Open Tasks____________")
} else {
fmt.Println("___Open Task________________")
- fmt.Println(opentask.id,":", opentask.taskname, opentask.projectid, opentask.start.Local().Format("Mon Jan _2 15:04"))
+ fmt.Println(opentask.id,":", opentask.taskname,"pr:", opentask.projectid,"-", opentask.start.Local().Format("Mon Jan _2 2006 15:04"))
}
}
@@ -125,25 +172,30 @@ func showLastProject() {
fmt.Println("Empty DB")
} else {
fmt.Println("___Last Project_____________")
- fmt.Println(currproject.id,":", currproject.name, currproject.last.Local().Format("Mon Jan _2 15:04 2006"))
+ fmt.Println(currproject.id,":", currproject.name, currproject.last.Local().Format("2006 Mon Jan _2 15:04 2006"))
}
}
-func newProject(nam string) {
- stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)")
-
- checkErr(err)
- _, err = stmt.Exec(nam,0)
- checkErr(err)
- fmt.Println(" Project Created:",nam)
- getLastProject()
+func newProject() {
+ if (opentask.id == 0) {
+ nam := getInput("Enter Project Name: ")
+ stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)")
+ checkErr(err)
+ _, err = stmt.Exec(nam,0)
+ checkErr(err)
+ fmt.Println(" Project Created:",nam)
+ getLastProject()
+ } else {
+ fmt.Println("There is an Open Task")
+ showOpenTask()
+ }
}
func getClosedTasks(num int) {
//var rows sql.Rows
//var err error
- fmt.Println("___Past Tasks________________")
+ 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)
if num > 0 {
@@ -161,7 +213,7 @@ func getClosedTasks(num int) {
for rows.Next() {
err = rows.Scan(&id, &proj, &sta, &sto, &tas, &check)
checkErr(err)
- fmt.Println(id,tas,sta.Local().Format("Mon Jan _2 15:04"),sto.Local().Format("15:04"))
+ fmt.Println(id,tas,sta.Local().Format("2006 Mon Jan _2 15:04"),sto.Local().Format("15:04"))
}
rows.Close()
}
@@ -237,11 +289,41 @@ func allProjects() {
for rows.Next() {
err = rows.Scan(&uid, &prname, &first, &last, &finish)
checkErr(err)
- fmt.Println(" ",uid,prname,first.Local().Format("2006-09-12 19:13"),last.Local().Format("2006-09-12 19:13"),finish)
+ fmt.Println(" ",uid,prname,first.Local().Format("2006-09-02 19:13"),last.Local().Format("2006-09-02 19:13"),finish)
}
rows.Close() //good habit to close
}
+func getDate(in string) string {
+ r := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})`)
+ return r.FindString(in)
+ //fmt.Println(r.FindString(in)
+}
+
+func getTime(in string) string {
+ r := regexp.MustCompile(`(\d{2}):(\d{2})`)
+ return r.FindString(in)
+}
+
+func isDate(in string) bool {
+ match, _ := regexp.MatchString(`(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})`,in)
+ return match
+}
+
+func isTime(in string) bool {
+ match, _ := regexp.MatchString(`(\d{2}):(\d{2})`,in)
+ return match
+}
+
+func getInput(quest string) string {
+ fmt.Print(quest)
+ in := bufio.NewReader(os.Stdin)
+ line, err := in.ReadString('\n')
+ line = strings.TrimSuffix(line, "\n")
+ checkErr(err)
+ return line
+}
+
func checkErr(err error) {
if err != nil {
panic(err)