122 lines
4.9 KiB
Python
122 lines
4.9 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
|
|
from umongo import Document, EmbeddedDocument, fields
|
|
|
|
from jarvis_core import __version__
|
|
from jarvis_core.db import JARVIS_INST
|
|
from jarvis_core.db.fields import BinaryField
|
|
from jarvis_core.db.utils import get_id, get_now
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class Image(Document):
|
|
discord_id: int = fields.IntegerField(unique=True)
|
|
image_data: List[bytes] = BinaryField()
|
|
image_ext: str = fields.StringField()
|
|
created_at: datetime = fields.AwareDateTimeField(default=get_now)
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class PermissionOverwriteBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
type: int = fields.IntegerField()
|
|
allow: int = fields.IntegerField()
|
|
deny: int = fields.IntegerField()
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class WebhookBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
channel_id: int = fields.IntegerField()
|
|
type: int = fields.IntegerField()
|
|
avatar: Image = fields.ReferenceField(Image)
|
|
name: str = fields.StringField()
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class ChannelBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
name: str = fields.StringField()
|
|
type: int = fields.IntegerField()
|
|
position: int = fields.IntegerField()
|
|
topic: Optional[str] = fields.StringField(default=None)
|
|
nsfw: bool = fields.BooleanField(default=False)
|
|
rate_limit_per_user: int = fields.IntegerField(default=None)
|
|
bitrate: Optional[int] = fields.IntegerField(default=None)
|
|
user_limit: Optional[int] = fields.IntegerField(default=None)
|
|
permission_overwrites: List[PermissionOverwriteBackup] = fields.ListField(
|
|
fields.EmbeddedField(PermissionOverwriteBackup), factory=list
|
|
)
|
|
parent_id: Optional[int] = fields.IntegerField(default=None)
|
|
rtc_region: Optional[str] = fields.StringField(default=None)
|
|
video_quality_mode: Optional[int] = fields.IntegerField(default=None)
|
|
default_auto_archive_duration: Optional[int] = fields.IntegerField(default=None)
|
|
webhooks: List[WebhookBackup] = fields.ListField(
|
|
fields.EmbeddedField(WebhookBackup), factory=list
|
|
)
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class RoleBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
name: str = fields.StringField()
|
|
permissions: int = fields.IntegerField()
|
|
color: str = fields.StringField()
|
|
hoist: bool = fields.BooleanField()
|
|
mentionable: bool = fields.BooleanField()
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class EmojiBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
name: str = fields.StringField()
|
|
image: Image = fields.ReferenceField(Image)
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class StickerBackup(EmbeddedDocument):
|
|
id: int = fields.IntegerField()
|
|
name: str = fields.StringField()
|
|
format_type: int = fields.IntegerField()
|
|
tags: str = fields.StringField()
|
|
type: int = fields.IntegerField()
|
|
image: Image = fields.ReferenceField(Image)
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class GuildBackup(EmbeddedDocument):
|
|
name: str = fields.StringField(required=True)
|
|
description: str = fields.StringField(default=None)
|
|
default_message_notifications: Optional[int] = fields.IntegerField(default=None)
|
|
explicit_content_filter: Optional[int] = fields.IntegerField(default=None)
|
|
afk_channel: Optional[int] = fields.IntegerField(default=None)
|
|
afk_timeout: Optional[int] = fields.IntegerField(default=None)
|
|
icon: Optional[Image] = fields.ReferenceField(Image, default=None)
|
|
owner: int = fields.IntegerField(required=True)
|
|
splash: Optional[Image] = fields.ReferenceField(Image, default=None)
|
|
discovery_splash: Optional[Image] = fields.ReferenceField(Image, default=None)
|
|
banner: Optional[Image] = fields.ReferenceField(Image, default=None)
|
|
system_channel: Optional[int] = fields.IntegerField(default=None)
|
|
system_channel_flags: Optional[int] = fields.IntegerField(default=None)
|
|
rules_channel: Optional[int] = fields.IntegerField(default=None)
|
|
public_updates_channel: Optional[int] = fields.IntegerField(default=None)
|
|
preferred_locale: Optional[str] = fields.StringField(default=None)
|
|
features: List[str] = fields.ListField(fields.StringField, factory=list)
|
|
channels: List[ChannelBackup] = fields.ListField(
|
|
fields.EmbeddedField(ChannelBackup), factory=list
|
|
)
|
|
roles: List[RoleBackup] = fields.ListField(fields.EmbeddedField(RoleBackup), factory=list)
|
|
emojis: List[EmojiBackup] = fields.ListField(fields.EmbeddedField(EmojiBackup), factory=list)
|
|
stickers: List[StickerBackup] = fields.ListField(
|
|
fields.EmbeddedField(StickerBackup), factory=list
|
|
)
|
|
|
|
|
|
@JARVIS_INST.register
|
|
class Backup(Document):
|
|
created_at: datetime = fields.AwareDateTimeField(default=get_now)
|
|
guild_id: int = fields.IntegerField()
|
|
bkid: str = fields.StringField(default=get_id)
|
|
guild: GuildBackup = fields.EmbeddedField(GuildBackup, required=True)
|
|
version: str = fields.StringField(default=__version__)
|