-
Notifications
You must be signed in to change notification settings - Fork 0
/
query.go
92 lines (73 loc) · 1.55 KB
/
query.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package claw
import (
"bytes"
"database/sql"
"fmt"
"github.com/jmoiron/sqlx"
)
type Note struct {
PK int `db:"Z_PK"`
Title sql.NullString `db:"ZTITLE"`
Text sql.NullString `db:"ZTEXT"`
Archived bool `db:"ZARCHIVED"`
Encrypted bool `db:"ZENCRYPTED"`
Trashed bool `db:"ZTRASHED"`
}
func (n Note) TitleFlags() string {
buf := bytes.NewBufferString(n.Title.String)
if n.Archived {
fmt.Fprint(buf, " [archived]")
}
if n.Encrypted {
fmt.Fprint(buf, " [encrypted]")
}
if n.Trashed {
fmt.Fprint(buf, " [trashed]")
}
return buf.String()
}
func fetchNotes(db *sqlx.DB) ([]Note, error) {
rows, err := db.Queryx("SELECT Z_PK, ZTITLE, ZTEXT, ZARCHIVED, ZENCRYPTED, ZTRASHED FROM ZSFNOTE")
if err != nil {
return nil, err
}
var notes []Note
for rows.Next() {
var note Note
err = rows.StructScan(¬e)
if err != nil {
return nil, err
}
notes = append(notes, note)
}
return notes, nil
}
type Link struct {
ByNote int `db:"Z_7LINKEDBYNOTES"`
Note int `db:"Z_7LINKEDNOTES"`
}
func fetchLinks(db *sqlx.DB) ([]Link, error) {
rows, err := db.Queryx("SELECT Z_7LINKEDBYNOTES, Z_7LINKEDNOTES FROM Z_7LINKEDNOTES ORDER BY Z_7LINKEDBYNOTES, Z_7LINKEDNOTES")
if err != nil {
return nil, err
}
var links []Link
for rows.Next() {
var link Link
err = rows.StructScan(&link)
if err != nil {
return nil, err
}
links = append(links, link)
}
return links, nil
}
func maxPK(notes []Note) int {
var max int
for _, n := range notes {
if n.PK > max {
max = n.PK
}
}
return max
}