aboutsummaryrefslogtreecommitdiff
path: root/modules/grils
diff options
context:
space:
mode:
authorrtz12 <koenig@fagott.pw>2016-10-09 01:33:34 (UTC)
committerrtz12 <koenig@fagott.pw>2016-10-09 01:33:34 (UTC)
commit924f63a7ffbd661d64c1d04547076ea4a31d1739 (patch)
tree3ef1122f4cf1c6c6b8b8ae407407c057cb747bc0 /modules/grils
parentdb4bd8185f7283420b3f60fc561b1b8e4f97b3b9 (diff)
parent46185bf12dd907e536aa216a03c818f40f88cae8 (diff)
Merge branch 'master' of projekte.fagott.pw:grilist
Diffstat (limited to 'modules/grils')
-rw-r--r--modules/grils/grils.go152
1 files changed, 72 insertions, 80 deletions
diff --git a/modules/grils/grils.go b/modules/grils/grils.go
index 116b689..135398d 100644
--- a/modules/grils/grils.go
+++ b/modules/grils/grils.go
@@ -6,20 +6,20 @@ import (
6 "net/http" 6 "net/http"
7 "regexp" 7 "regexp"
8 "strconv" 8 "strconv"
9 "time"
10 "strings" 9 "strings"
10 "time"
11 11
12 "fagott.pw/charakterin" 12 "fagott.pw/charakterin"
13 "fagott.pw/grilist/cache"
13 "fagott.pw/grilist/frontend" 14 "fagott.pw/grilist/frontend"
14 "fagott.pw/grilist/grilist" 15 "fagott.pw/grilist/grilist"
15 "fagott.pw/grilist/cache"
16 16
17 "github.com/julienschmidt/httprouter" 17 "github.com/julienschmidt/httprouter"
18) 18)
19 19
20type CachedGril struct { 20type CachedGril struct {
21 Created time.Time 21 Created time.Time
22 Gril *Gril 22 Gril *Gril
23} 23}
24 24
25var ( 25var (
@@ -38,7 +38,7 @@ func findIdx() {
38 38
39type GrilsModule struct { 39type GrilsModule struct {
40 g *grilist.Grilist 40 g *grilist.Grilist
41 c *cache.Cache 41 c *cache.Cache
42} 42}
43 43
44func (m *GrilsModule) Name() string { 44func (m *GrilsModule) Name() string {
@@ -50,8 +50,8 @@ func (m *GrilsModule) Init(g *grilist.Grilist) {
50 m.g = g 50 m.g = g
51 m.g.Router.GET("/gril/:id", m.viewGril) 51 m.g.Router.GET("/gril/:id", m.viewGril)
52 m.g.Router.GET("/gril/:id/*rest", m.viewGril) 52 m.g.Router.GET("/gril/:id/*rest", m.viewGril)
53 53
54 m.c = cache.New() 54 m.c = cache.New()
55} 55}
56 56
57func (m *GrilsModule) getGrils(whereClause string, params ...interface{}) ([]*Gril, error) { 57func (m *GrilsModule) getGrils(whereClause string, params ...interface{}) ([]*Gril, error) {
@@ -105,43 +105,35 @@ func (m *GrilsModule) GetListsOfGril(gril *Gril) error {
105 105
106func (m *GrilsModule) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory { 106func (m *GrilsModule) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory {
107 var categories []grilist.DashboardCategory 107 var categories []grilist.DashboardCategory
108
109 t1 := time.Now() 108 t1 := time.Now()
110 rows, err := m.g.DB.Query(`SELECT id FROM grilist.grils ORDER BY updated_at DESC LIMIT 5`) 109
110 rows, err := m.g.DB.Query(
111 `SELECT id, romaji_name, kanji_name FROM grilist.get_recently_updated_grils();`)
111 if err != nil { 112 if err != nil {
112 log.Println(err) 113 log.Println(err)
113 return categories 114 return categories
114 } 115 }
115 defer rows.Close() 116 defer rows.Close()
116 log.Printf("get_newest_grils: %dms", time.Since(t1).Nanoseconds()/1000000)
117 117
118 cat := grilist.DashboardCategory{ 118 cat := grilist.DashboardCategory{
119 Title: "Neue Grils", 119 Title: "Neue Grils",
120 } 120 }
121 121
122 for rows.Next() { 122 for rows.Next() {
123 var id int 123 var g Gril
124 if err := rows.Scan(&id); err != nil { 124 if err := rows.Scan(&g.ID, &g.RomajiName, &g.KanjiName); err != nil {
125 log.Println(err)
126 continue
127 }
128
129 t2 := time.Now()
130 gril, err := m.FromID(id)
131 if err != nil {
132 log.Println(err) 125 log.Println(err)
133 continue 126 continue
134 } 127 }
135 log.Printf("get_gril_from_id_in_newest_grils: %dms", time.Since(t2).Nanoseconds()/1000000)
136 128
137 cat.Cards = append(cat.Cards, frontend.Card{ 129 cat.Cards = append(cat.Cards, frontend.Card{
138 Title: gril.RomajiName, 130 Title: g.RomajiName,
139 Description: gril.KanjiName, 131 Description: g.KanjiName,
140 Size: "medium", 132 Size: "medium",
141 Actions: []frontend.Action{ 133 Actions: []frontend.Action{
142 frontend.Action{ 134 frontend.Action{
143 Name: "anguckieren", 135 Name: "anguckieren",
144 Link: "/gril/" + gril.Slug(), 136 Link: "/gril/" + g.Slug(),
145 }, 137 },
146 }, 138 },
147 }) 139 })
@@ -152,77 +144,77 @@ func (m *GrilsModule) ProvideDashboardData(user *charakterin.User) []grilist.Das
152} 144}
153 145
154func (m *GrilsModule) FromID(id int) (*Gril, error) { 146func (m *GrilsModule) FromID(id int) (*Gril, error) {
155 if g, ok := m.c.Get(id); ok { 147 if g, ok := m.c.Get(id); ok {
156 return g.(*Gril), nil 148 return g.(*Gril), nil
157 } 149 }
158 150
159 gril := &Gril{ 151 gril := &Gril{
160 ID: id, 152 ID: id,
161 } 153 }
162 t1 := time.Now() 154 t1 := time.Now()
163 err := m.g.DB.QueryRow(`SELECT updated_at, age, birthday FROM grilist.grils WHERE id = $1`, id).Scan(&gril.UpdatedAt, &gril.Age, &gril.Birthday) 155 err := m.g.DB.QueryRow(`SELECT updated_at, age, birthday FROM grilist.grils WHERE id = $1`, id).Scan(&gril.UpdatedAt, &gril.Age, &gril.Birthday)
164 log.Printf("get_gril_from_id_raw: %dms", time.Since(t1).Nanoseconds()/1000000) 156 log.Printf("get_gril_from_id_raw: %dms", time.Since(t1).Nanoseconds()/1000000)
165 157
166 if err != nil { 158 if err != nil {
167 return nil, err 159 return nil, err
168 } 160 }
169 161
170 // Namen rausholen 162 // Namen rausholen
171 rows, err := m.g.DB.Query(`SELECT name, name_type FROM grilist.gril_names WHERE gril_id = $1`, id) 163 rows, err := m.g.DB.Query(`SELECT name, name_type FROM grilist.gril_names WHERE gril_id = $1`, id)
172 if err != nil { 164 if err != nil {
173 return nil, err 165 return nil, err
174 } 166 }
175 log.Printf("get_gril_from_id_names: %dms", time.Since(t1).Nanoseconds()/1000000) 167 log.Printf("get_gril_from_id_names: %dms", time.Since(t1).Nanoseconds()/1000000)
176 defer rows.Close() 168 defer rows.Close()
177 169
178 for rows.Next() { 170 for rows.Next() {
179 var name string 171 var name string
180 var name_type int 172 var name_type int
181 if err := rows.Scan(&name, &name_type); err != nil { 173 if err := rows.Scan(&name, &name_type); err != nil {
182 return nil, err 174 return nil, err
183 } 175 }
184 176
185 switch name_type { 177 switch name_type {
186 case 0: 178 case 0:
187 gril.KanjiName = name 179 gril.KanjiName = name
188 break 180 break
189 case 1: 181 case 1:
190 gril.RomajiName = name 182 gril.RomajiName = name
191 default: 183 default:
192 gril.OtherNames = append(gril.OtherNames, name) 184 gril.OtherNames = append(gril.OtherNames, name)
193 } 185 }
194 }
195 /*rows, err := m.g.DB.Query(`SELECT name FROM grilist.gril_names WHERE gril_id = $1 AND name_type > 1`, id)
196 if err != nil {
197 return nil, err
198 }
199 defer rows.Close()
200
201 for rows.Next() {
202 var name string
203 if err := rows.Scan(&name); err != nil {
204 return nil, err
205 }
206 gril.OtherNames = append(gril.OtherNames, name)
207 }
208 rows.Close()
209
210 // Tags holen
211 rows, err := m.g.DB.Query(`SELECT name FROM grilist.tags WHERE id IN (SELECT tag_id FROM grilist.grils_tags WHERE gril_id = $1)`, id)
212 if err != nil {
213 return nil, err
214 } 186 }
215 defer rows.Close() 187 /*rows, err := m.g.DB.Query(`SELECT name FROM grilist.gril_names WHERE gril_id = $1 AND name_type > 1`, id)
216 188 if err != nil {
217 for rows.Next() { 189 return nil, err
218 var name string 190 }
219 if err := rows.Scan(&name); err != nil { 191 defer rows.Close()
220 return nil, err 192
221 } 193 for rows.Next() {
222 gril.Tags = append(gril.Tags, name) 194 var name string
223 }*/ 195 if err := rows.Scan(&name); err != nil {
224 196 return nil, err
225 m.c.Insert(id, gril) 197 }
198 gril.OtherNames = append(gril.OtherNames, name)
199 }
200 rows.Close()
201
202 // Tags holen
203 rows, err := m.g.DB.Query(`SELECT name FROM grilist.tags WHERE id IN (SELECT tag_id FROM grilist.grils_tags WHERE gril_id = $1)`, id)
204 if err != nil {
205 return nil, err
206 }
207 defer rows.Close()
208
209 for rows.Next() {
210 var name string
211 if err := rows.Scan(&name); err != nil {
212 return nil, err
213 }
214 gril.Tags = append(gril.Tags, name)
215 }*/
216
217 m.c.Insert(id, gril)
226 log.Printf("get_gril_from_id: %dms", time.Since(t1).Nanoseconds()/1000000) 218 log.Printf("get_gril_from_id: %dms", time.Since(t1).Nanoseconds()/1000000)
227 return gril, nil 219 return gril, nil
228} 220}