Skip to content

Commit

Permalink
feat(server): add get asset by id endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
smart7even committed Aug 30, 2024
1 parent fbee7f4 commit 49b767d
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 0 deletions.
11 changes: 11 additions & 0 deletions core/models/asset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import sqlalchemy
from sqlalchemy import Column, Text

from db import Base


class Asset(Base):
__tablename__ = 'asset'

id = Column("id", Text, primary_key=True)
content = Column("content", sqlalchemy.JSON)
10 changes: 10 additions & 0 deletions core/repositories/asset_repository.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from core.models.asset import Asset
from db import Session


class AssetRepository:
def __init__(self, session: Session) -> None:
self.session = session

def get_by_id(self, asset_id: str) -> Asset:
return self.session.query(Asset).filter_by(id=asset_id).first()
3 changes: 3 additions & 0 deletions db.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

connect_url = os.getenv("DATABASE_URL")

if connect_url is None:
raise ValueError("DATABASE_URL environment variable not set")

engine = create_engine(connect_url, echo=True)
Base.metadata.create_all(bind=engine)

Expand Down
28 changes: 28 additions & 0 deletions migrations/versions/c1221a71b614_create_asset_table.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""create asset table
Revision ID: c1221a71b614
Revises: 79c9b1a9b39d
Create Date: 2024-08-30 23:43:13.031430
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'c1221a71b614'
down_revision = '79c9b1a9b39d'
branch_labels = None
depends_on = None


def upgrade():
op.create_table(
'asset',
sa.Column('id', sa.Text, primary_key=True),
sa.Column('content', sa.JSON),
)


def downgrade():
op.drop_table('asset')
11 changes: 11 additions & 0 deletions server.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from fastapi import FastAPI

from core.repositories.asset_repository import AssetRepository
from core.repositories.faculty_repository import FacultyRepository
from core.repositories.group_repository import GroupRepository
from core.request import unecon_request
Expand Down Expand Up @@ -131,6 +132,15 @@ async def get_next_lessons(group_id: int, after_date: Optional[str] = None):
'lessons': []
}

@app.get("/asset/{asset_id}")
async def get_asset(asset_id: str):
session = Session()

asset_repository = AssetRepository(session)

asset = asset_repository.get_by_id(asset_id)

return asset

@app.get("/hello/{name}")
async def say_hello(name: str):
Expand Down Expand Up @@ -172,3 +182,4 @@ def lessons_to_dict(lessons: list[Lesson]) -> list[dict]:
dict_lessons.append(dict_lesson)

return dict_lessons

0 comments on commit 49b767d

Please sign in to comment.