Remove guild members table for storing in redis

This commit is contained in:
Jeremy Zhang
2018-07-17 23:47:30 +00:00
parent 56ba9bc127
commit 86c7232b35
13 changed files with 230 additions and 258 deletions

View File

@ -6,7 +6,6 @@ import datetime
db = Gino()
from titanembeds.database.guilds import Guilds
from titanembeds.database.guild_members import GuildMembers
from titanembeds.database.unauthenticated_users import UnauthenticatedUsers
from titanembeds.database.unauthenticated_bans import UnauthenticatedBans
@ -70,82 +69,6 @@ class DatabaseInterface(object):
if gui:
await Messages.delete.where(Messages.guild_id == int(guild.id)).gino.status()
await gui.delete()
async def update_guild_member(self, member, active=True, banned=False, guild=None):
if guild:
dbmember = await GuildMembers.query \
.where(GuildMembers.guild_id == int(guild.id)) \
.where(GuildMembers.user_id == int(member.id)) \
.order_by(GuildMembers.id).gino.all()
else:
dbmember = await GuildMembers.query \
.where(GuildMembers.guild_id == int(member.guild.id)) \
.where(GuildMembers.user_id == int(member.id)) \
.order_by(GuildMembers.id).gino.all()
if not dbmember:
await GuildMembers.create(
guild_id = int(member.guild.id),
user_id = int(member.id),
username = member.name,
discriminator = int(member.discriminator),
nickname = member.nick,
avatar = member.avatar,
active = active,
banned = banned,
roles = json.dumps(list_role_ids(member.roles))
)
else:
if len(dbmember) > 1:
for mem in dbmember[1:]:
await mem.delete()
dbmember = dbmember[0]
if dbmember.banned != banned or dbmember.active != active or dbmember.username != member.name or dbmember.discriminator != int(member.discriminator) or dbmember.nickname != member.nick or dbmember.avatar != member.avatar or set(json.loads(dbmember.roles)) != set(list_role_ids(member.roles)):
await dbmember.update(
banned = banned,
active = active,
username = member.name,
discriminator = int(member.discriminator),
nickname = member.nick,
avatar = member.avatar,
roles = json.dumps(list_role_ids(member.roles))
).apply()
async def unban_server_user(self, user, server):
await GuildMembers.update.values(banned = False) \
.where(GuildMembers.guild_id == int(server.id)) \
.where(GuildMembers.user_id == int(user.id)) \
.gino.status()
async def flag_unactive_guild_members(self, guild_id, guild_members):
async with db.transaction():
async for member in GuildMembers.query \
.where(GuildMembers.guild_id == int(guild_id)) \
.where(GuildMembers.active == True).gino.iterate():
dismember = discord.utils.get(guild_members, id=member.user_id)
if not dismember:
await member.update(active = False).apply()
async def flag_unactive_bans(self, guild_id, guildbans):
for usr in guildbans:
dbusr = await GuildMembers.query \
.where(GuildMembers.guild_id == int(guild_id)) \
.where(GuildMembers.user_id == int(usr.id)) \
.where(GuildMembers.active == False).gino.first()
if dbusr:
dbusr.update(banned=True).apply()
else:
await GuildMembers.create(
guild_id = int(guild_id),
user_id = int(usr.id),
username = usr.name,
discriminator = int(usr.discriminator),
nickname = None,
avatar = usr.avatar,
active = False,
banned = True,
roles = "[]"
)
async def ban_unauth_user_by_query(self, guild_id, placer_id, username, discriminator):
dbuser = None

View File

@ -1,14 +0,0 @@
from titanembeds.database import db
class GuildMembers(db.Model):
__tablename__ = "guild_members"
id = db.Column(db.Integer, primary_key=True) # Auto incremented 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
avatar = db.Column(db.String(255)) # The avatar str of the user
active = db.Column(db.Boolean()) # If the user is a member of the guild
banned = db.Column(db.Boolean()) # If the user is banned in the guild
roles = db.Column(db.Text()) # Member roles