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)
VALUES
($1, $2, $3, 0)
ON CONFLICT
DO UPDATE user_read_state
ON CONFLICT DO UPDATE
SET last_message_id = $3, mention_count = 0
WHERE user_id = $1 AND channel_id = $2
""", user_id, channel_id, message_id)

View File

@ -446,20 +446,17 @@ async def patch_guild_settings(guild_id: int):
continue
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"""
INSERT INTO guild_settings_channel_overrides
(user_id, guild_id, channel_id, {field})
VALUES ($1, $2, $3, $4)
""", user_id, guild_id, chan_id, chan_overrides[field])
await app.db.execute(f"""
INSERT INTO guild_settings_channel_overrides
(user_id, guild_id, channel_id, {field})
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])
settings = await app.storage.get_guild_settings_one(user_id, guild_id)