|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
markdown "github.com/MichaelMure/go-term-markdown"
|
|
|
|
"github.com/fatih/color"
|
|
|
|
"isthisnagee.com/tools/diary/model"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"path"
|
|
|
|
"strconv"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
var App *model.App
|
|
|
|
|
|
|
|
func InitApp() {
|
|
|
|
|
|
|
|
home_dir, err := os.UserHomeDir()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
var db_path = path.Join(home_dir, ".diary.sql")
|
|
|
|
|
|
|
|
if _, err := os.Stat(db_path); errors.Is(err, os.ErrNotExist) {
|
|
|
|
_, err := os.Create(db_path)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
var app = model.NewApp(db_path)
|
|
|
|
App = &app
|
|
|
|
}
|
|
|
|
|
|
|
|
var fmt_str = "%-10s %-20s %s\n"
|
|
|
|
var time_fmt_str = "2006/01/02 03:04pm"
|
|
|
|
|
|
|
|
func PrintEntryHeader() {
|
|
|
|
fmt.Printf(
|
|
|
|
fmt_str+"\n", "Id", "Created time", "Title",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func PrintEntry(entry *model.DiaryEntry) {
|
|
|
|
created_time := time.Unix(entry.CreatedAt, 0).Format(time_fmt_str)
|
|
|
|
titleColor := color.New(color.FgCyan).Add(color.Underline).SprintFunc()
|
|
|
|
fmt.Printf(
|
|
|
|
fmt_str, strconv.FormatInt(entry.Id, 10), created_time, titleColor(entry.Title),
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func PrintEntries(entries []*model.DiaryEntry) {
|
|
|
|
PrintEntryHeader()
|
|
|
|
for _, entry := range entries {
|
|
|
|
PrintEntry(entry)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func PrintNote(note *model.DiaryEntryNote) {
|
|
|
|
created_time := time.Unix(note.CreatedAt, 0).Format(time_fmt_str)
|
|
|
|
fmt.Println("---note created_at ", created_time)
|
|
|
|
fmt.Println()
|
|
|
|
body := markdown.Render(note.Body, 80, 3)
|
|
|
|
fmt.Println(string(body))
|
|
|
|
fmt.Println("---")
|
|
|
|
}
|
|
|
|
|
|
|
|
func PrintNotes(notes []*model.DiaryEntryNote) {
|
|
|
|
for _, entry := range notes {
|
|
|
|
PrintNote(entry)
|
|
|
|
}
|
|
|
|
}
|