Refactor database models, add modlog models

This commit is contained in:
Zeva Rose 2022-03-08 09:07:14 -07:00
parent b895144b6a
commit b9c46c0a50
6 changed files with 149 additions and 94 deletions

View file

@ -17,3 +17,6 @@ extend-ignore =
R503, # missing explicit return at the end of function ableto return non-None value. R503, # missing explicit return at the end of function ableto return non-None value.
max-line-length=100 max-line-length=100
per-file-ignores =
jarvis_core/db/models/__init__.py:F401

View file

@ -5,6 +5,9 @@ import marshmallow as ma
from umongo import Document, fields from umongo import Document, fields
from jarvis_core.db import JARVIS_INST from jarvis_core.db import JARVIS_INST
from jarvis_core.db.models.actions import Ban, Kick, Mute, Unban, Warning
from jarvis_core.db.models.modlog import Action, Modlog, Note
from jarvis_core.db.models.twitter import TwitterAccount, TwitterFollow
class RawField(fields.BaseField, ma.fields.Raw): class RawField(fields.BaseField, ma.fields.Raw):
@ -29,20 +32,6 @@ class Autoreact(Document):
created_at = fields.DateTimeField(default=datetime.now) 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 @JARVIS_INST.register
class Config(Document): class Config(Document):
"""Config database object.""" """Config database object."""
@ -60,17 +49,6 @@ class Guess(Document):
user = fields.IntegerField(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 @JARVIS_INST.register
class Lock(Document): class Lock(Document):
"""Lock database object.""" """Lock database object."""
@ -84,19 +62,6 @@ class Lock(Document):
created_at = fields.DateTimeField(default=datetime.utcnow) 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 @JARVIS_INST.register
class Purge(Document): class Purge(Document):
"""Purge database object.""" """Purge database object."""
@ -174,58 +139,3 @@ class Starboard(Document):
guild = fields.IntegerField(required=True) guild = fields.IntegerField(required=True)
admin = fields.IntegerField(required=True) admin = fields.IntegerField(required=True)
created_at = fields.DateTimeField(default=datetime.utcnow) 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)

View file

@ -0,0 +1,70 @@
"""User action models."""
from datetime import datetime
from umongo import Document, fields
from jarvis_core.db import JARVIS_INST
@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 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 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 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)

View file

@ -0,0 +1,37 @@
"""Modlog database models."""
from datetime import datetime
from typing import List
from bson import ObjectId
from umongo import Document, EmbeddedDocument, fields
from jarvis_core.db import JARVIS_INST
@JARVIS_INST.register
class Action(EmbeddedDocument):
"""Modlog embedded action document."""
action_type: str = fields.StringField(required=True)
parent: ObjectId = fields.ObjectIdField(required=True)
@JARVIS_INST.register
class Note(EmbeddedDocument):
"""Modlog embedded note document."""
admin: int = fields.IntegerField(required=True)
content: str = fields.StrField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow)
@JARVIS_INST.register
class Modlog(Document):
"""Modlog database object."""
user: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True)
actions: List[Action] = fields.ListField(fields.EmbeddedField(Action), factory=list)
open: bool = fields.BoolField(default=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow)
notes: List[Note] = fields.ListField(fields.EmbeddedField(Note), factory=list)

View file

@ -0,0 +1,35 @@
"""Twitter database models."""
from datetime import datetime
from umongo import Document, fields
from jarvis_core.db import JARVIS_INST
@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"

View file

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "jarvis-core" name = "jarvis-core"
version = "0.5.0" version = "0.6.0"
description = "" description = ""
authors = ["Your Name <you@example.com>"] authors = ["Your Name <you@example.com>"]