changed message data model

This commit is contained in:
Bad_Investment
2021-05-05 21:43:23 +00:00
parent 6d4eb6f96d
commit bd90c858ec
4 changed files with 20 additions and 12 deletions

11
app.py
View File

@@ -21,7 +21,7 @@ API_SETTINGS = FastAPISettings.parse_obj(SETTINGS['fastapi'])
from poapbot.scraper import RedditScraper
from poapbot.bot import RedditBot
from poapbot.models import metadata, database, Event, Attendee, Claim, RequestMessage
from poapbot.models import metadata, database, Event, Attendee, Claim, RequestMessage, ResponseMessage
engine = sqlalchemy.create_engine(DB_SETTINGS.url)
metadata.create_all(engine)
@@ -31,10 +31,11 @@ app = FastAPI(
version=API_SETTINGS.version,
openapi_tags=API_SETTINGS.openapi_tags
)
app.include_router(CRUDRouter(schema=Event, prefix='event'))
app.include_router(CRUDRouter(schema=Attendee, prefix='attendee'))
app.include_router(CRUDRouter(schema=Claim, prefix='claim'))
app.include_router(CRUDRouter(schema=RequestMessage, prefix='request_message'))
app.include_router(CRUDRouter(schema=Event))
app.include_router(CRUDRouter(schema=Attendee))
app.include_router(CRUDRouter(schema=Claim))
app.include_router(CRUDRouter(schema=RequestMessage))
app.include_router(CRUDRouter(schema=ResponseMessage))
app.state.database = database
logging.config.fileConfig('logging.conf', disable_existing_loggers=True)

View File

@@ -5,7 +5,7 @@ from datetime import datetime
import logging
import ormar
from ..models import database, Event, Claim, Attendee, RequestMessage
from ..models import database, Event, Claim, Attendee, RequestMessage, ResponseMessage
logger = logging.getLogger(__name__)
@@ -28,14 +28,14 @@ class RedditBot:
logger.info('Received message from reddit, skipping')
return
request_message = await RequestMessage.objects.get_or_none(id=message.id)
request_message = await RequestMessage.objects.get_or_none(secondary_id=message.id)
if request_message:
logger.debug(f'Request message {request_message.id} has already been processed, skipping')
await message.mark_read()
return
else:
request_message = RequestMessage(
id=message.id,
secondary_id=message.id,
username=username,
created=message.created_utc,
subject=message.subject,
@@ -67,11 +67,16 @@ class RedditBot:
elif expired:
comment = await message.reply(f'Sorry, event {event.name} has expired')
logger.debug(f'Received request from {username} for event {event.id}, but event has expired')
else:
comment = await message.reply(f'Sorry, there are no more claims available for {event.name}')
logger.debug(f'Received request from {username} for event {event.id}, but no more claims are available')
else:
comment = await message.reply(f'Invalid event code: {code}')
logger.debug(f'Received request from {username} with invalid code {code}')
await message.mark_read()
response_message = ResponseMessage(secondary_id=comment.id, username=comment.author.name.lower(), created=comment.created_utc, body=comment.body, claim=claim)
await response_message.save()
async def run(self):
while True:
@@ -82,5 +87,5 @@ class RedditBot:
except asyncio.CancelledError:
return
except:
logging.error('Encountered error in run loop', exc_info=True)
logger.error('Encountered error in run loop', exc_info=True)
await asyncio.sleep(1)

View File

@@ -19,4 +19,4 @@ class BaseMeta(ormar.ModelMeta):
from .event import Event
from .attendee import Attendee
from .claim import Claim
from .message import RequestMessage
from .message import RequestMessage, ResponseMessage

View File

@@ -10,7 +10,8 @@ class RequestMessage(ormar.Model):
class Meta(BaseMeta):
tablename = "request_messages"
id: int = ormar.String(primary_key=True, max_length=100)
id: int = ormar.Integer(primary_key=True)
secondary_id: str = ormar.String(max_length=100)
username: str = ormar.String(max_length=100)
created: datetime = ormar.DateTime()
subject: str = ormar.String(max_length=1024, nullable=True)
@@ -21,7 +22,8 @@ class ResponseMessage(ormar.Model):
class Meta(BaseMeta):
tablename = "response_messages"
id: int = ormar.String(primary_key=True, max_length=100)
id: int = ormar.Integer(primary_key=True)
secondary_id: str = ormar.String(max_length=100)
username: str = ormar.String(max_length=100)
created: datetime = ormar.DateTime()
body: str = ormar.String(max_length=1024)