Refactor database models, add modlog models
This commit is contained in:
parent
b895144b6a
commit
b9c46c0a50
6 changed files with 149 additions and 94 deletions
3
.flake8
3
.flake8
|
@ -17,3 +17,6 @@ extend-ignore =
|
|||
R503, # missing explicit return at the end of function ableto return non-None value.
|
||||
|
||||
max-line-length=100
|
||||
|
||||
per-file-ignores =
|
||||
jarvis_core/db/models/__init__.py:F401
|
||||
|
|
|
@ -5,6 +5,9 @@ import marshmallow as ma
|
|||
from umongo import Document, fields
|
||||
|
||||
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):
|
||||
|
@ -29,20 +32,6 @@ class Autoreact(Document):
|
|||
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."""
|
||||
|
@ -60,17 +49,6 @@ class Guess(Document):
|
|||
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."""
|
||||
|
@ -84,19 +62,6 @@ class Lock(Document):
|
|||
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."""
|
||||
|
@ -174,58 +139,3 @@ class Starboard(Document):
|
|||
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)
|
70
jarvis_core/db/models/actions.py
Normal file
70
jarvis_core/db/models/actions.py
Normal 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)
|
37
jarvis_core/db/models/modlog.py
Normal file
37
jarvis_core/db/models/modlog.py
Normal 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)
|
35
jarvis_core/db/models/twitter.py
Normal file
35
jarvis_core/db/models/twitter.py
Normal 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"
|
|
@ -1,6 +1,6 @@
|
|||
[tool.poetry]
|
||||
name = "jarvis-core"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
description = ""
|
||||
authors = ["Your Name <you@example.com>"]
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue