users: use UPSERT when setting chan overrides

- channels: fix UPSERT
This commit is contained in:
Luna Mendes 2018-11-04 23:46:18 -03:00
parent 7ce59398c4
commit 03e42d9a43
2 changed files with 12 additions and 16 deletions

View File

@ -326,8 +326,7 @@ async def channel_ack(user_id, guild_id, channel_id, message_id: int = None):
(user_id, channel_id, last_message_id, mention_count) (user_id, channel_id, last_message_id, mention_count)
VALUES VALUES
($1, $2, $3, 0) ($1, $2, $3, 0)
ON CONFLICT ON CONFLICT DO UPDATE
DO UPDATE user_read_state
SET last_message_id = $3, mention_count = 0 SET last_message_id = $3, mention_count = 0
WHERE user_id = $1 AND channel_id = $2 WHERE user_id = $1 AND channel_id = $2
""", user_id, channel_id, message_id) """, user_id, channel_id, message_id)

View File

@ -446,19 +446,16 @@ async def patch_guild_settings(guild_id: int):
continue continue
for field in chan_overrides: for field in chan_overrides:
res = await app.db.execute(f"""
UPDATE guild_settings_channel_overrides
SET {field} = $1
WHERE user_id = $2
AND guild_id = $3
AND channel_id = $4
""", chan_overrides[field], user_id, guild_id, chan_id)
if res == 'UPDATE 0':
await app.db.execute(f""" await app.db.execute(f"""
INSERT INTO guild_settings_channel_overrides INSERT INTO guild_settings_channel_overrides
(user_id, guild_id, channel_id, {field}) (user_id, guild_id, channel_id, {field})
VALUES ($1, $2, $3, $4) VALUES
($1, $2, $3, $4)
ON CONFLICT DO UPDATE
SET {field} = $4
WHERE user_id = $1
AND guild_id = $2
AND channel_id = $3
""", user_id, guild_id, chan_id, chan_overrides[field]) """, user_id, guild_id, chan_id, chan_overrides[field])
settings = await app.storage.get_guild_settings_one(user_id, guild_id) settings = await app.storage.get_guild_settings_one(user_id, guild_id)