231 lines
6.9 KiB
Python
231 lines
6.9 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 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)
|
|
|
|
class Meta:
|
|
collection_name = "twitteraccount"
|
|
|
|
|
|
@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)
|
|
|
|
class Meta:
|
|
collection_name = "twitterfollow"
|
|
|
|
|
|
@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)
|