X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FXML%2FNews.hs;h=f962c9ca650dc18bd8e4145d8ce0a6e4c0660d43;hb=59d56f0ae0da1d4b1898b3c7536ae38473306319;hp=8da43296e02d43a4b9cd6f8aad28cafc5e49df02;hpb=a913a63f7679b59f9b650619e8fbfc6e81f3f8d3;p=dead%2Fhtsn-import.git diff --git a/src/TSN/XML/News.hs b/src/TSN/XML/News.hs index 8da4329..f962c9c 100644 --- a/src/TSN/XML/News.hs +++ b/src/TSN/XML/News.hs @@ -161,14 +161,11 @@ instance DbImport Message where -- Insert the message and acquire its primary key (unique ID) news_id <- insert_xml message - -- And insert each one into its own table. We use insertByAll_xml + -- And insert each one into its own table. We use insert_xml_or_select -- because we know that most teams will already exist, and we - -- want to get back a Left (id) for the existing team when - -- there's a collision. In fact, if the insert succeeds, we'll - -- get a Right (id) back, so we can disregard the Either - -- constructor entirely. That's what the (either id id) does. - either_nt_ids <- mapM insertByAll_xml (xml_teams message) - let nt_ids = map (either id id) either_nt_ids + -- want to get back the id for the existing team when + -- there's a collision. + nt_ids <- mapM insert_xml_or_select (xml_teams message) -- Now that the teams have been inserted, create -- news__news_team records mapping beween the two. @@ -176,8 +173,7 @@ instance DbImport Message where mapM_ insert_ news_news_teams -- Do all of that over again for the NewsLocations. - either_loc_ids <- mapM insertByAll_xml (xml_locations message) - let loc_ids = map (either id id) either_loc_ids + loc_ids <- mapM insert_xml_or_select (xml_locations message) let news_news_locations = map (News_NewsLocation news_id) loc_ids mapM_ insert_ news_news_locations