main.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from enum import Enum
  2. from typing import Optional
  3. from pydantic import BaseModel
  4. from fastapi import FastAPI, Query
  5. import dataset,json
  6. app = FastAPI()
  7. db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/cmm_test?charset=utf8mb4')
  8. class Tag(BaseModel):
  9. id: int
  10. name: str
  11. @app.get("/tags")
  12. async def get_tags():
  13. statement = 'SELECT id,name FROM tag_table'
  14. tags = []
  15. for row in db.query(statement):
  16. tags.append({'id':row['id'],'name':row['name']})
  17. return tags
  18. @app.post("/tags")
  19. async def create_tags(tag:Tag):
  20. tag_table = db['tag_table']
  21. pk = tag_table.insert({'name':tag.name})
  22. tag.id = pk
  23. return tag
  24. @app.delete("/tags/{tag_id}")
  25. async def delete_tags(tag_id:int):
  26. sqls = 'DELETE FROM tag_table WHERE id = '+str(tag_id)
  27. db.query(sqls)
  28. sqls = 'DELETE FROM course_tag WHERE tag_id = '+str(tag_id)
  29. db.query(sqls)
  30. return result
  31. @app.put("/tags/{tag_id}")
  32. async def update_tags(tag_id,tag:Tag):
  33. sqls = 'UPDATE tag_table\
  34. SET name="'+tag.name+'"\
  35. WHERE id='+tag_id+';'
  36. db.query(sqls)
  37. tag.id=tag_id
  38. return tag
  39. @app.get("/tags/{tag_id}")
  40. async def get_tags(tag_id):
  41. statement = 'SELECT id,name FROM tag_table where id = '+tag_id
  42. for row in db.query(statement):
  43. result = {'id':row['id'],'name':row['name']}
  44. return result
  45. @app.get("/courses")
  46. async def get_courses(tag_string):
  47. courses = []
  48. statement = 'SELECT course_id from course_tag where tag_id IN'+tag_string
  49. course_id_string = '('
  50. for row in db.query(statement):
  51. course_id_string = course_id_string + str(row['course_id'])+","
  52. course_id_string=course_id_string[:-1]
  53. course_id_string = course_id_string+')'
  54. statement = 'SELECT id,name from course_table where id IN'+course_id_string
  55. for row in db.query(statement):
  56. courses.append({'id':row['id'],'name':row['name']})
  57. return courses