diff --git a/src/announcements/crud.py b/src/announcements/crud.py new file mode 100644 index 0000000..167410a --- /dev/null +++ b/src/announcements/crud.py @@ -0,0 +1,21 @@ +import logging +from datetime import datetime + +import sqlalchemy + +# from sqlalchemy import func +import database + +# from announcements.models import Announcements + + +async def create_new_entry( + db_session: database.DBSession, + title: str, + content: str, + computing_id: str, + date_created: datetime, +): + """To create a new announcement entry""" + + # TODO: Implement the logic to create a new announcement entry in the database diff --git a/src/announcements/tables.py b/src/announcements/tables.py new file mode 100644 index 0000000..5d4b726 --- /dev/null +++ b/src/announcements/tables.py @@ -0,0 +1,19 @@ +from sqlalchemy import DATETIME, INTEGER, VARCHAR, Column, ForeignKey + +from constants import COMPUTING_ID_LEN +from database import Base +from officers import tables + + +class Announcement(Base): + __tablename__ = "announcements" + + aid = Column(INTEGER, primary_key=True, autoincrement=True) + title = Column(VARCHAR(128), nullable=False) + content = Column(VARCHAR(256), nullable=False) + date_created = Column(DATETIME(timezone=True), nullable=False) + computing_id = Column( + VARCHAR(COMPUTING_ID_LEN), + ForeignKey("officer_info.computing_id"), + nullable=False, + ) diff --git a/src/announcements/url.py b/src/announcements/url.py new file mode 100644 index 0000000..980909e --- /dev/null +++ b/src/announcements/url.py @@ -0,0 +1,23 @@ +import logging + +from fastapi import APIRouter, HTTPException, Request, status +from fastapi.responses import JSONResponse + +import announcements.crud +import auth +import database +from permission.types import OfficerPrivateInfo + +_logger = logging.getLogger(__name__) + +router = APIRouter( + prefix="/announcements", + tags=["announcements"], +) + +@router.get("", + response_class=JSONResponse, + status_code=status.HTTP_200_OK, +) +async def get_announcements(request: Request): + return {"message": "This is the announcements endpoint."}