From 633cd730c0f20b1be9790447e47b6ac1783a66d1 Mon Sep 17 00:00:00 2001 From: Luna Date: Wed, 13 Mar 2019 04:28:23 -0300 Subject: [PATCH] guilds: add basic vanity urls - add vanity_invites table --- litecord/blueprints/guilds.py | 20 +++++++++++++++++++ .../scripts/13_add_vanity_invites_table.sql | 5 +++++ schema.sql | 6 ++++++ 3 files changed, 31 insertions(+) create mode 100644 manage/cmd/migration/scripts/13_add_vanity_invites_table.sql diff --git a/litecord/blueprints/guilds.py b/litecord/blueprints/guilds.py index bed7881..47fe902 100644 --- a/litecord/blueprints/guilds.py +++ b/litecord/blueprints/guilds.py @@ -371,3 +371,23 @@ async def ack_guild(guild_id): await channel_ack(user_id, guild_id, chan_id) return '', 204 + + +@bp.route('//vanity-url', methods=['GET']) +async def get_vanity_url(guild_id: int): + """Get the vanity url of a guild.""" + user_id = await token_check() + + await guild_perm_check(user_id, guild_id, 'manage_guild') + + inv_code = await app.db.fetchval(""" + SELECT code FROM vanity_invites + WHERE guild_id = $1 + """, guild_id) + + if inv_code is None: + return jsonify({'code': None}) + + return jsonify( + await app.storage.get_invite(inv_code) + ) diff --git a/manage/cmd/migration/scripts/13_add_vanity_invites_table.sql b/manage/cmd/migration/scripts/13_add_vanity_invites_table.sql new file mode 100644 index 0000000..73aa914 --- /dev/null +++ b/manage/cmd/migration/scripts/13_add_vanity_invites_table.sql @@ -0,0 +1,5 @@ +-- vanity url table, the mapping is 1-1 for guilds and vanity urls +CREATE TABLE IF NOT EXISTS vanity_invites ( + guild_id bigint REFERENCES guilds (id) PRIMARY KEY, + code text REFERENCES invites (code) ON DELETE CASCADE +); diff --git a/schema.sql b/schema.sql index 0f5742d..32fa564 100644 --- a/schema.sql +++ b/schema.sql @@ -527,6 +527,12 @@ CREATE TABLE IF NOT EXISTS invites ( revoked bool DEFAULT false ); +-- vanity url table, the mapping is 1-1 for guilds and vanity urls +CREATE TABLE IF NOT EXISTS vanity_invites ( + guild_id bigint REFERENCES guilds (id) PRIMARY KEY, + code text REFERENCES invites (code) ON DELETE CASCADE +); + CREATE TABLE IF NOT EXISTS webhooks ( id bigint PRIMARY KEY,