mirror of
				https://github.com/TitanEmbeds/Titan.git
				synced 2025-11-03 23:37:09 +01:00 
			
		
		
		
	Use a more optimal primary key and integer to store snowflakes
This commit is contained in:
		@@ -54,9 +54,9 @@ class DatabaseInterface(object):
 | 
			
		||||
                        edit_ts = str(edit_ts)
 | 
			
		||||
 | 
			
		||||
                    msg = Messages(
 | 
			
		||||
                        message.server.id,
 | 
			
		||||
                        message.channel.id,
 | 
			
		||||
                        message.id,
 | 
			
		||||
                        int(message.server.id),
 | 
			
		||||
                        int(message.channel.id),
 | 
			
		||||
                        int(message.id),
 | 
			
		||||
                        message.content,
 | 
			
		||||
                        json.dumps(get_message_author(message)),
 | 
			
		||||
                        str(message.timestamp),
 | 
			
		||||
@@ -91,9 +91,9 @@ class DatabaseInterface(object):
 | 
			
		||||
            async with threadpool():
 | 
			
		||||
                with self.get_session() as session:
 | 
			
		||||
                    msg = session.query(Messages) \
 | 
			
		||||
                        .filter(Messages.guild_id == message.server.id) \
 | 
			
		||||
                        .filter(Messages.channel_id == message.channel.id) \
 | 
			
		||||
                        .filter(Messages.message_id == message.id).first()
 | 
			
		||||
                        .filter(Messages.guild_id == int(message.server.id)) \
 | 
			
		||||
                        .filter(Messages.channel_id == int(message.channel.id)) \
 | 
			
		||||
                        .filter(Messages.message_id == int(message.id)).first()
 | 
			
		||||
                    if msg:
 | 
			
		||||
                        session.delete(msg)
 | 
			
		||||
                        session.commit()
 | 
			
		||||
@@ -108,13 +108,13 @@ class DatabaseInterface(object):
 | 
			
		||||
                gui = session.query(Guilds).filter(Guilds.guild_id == guild.id).first()
 | 
			
		||||
                if not gui:
 | 
			
		||||
                    gui = Guilds(
 | 
			
		||||
                        guild.id,
 | 
			
		||||
                        int(guild.id),
 | 
			
		||||
                        guild.name,
 | 
			
		||||
                        json.dumps(get_roles_list(guild.roles)),
 | 
			
		||||
                        json.dumps(get_channels_list(guild.channels)),
 | 
			
		||||
                        json.dumps(get_webhooks_list(server_webhooks)),
 | 
			
		||||
                        json.dumps(get_emojis_list(guild.emojis)),
 | 
			
		||||
                        guild.owner_id,
 | 
			
		||||
                        int(guild.owner_id),
 | 
			
		||||
                        guild.icon
 | 
			
		||||
                    )
 | 
			
		||||
                    session.add(gui)
 | 
			
		||||
@@ -124,7 +124,7 @@ class DatabaseInterface(object):
 | 
			
		||||
                    gui.channels = json.dumps(get_channels_list(guild.channels))
 | 
			
		||||
                    gui.webhooks = json.dumps(get_webhooks_list(server_webhooks))
 | 
			
		||||
                    gui.emojis = json.dumps(get_emojis_list(guild.emojis))
 | 
			
		||||
                    gui.owner_id = guild.owner_id
 | 
			
		||||
                    gui.owner_id = int(guild.owner_id)
 | 
			
		||||
                    gui.icon = guild.icon
 | 
			
		||||
                session.commit()
 | 
			
		||||
 | 
			
		||||
@@ -137,7 +137,7 @@ class DatabaseInterface(object):
 | 
			
		||||
                    disguild = discord.utils.get(guilds, id=guild.guild_id)
 | 
			
		||||
                    if not disguild:
 | 
			
		||||
                        changed = True
 | 
			
		||||
                        dbmsgs = session.query(Messages).filter(Messages.guild_id == guild.guild_id).all()
 | 
			
		||||
                        dbmsgs = session.query(Messages).filter(Messages.guild_id == int(guild.guild_id)).all()
 | 
			
		||||
                        for msg in dbmsgs:
 | 
			
		||||
                            session.delete(msg)
 | 
			
		||||
                        session.delete(guild)
 | 
			
		||||
@@ -147,9 +147,9 @@ class DatabaseInterface(object):
 | 
			
		||||
    async def remove_guild(self, guild):
 | 
			
		||||
        async with threadpool():
 | 
			
		||||
            with self.get_session() as session:
 | 
			
		||||
                gui = session.query(Guilds).filter(Guilds.guild_id == guild.id).first()
 | 
			
		||||
                gui = session.query(Guilds).filter(Guilds.guild_id == int(guild.id)).first()
 | 
			
		||||
                if gui:
 | 
			
		||||
                    dbmsgs = session.query(Messages).filter(Messages.guild_id == guild.id).all()
 | 
			
		||||
                    dbmsgs = session.query(Messages).filter(Messages.guild_id == int(guild.id)).all()
 | 
			
		||||
                    for msg in dbmsgs:
 | 
			
		||||
                        session.delete(msg)
 | 
			
		||||
                    session.delete(gui)
 | 
			
		||||
@@ -159,13 +159,13 @@ class DatabaseInterface(object):
 | 
			
		||||
        async with threadpool():
 | 
			
		||||
            with self.get_session() as session:
 | 
			
		||||
                dbmember = session.query(GuildMembers) \
 | 
			
		||||
                    .filter(GuildMembers.guild_id == member.server.id) \
 | 
			
		||||
                    .filter(GuildMembers.user_id == member.id) \
 | 
			
		||||
                    .order_by(GuildMembers.id).all()
 | 
			
		||||
                    .filter(GuildMembers.guild_id == int(member.server.id)) \
 | 
			
		||||
                    .filter(GuildMembers.user_id == int(member.id)) \
 | 
			
		||||
                    .order_by(int(GuildMembers.id)).all()
 | 
			
		||||
                if not dbmember:
 | 
			
		||||
                    dbmember = GuildMembers(
 | 
			
		||||
                        member.server.id,
 | 
			
		||||
                        member.id,
 | 
			
		||||
                        int(member.server.id),
 | 
			
		||||
                        int(member.id),
 | 
			
		||||
                        member.name,
 | 
			
		||||
                        member.discriminator,
 | 
			
		||||
                        member.nick,
 | 
			
		||||
@@ -193,8 +193,8 @@ class DatabaseInterface(object):
 | 
			
		||||
        async with threadpool():
 | 
			
		||||
            with self.get_session() as session:
 | 
			
		||||
                dbmember = session.query(GuildMembers) \
 | 
			
		||||
                    .filter(GuildMembers.guild_id == server.id) \
 | 
			
		||||
                    .filter(GuildMembers.user_id == user.id).first()
 | 
			
		||||
                    .filter(GuildMembers.guild_id == int(server.id)) \
 | 
			
		||||
                    .filter(GuildMembers.user_id == int(user.id)).first()
 | 
			
		||||
                if dbmember:
 | 
			
		||||
                    dbmember.banned = False
 | 
			
		||||
                    session.commit()
 | 
			
		||||
@@ -204,7 +204,7 @@ class DatabaseInterface(object):
 | 
			
		||||
            with self.get_session() as session:
 | 
			
		||||
                changed = False
 | 
			
		||||
                dbmembers = session.query(GuildMembers) \
 | 
			
		||||
                    .filter(GuildMembers.guild_id == guild_id) \
 | 
			
		||||
                    .filter(GuildMembers.guild_id == int(guild_id)) \
 | 
			
		||||
                    .filter(GuildMembers.active == True).all()
 | 
			
		||||
                for member in dbmembers:
 | 
			
		||||
                    dismember = discord.utils.get(guild_members, id=member.user_id)
 | 
			
		||||
@@ -220,16 +220,16 @@ class DatabaseInterface(object):
 | 
			
		||||
                changed = False
 | 
			
		||||
                for usr in guildbans:
 | 
			
		||||
                    dbusr = session.query(GuildMembers) \
 | 
			
		||||
                        .filter(GuildMembers.guild_id == guild_id) \
 | 
			
		||||
                        .filter(GuildMembers.user_id == usr.id) \
 | 
			
		||||
                        .filter(GuildMembers.guild_id == int(guild_id)) \
 | 
			
		||||
                        .filter(GuildMembers.user_id == int(usr.id)) \
 | 
			
		||||
                        .filter(GuildMembers.active == False).first()
 | 
			
		||||
                    changed = True
 | 
			
		||||
                    if dbusr:
 | 
			
		||||
                        dbusr.banned = True
 | 
			
		||||
                    else:
 | 
			
		||||
                        dbusr = GuildMembers(
 | 
			
		||||
                            guild_id,
 | 
			
		||||
                            usr.id,
 | 
			
		||||
                            int(guild_id),
 | 
			
		||||
                            int(usr.id),
 | 
			
		||||
                            usr.name,
 | 
			
		||||
                            usr.discriminator,
 | 
			
		||||
                            None,
 | 
			
		||||
@@ -248,26 +248,26 @@ class DatabaseInterface(object):
 | 
			
		||||
                dbuser = None
 | 
			
		||||
                if discriminator:
 | 
			
		||||
                    dbuser = session.query(UnauthenticatedUsers) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == guild_id) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == int(guild_id)) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.username.ilike("%" + username + "%")) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.discriminator == discriminator) \
 | 
			
		||||
                        .order_by(UnauthenticatedUsers.id.desc()).first()
 | 
			
		||||
                else:
 | 
			
		||||
                    dbuser = session.query(UnauthenticatedUsers) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == guild_id) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == int(guild_id)) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.username.ilike("%" + username + "%")) \
 | 
			
		||||
                        .order_by(UnauthenticatedUsers.id.desc()).first()
 | 
			
		||||
                if not dbuser:
 | 
			
		||||
                    return "Ban error! Guest user cannot be found."
 | 
			
		||||
                dbban = session.query(UnauthenticatedBans) \
 | 
			
		||||
                    .filter(UnauthenticatedBans.guild_id == guild_id) \
 | 
			
		||||
                    .filter(UnauthenticatedBans.guild_id == int(guild_id)) \
 | 
			
		||||
                    .filter(UnauthenticatedBans.last_username == dbuser.username) \
 | 
			
		||||
                    .filter(UnauthenticatedBans.last_discriminator == dbuser.discriminator).first()
 | 
			
		||||
                if dbban is not None:
 | 
			
		||||
                    if dbban.lifter_id is None:
 | 
			
		||||
                        return "Ban error! Guest user, **{}#{}**, has already been banned.".format(dbban.last_username, dbban.last_discriminator)
 | 
			
		||||
                    session.delete(dbban)
 | 
			
		||||
                dbban = UnauthenticatedBans(guild_id, dbuser.ip_address, dbuser.username, dbuser.discriminator, "", placer_id)
 | 
			
		||||
                dbban = UnauthenticatedBans(int(guild_id), dbuser.ip_address, dbuser.username, dbuser.discriminator, "", int(placer_id))
 | 
			
		||||
                session.add(dbban)
 | 
			
		||||
                session.commit()
 | 
			
		||||
                return "Guest user, **{}#{}**, has successfully been added to the ban list!".format(dbban.last_username, dbban.last_discriminator)
 | 
			
		||||
@@ -278,13 +278,13 @@ class DatabaseInterface(object):
 | 
			
		||||
                dbuser = None
 | 
			
		||||
                if discriminator:
 | 
			
		||||
                    dbuser = session.query(UnauthenticatedUsers) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == guild_id) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == int(guild_id)) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.username.ilike("%" + username + "%")) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.discriminator == discriminator) \
 | 
			
		||||
                        .order_by(UnauthenticatedUsers.id.desc()).first()
 | 
			
		||||
                else:
 | 
			
		||||
                    dbuser = session.query(UnauthenticatedUsers) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == guild_id) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.guild_id == int(guild_id)) \
 | 
			
		||||
                        .filter(UnauthenticatedUsers.username.ilike("%" + username + "%")) \
 | 
			
		||||
                        .order_by(UnauthenticatedUsers.id.desc()).first()
 | 
			
		||||
                if not dbuser:
 | 
			
		||||
@@ -298,5 +298,5 @@ class DatabaseInterface(object):
 | 
			
		||||
    async def delete_all_messages_from_channel(self, channel_id):
 | 
			
		||||
        async with threadpool():
 | 
			
		||||
            with self.get_session() as session:
 | 
			
		||||
                session.query(Messages).filter(Messages.channel_id == channel_id).delete()
 | 
			
		||||
                session.query(Messages).filter(Messages.channel_id == int(channel_id)).delete()
 | 
			
		||||
                session.commit()
 | 
			
		||||
@@ -3,8 +3,8 @@ from titanembeds.database import db, Base
 | 
			
		||||
class GuildMembers(Base):
 | 
			
		||||
    __tablename__ = "guild_members"
 | 
			
		||||
    id = db.Column(db.Integer, primary_key=True)    # Auto incremented id
 | 
			
		||||
    guild_id = db.Column(db.String(255))            # Discord guild id
 | 
			
		||||
    user_id = db.Column(db.String(255))             # Discord user id
 | 
			
		||||
    guild_id = db.Column(db.BigInteger)            # Discord guild id
 | 
			
		||||
    user_id = db.Column(db.BigInteger)             # Discord user id
 | 
			
		||||
    username = db.Column(db.String(255))            # Name
 | 
			
		||||
    discriminator = db.Column(db.Integer)           # User discriminator
 | 
			
		||||
    nickname = db.Column(db.String(255))            # User nickname
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,7 @@ from titanembeds.database import db, Base
 | 
			
		||||
 | 
			
		||||
class Guilds(Base):
 | 
			
		||||
    __tablename__ = "guilds"
 | 
			
		||||
    id = db.Column(db.Integer, primary_key=True)    # Auto incremented id
 | 
			
		||||
    guild_id = db.Column(db.String(255))            # Discord guild id
 | 
			
		||||
    guild_id = db.Column(db.BigInteger, primary_key=True            # Discord guild id
 | 
			
		||||
    name = db.Column(db.String(255))                # Name
 | 
			
		||||
    unauth_users = db.Column(db.Boolean())          # If allowed unauth users
 | 
			
		||||
    visitor_view = db.Column(db.Boolean())          # If users are automatically "signed in" and can view chat
 | 
			
		||||
@@ -17,7 +16,7 @@ class Guilds(Base):
 | 
			
		||||
    channels = db.Column(db.Text().with_variant(db.Text(length=4294967295), 'mysql'))# Guild channels
 | 
			
		||||
    webhooks = db.Column(db.Text().with_variant(db.Text(length=4294967295), 'mysql'))# Guild webhooks
 | 
			
		||||
    emojis = db.Column(db.Text().with_variant(db.Text(length=4294967295), 'mysql'))  # Guild Emojis
 | 
			
		||||
    owner_id = db.Column(db.String(255))            # Snowflake of the owner
 | 
			
		||||
    owner_id = db.Column(db.BigInteger            # Snowflake of the owner
 | 
			
		||||
    icon = db.Column(db.String(255))                # The icon string, null if none
 | 
			
		||||
    invite_link = db.Column(db.String(255))         # Custom Discord Invite Link
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,9 @@ from titanembeds.database import db, Base
 | 
			
		||||
 | 
			
		||||
class Messages(Base):
 | 
			
		||||
    __tablename__ = "messages"
 | 
			
		||||
    id = db.Column(db.Integer, primary_key=True)    # Auto incremented id
 | 
			
		||||
    guild_id = db.Column(db.String(255))            # Discord guild id
 | 
			
		||||
    channel_id = db.Column(db.String(255))          # Channel id
 | 
			
		||||
    message_id = db.Column(db.String(255))          # Message snowflake
 | 
			
		||||
    message_id = db.Column(db.BigInteger, primary_key=True)          # Message snowflake
 | 
			
		||||
    guild_id = db.Column(db.BigInteger)            # Discord guild id
 | 
			
		||||
    channel_id = db.Column(db.BigInteger)          # Channel id
 | 
			
		||||
    content = db.Column(db.Text())                  # Message contents
 | 
			
		||||
    author = db.Column(db.Text())                   # Author json
 | 
			
		||||
    timestamp = db.Column(db.TIMESTAMP)             # Timestamp of when content is created
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,8 @@ class UnauthenticatedBans(Base):
 | 
			
		||||
    last_discriminator = db.Column(db.Integer)      # The discrim when they got banned
 | 
			
		||||
    timestamp = db.Column(db.TIMESTAMP)             # The timestamp of when the user got banned
 | 
			
		||||
    reason = db.Column(db.Text())                   # The reason of the ban set by the guild moderators
 | 
			
		||||
    lifter_id = db.Column(db.String(255))           # Discord Client ID of the user who lifted the ban
 | 
			
		||||
    placer_id = db.Column(db.String(255))           # The id of who placed the ban
 | 
			
		||||
    lifter_id = db.Column(db.BigInteger)           # Discord Client ID of the user who lifted the ban
 | 
			
		||||
    placer_id = db.Column(db.BigInteger)           # The id of who placed the ban
 | 
			
		||||
 | 
			
		||||
    def __init__(self, guild_id, ip_address, last_username, last_discriminator, reason, placer_id):
 | 
			
		||||
        self.guild_id = guild_id
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import string
 | 
			
		||||
class UnauthenticatedUsers(Base):
 | 
			
		||||
    __tablename__ = "unauthenticated_users"
 | 
			
		||||
    id = db.Column(db.Integer, primary_key=True)    # Auto increment id
 | 
			
		||||
    guild_id = db.Column(db.String(255))            # Guild pretaining to the unauthenticated user
 | 
			
		||||
    guild_id = db.Column(db.BigInteger)            # Guild pretaining to the unauthenticated user
 | 
			
		||||
    username = db.Column(db.String(255))            # The username of the user
 | 
			
		||||
    discriminator = db.Column(db.Integer)           # The discriminator to distinguish unauth users with each other
 | 
			
		||||
    user_key = db.Column(db.Text())                 # The secret key used to identify the user holder
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user