diff options
author | rtz12 <koenig@fagott.pw> | 2015-12-29 19:26:55 (UTC) |
---|---|---|
committer | rtz12 <koenig@fagott.pw> | 2015-12-29 19:26:55 (UTC) |
commit | 43e206d8627ccdb94ad729d9d48d66484faba117 (patch) | |
tree | 6ee98d5af08992119c22fde52a0967891b7e44c1 | |
parent | 3afe6b63c9badb2d1c19472a7a6e285608b7fd9f (diff) |
Importer gefixt
Tags werden nur noch ein mal geschrieben
Tags werden bei jedem Durchlauf neu importiert
-rw-r--r-- | tools/importer/main.go | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/tools/importer/main.go b/tools/importer/main.go index f0c0856..9caf287 100644 --- a/tools/importer/main.go +++ b/tools/importer/main.go | |||
@@ -81,8 +81,7 @@ func main() { | |||
81 | for rows.Next() { | 81 | for rows.Next() { |
82 | var id int | 82 | var id int |
83 | var name string | 83 | var name string |
84 | rows.Scan(&id) | 84 | rows.Scan(&id, &name) |
85 | rows.Scan(&name) | ||
86 | taglist[name] = id | 85 | taglist[name] = id |
87 | } | 86 | } |
88 | idmap := make(map[int]int) | 87 | idmap := make(map[int]int) |
@@ -90,8 +89,7 @@ func main() { | |||
90 | for rows.Next() { | 89 | for rows.Next() { |
91 | var sourceID int | 90 | var sourceID int |
92 | var grilID int | 91 | var grilID int |
93 | rows.Scan(&sourceID) | 92 | rows.Scan(&sourceID, &grilID) |
94 | rows.Scan(&grilID) | ||
95 | idmap[sourceID] = grilID | 93 | idmap[sourceID] = grilID |
96 | } | 94 | } |
97 | filepath.Walk(path, func(path string, info os.FileInfo, err error) error { | 95 | filepath.Walk(path, func(path string, info os.FileInfo, err error) error { |
@@ -99,28 +97,16 @@ func main() { | |||
99 | return nil | 97 | return nil |
100 | } | 98 | } |
101 | g := r.Read(path) | 99 | g := r.Read(path) |
102 | for _, v := range g.Gril.Tags { | 100 | var dbID int |
103 | if _, ok := taglist[v]; ok { | 101 | var ok bool |
104 | continue | 102 | if dbID, ok = idmap[g.Gril.ID]; !ok { |
105 | } | ||
106 | var id int | ||
107 | row := db.QueryRow("INSERT INTO grilist.tags (name) VALUES ($1) RETURNING id;", v) | ||
108 | row.Scan(&id) | ||
109 | taglist[v] = id | ||
110 | } | ||
111 | if _, ok := idmap[g.Gril.ID]; !ok { | ||
112 | row := db.QueryRow("INSERT INTO grilist.grils (age) VALUES (NULL) RETURNING id;") | 103 | row := db.QueryRow("INSERT INTO grilist.grils (age) VALUES (NULL) RETURNING id;") |
113 | var dbID int | ||
114 | row.Scan(&dbID) | 104 | row.Scan(&dbID) |
115 | fmt.Printf( | 105 | fmt.Printf( |
116 | "Assigned %d from %s to %d\n", | 106 | "Assigned %d from %s to %d\n", |
117 | g.Gril.ID, | 107 | g.Gril.ID, |
118 | sourceType, | 108 | sourceType, |
119 | dbID) | 109 | dbID) |
120 | for _, v := range g.Gril.Tags { | ||
121 | tagID := taglist[v] | ||
122 | db.Exec("INSERT INTO grilist.grils_tags (gril_id, tag_id) VALUES ($1, $2);", dbID, tagID) | ||
123 | } | ||
124 | db.Exec(`INSERT INTO grilist.grils_id_mappings (gril_id, | 110 | db.Exec(`INSERT INTO grilist.grils_id_mappings (gril_id, |
125 | source, source_id) VALUES ($1, $2, $3);`, | 111 | source, source_id) VALUES ($1, $2, $3);`, |
126 | dbID, r.ID(), g.Gril.ID) | 112 | dbID, r.ID(), g.Gril.ID) |
@@ -164,6 +150,24 @@ func main() { | |||
164 | } | 150 | } |
165 | fmt.Printf("Inserted %s\n", g.Gril.RomajiName) | 151 | fmt.Printf("Inserted %s\n", g.Gril.RomajiName) |
166 | } | 152 | } |
153 | for _, v := range g.Gril.Tags { | ||
154 | if _, ok := taglist[v]; ok { | ||
155 | continue | ||
156 | } | ||
157 | var id int | ||
158 | row := db.QueryRow("INSERT INTO grilist.tags (name) VALUES ($1) RETURNING id;", v) | ||
159 | row.Scan(&id) | ||
160 | taglist[v] = id | ||
161 | } | ||
162 | _, err = db.Exec(`DELETE FROM grilist.grils_tags WHERE gril_id | ||
163 | = $1`, dbID) | ||
164 | LogErr(err) | ||
165 | for _, v := range g.Gril.Tags { | ||
166 | tagID := taglist[v] | ||
167 | _, err := db.Exec(`INSERT INTO grilist.grils_tags | ||
168 | (gril_id, tag_id) VALUES ($1, $2);`, dbID, tagID) | ||
169 | LogErr(err) | ||
170 | } | ||
167 | return nil | 171 | return nil |
168 | }) | 172 | }) |
169 | } | 173 | } |