add infra for unknown dates
This commit is contained in:
parent
990c9a66bd
commit
1ecf16bd0a
46
main.go
46
main.go
|
@ -10,9 +10,21 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
type Event struct {
|
||||
description string
|
||||
timestamp int64
|
||||
type EventsRow struct {
|
||||
description sql.NullString
|
||||
timestamp sql.NullInt64
|
||||
interval sql.NullString
|
||||
period sql.NullString
|
||||
yearknown sql.NullBool
|
||||
monthknown sql.NullBool
|
||||
dayknown sql.NullBool
|
||||
hourknown sql.NullBool
|
||||
minuteknown sql.NullBool
|
||||
secondknown sql.NullBool
|
||||
}
|
||||
|
||||
type TimelineDB struct {
|
||||
*sql.DB
|
||||
}
|
||||
|
||||
func formula(p float64) int64 {
|
||||
|
@ -20,10 +32,10 @@ func formula(p float64) int64 {
|
|||
return int64(yearsAgo * 31556926)
|
||||
}
|
||||
|
||||
func closestEvent(t int64, db *sql.DB) (Event, error) {
|
||||
var event Event
|
||||
func (db *TimelineDB) closestEvent(t int64) (EventsRow, error) {
|
||||
var event EventsRow
|
||||
query := `
|
||||
select description, timestamp
|
||||
select description, timestamp, yearknown, monthknown, dayknown, hourknown, minuteknown, secondknown
|
||||
from events
|
||||
where timestamp is not null
|
||||
order by abs(? - timestamp) asc
|
||||
|
@ -36,7 +48,7 @@ func closestEvent(t int64, db *sql.DB) (Event, error) {
|
|||
}
|
||||
defer stmt.Close()
|
||||
|
||||
err = stmt.QueryRow(t).Scan(&event.description, &event.timestamp)
|
||||
err = stmt.QueryRow(t).Scan(&event.description, &event.timestamp, &event.yearknown, &event.monthknown, &event.dayknown, &event.hourknown, &event.minuteknown, &event.secondknown)
|
||||
return event, err
|
||||
}
|
||||
|
||||
|
@ -50,17 +62,29 @@ func main() {
|
|||
|
||||
t := time.Now().Unix() - formula(*percent)
|
||||
|
||||
db, err := sql.Open("sqlite3", "./timeline.db")
|
||||
var db TimelineDB
|
||||
var err error
|
||||
db.DB, err = sql.Open("sqlite3", "./timeline.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
event, err := closestEvent(t, db)
|
||||
event, err := db.closestEvent(t)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
date := time.Unix(event.timestamp, 0)
|
||||
fmt.Printf("%v\t%v\t%v\n", event.timestamp, date, event.description)
|
||||
timestamp, err := event.timestamp.Value()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
desc, err := event.description.Value()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
date := time.Unix(timestamp.(int64), 0)
|
||||
fmt.Printf("%v\t%v\t%v\n", timestamp, date, desc)
|
||||
}
|
||||
|
|
3884
timeline.sql
3884
timeline.sql
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue