@@ -285,35 +285,47 @@ migrateStateToDatabase usersState adminsState DatabaseFeature{..} = do
285285 users <- queryState usersState GetUserDb
286286 admins <- queryState adminsState GetAdminList
287287
288+ let usersAndTokens =
289+ map (\ (uid, uinfo) ->
290+ ( (uid, uinfo),
291+ map (\ (token, desc) -> (uid, token, desc))
292+ (Map. toList (userTokens uinfo))
293+ )
294+ ) (Users. enumerateAllUsers users)
295+
296+ let usersToInsert = map fst usersAndTokens
297+ let tokensToInsert = concatMap snd usersAndTokens
288298 withTransaction $ do
289- forM_ (Users. enumerateAllUsers users) $ \ (uid, uinfo) -> do
290- let (status, authInfo) =
291- case userStatus uinfo of
292- AccountEnabled a -> (Enabled , Just a)
293- AccountDisabled ma -> (Disabled , ma)
294- AccountDeleted -> (Deleted , Nothing )
295-
296- Database. runInsert $
297- insert
298- (_tblUsers Database. hackageDb)
299- (insertValues [UsersRow {
300- _uId = uid,
301- _uUsername = userName uinfo,
302- _uStatus = status,
303- _uAuthInfo = authInfo,
304- _uAdmin = Group. member uid admins
305- }])
306-
307- forM_ (Map. toList (userTokens uinfo)) $ \ (token, desc) -> do
308- Database. runInsert $
309- insert
310- (_tblUserTokens Database. hackageDb)
311- (insertExpressions [UserTokensRow {
312- _utId = default_,
313- _utUserId = val_ uid,
314- _utToken = val_ token,
315- _utDescription = val_ desc
316- }])
299+ Database. runInsert $
300+ insert
301+ (_tblUsers Database. hackageDb)
302+ (insertValues (map (\ (uid, uinfo) ->
303+ let (status, authInfo) =
304+ case userStatus uinfo of
305+ AccountEnabled a -> (Enabled , Just a)
306+ AccountDisabled ma -> (Disabled , ma)
307+ AccountDeleted -> (Deleted , Nothing )
308+ in
309+ UsersRow {
310+ _uId = uid,
311+ _uUsername = userName uinfo,
312+ _uStatus = status,
313+ _uAuthInfo = authInfo,
314+ _uAdmin = Group. member uid admins
315+ }
316+ ) usersToInsert))
317+
318+ Database. runInsert $
319+ insert
320+ (_tblUserTokens Database. hackageDb)
321+ (insertExpressions (map (\ (uid, token, desc) ->
322+ UserTokensRow {
323+ _utId = default_,
324+ _utUserId = val_ uid,
325+ _utToken = val_ token,
326+ _utDescription = val_ desc
327+ }
328+ ) tokensToInsert))
317329
318330
319331usersStateComponent :: FilePath -> IO (StateComponent AcidState Users. Users )
0 commit comments