From a9e63899ec64280847d220b4640053e74ae73031 Mon Sep 17 00:00:00 2001 From: Jan C Date: Wed, 30 Mar 2016 17:12:21 +0200 Subject: test ohne grils flattened view diff --git a/modules/grils/grils.go b/modules/grils/grils.go index 791ea5e..116b689 100644 --- a/modules/grils/grils.go +++ b/modules/grils/grils.go @@ -159,16 +159,71 @@ func (m *GrilsModule) FromID(id int) (*Gril, error) { gril := &Gril{ ID: id, } - var tags []byte - var otherNames []byte - err := m.g.DB.QueryRow(`SELECT kanji_name, romaji_name, other_names, updated_at, age, birthday, tags FROM grilist.grils_flattened WHERE id = $1`, id).Scan(&gril.KanjiName, &gril.RomajiName, &otherNames, &gril.UpdatedAt, &gril.Age, &gril.Birthday, &tags) + t1 := time.Now() + err := m.g.DB.QueryRow(`SELECT updated_at, age, birthday FROM grilist.grils WHERE id = $1`, id).Scan(&gril.UpdatedAt, &gril.Age, &gril.Birthday) + log.Printf("get_gril_from_id_raw: %dms", time.Since(t1).Nanoseconds()/1000000) - gril.Tags = pgArray(tags) - gril.OtherNames = pgArray(otherNames) if err != nil { return nil, err } + + // Namen rausholen + rows, err := m.g.DB.Query(`SELECT name, name_type FROM grilist.gril_names WHERE gril_id = $1`, id) + if err != nil { + return nil, err + } + log.Printf("get_gril_from_id_names: %dms", time.Since(t1).Nanoseconds()/1000000) + defer rows.Close() + + for rows.Next() { + var name string + var name_type int + if err := rows.Scan(&name, &name_type); err != nil { + return nil, err + } + + switch name_type { + case 0: + gril.KanjiName = name + break + case 1: + gril.RomajiName = name + default: + gril.OtherNames = append(gril.OtherNames, name) + } + } + /*rows, err := m.g.DB.Query(`SELECT name FROM grilist.gril_names WHERE gril_id = $1 AND name_type > 1`, id) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + var name string + if err := rows.Scan(&name); err != nil { + return nil, err + } + gril.OtherNames = append(gril.OtherNames, name) + } + rows.Close() + + // Tags holen + 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) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + var name string + if err := rows.Scan(&name); err != nil { + return nil, err + } + gril.Tags = append(gril.Tags, name) + }*/ + m.c.Insert(id, gril) + log.Printf("get_gril_from_id: %dms", time.Since(t1).Nanoseconds()/1000000) return gril, nil } -- cgit v0.10.1