jarvis-core/jarvis_core/db/models.py

237 lines
7 KiB
Python

"""JARVIS database models."""
from datetime import datetime
import marshmallow as ma
from umongo import Document, fields
from jarvis_core.db import JARVIS_INST
class RawField(fields.BaseField, ma.fields.Raw):
pass
@JARVIS_INST.register
class Autopurge(Document):
guild = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
delay = fields.IntegerField(default=30)
admin = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.now)
@JARVIS_INST.register
class Autoreact(Document):
guild = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
reactions = fields.ListField(fields.StringField())
admin = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.now)
@JARVIS_INST.register
class Ban(Document):
active = fields.BooleanField(default=True)
admin = fields.IntegerField(required=True)
user = fields.IntegerField(required=True)
username = fields.StringField(required=True)
discrim = fields.IntegerField(required=True)
duration = fields.IntegerField(required=False)
guild = fields.IntegerField(required=True)
type = fields.StringField(default="perm")
reason = fields.StringField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Config(Document):
"""Config database object."""
key = fields.StringField(required=True)
value = RawField(required=True)
@JARVIS_INST.register
class Guess(Document):
"""Guess database object."""
correct = fields.BooleanField(default=False)
guess = fields.StringField(required=True)
user = fields.IntegerField(required=True)
@JARVIS_INST.register
class Joke(Document):
"""Joke database object."""
rid = fields.StringField()
body = fields.StringField()
title = fields.StringField()
created_utc = fields.DateTimeField()
over_18 = fields.BooleanField()
score = fields.IntegerField()
@JARVIS_INST.register
class Kick(Document):
"""Kick database object."""
admin = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
reason = fields.StringField(required=True)
user = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Lock(Document):
"""Lock database object."""
active = fields.BooleanField(default=True)
admin = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
duration = fields.IntegerField(default=10)
guild = fields.IntegerField(required=True)
reason = fields.StringField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Mute(Document):
"""Mute database object."""
active = fields.BooleanField(default=True)
user = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True)
duration = fields.IntegerField(default=10)
guild = fields.IntegerField(required=True)
reason = fields.StringField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Purge(Document):
"""Purge database object."""
admin = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
count = fields.IntegerField(default=10)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Reminder(Document):
"""Reminder database object."""
active = fields.BooleanField(default=True)
user = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
message = fields.StringField(required=True)
remind_at = fields.DateTimeField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
private = fields.BooleanField(default=False)
@JARVIS_INST.register
class Rolegiver(Document):
"""Rolegiver database object."""
guild = fields.IntegerField(required=True)
roles = fields.ListField(fields.IntegerField())
@JARVIS_INST.register
class Roleping(Document):
"""Roleping database object."""
active = fields.BooleanField(default=True)
role = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True)
bypass = fields.DictField()
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Setting(Document):
"""Setting database object."""
guild = fields.IntegerField(required=True)
setting = fields.StringField(required=True)
value = RawField()
@JARVIS_INST.register
class Star(Document):
"""Star database object."""
active = fields.BooleanField(default=True)
index = fields.IntegerField(required=True)
message = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
starboard = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True)
star = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Starboard(Document):
"""Starboard database object."""
channel = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class TwitterAccount(Document):
"""Twitter Account object."""
handle = fields.StringField(required=True)
twitter_id = fields.IntegerField(required=True)
last_tweet = fields.IntegerField(required=True)
last_sync = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class TwitterFollow(Document):
"""Twitter Follow object."""
active = fields.BooleanField(default=True)
twitter_id = fields.IntegerField(required=True)
channel = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
retweets = fields.BooleanField(default=True)
admin = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Unban(Document):
"""Unban database object."""
user = fields.IntegerField(required=True)
username = fields.StringField(required=True)
discrim = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True)
reason = fields.StringField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Warning(Document):
"""Warning database object."""
active = fields.BooleanField(default=True)
admin = fields.IntegerField(required=True)
user = fields.IntegerField(required=True)
guild = fields.IntegerField(required=True)
duration = fields.IntegerField(default=24)
reason = fields.StringField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow)