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.
|
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
|
||||||
|
|
|
@ -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)
|
|
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]
|
[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>"]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue