main.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. from enum import Enum
  2. import time
  3. from datetime import datetime
  4. from typing import Optional
  5. from pydantic import BaseModel
  6. from fastapi import FastAPI, Query, UploadFile, File
  7. import dataset,json
  8. from fastapi import FastAPI
  9. from fastapi.middleware.cors import CORSMiddleware
  10. app = FastAPI()
  11. origins = [
  12. "https://hhh.com.tw"
  13. "http://172.105.205.52",
  14. "http://172.105.205.52:8001",
  15. ]
  16. app.add_middleware(
  17. CORSMiddleware,
  18. allow_origins=origins,
  19. allow_credentials=True,
  20. allow_methods=["*"],
  21. allow_headers=["*"],
  22. )
  23. db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
  24. class deco_request(BaseModel):
  25. id: int
  26. name: str
  27. email: str
  28. phone: str
  29. class deco_request_detail(BaseModel):
  30. id: int
  31. name: str
  32. email: str
  33. phone: str
  34. #detail
  35. loc: str
  36. h_class: str
  37. type: str
  38. budget: str
  39. size: float
  40. bed_num: int
  41. liv_num: int
  42. bath_num: int
  43. style: str
  44. prefer_date: str
  45. time_stamp: str
  46. gender: str
  47. @app.get("/deco_request")
  48. async def get_req():
  49. request_table = db['deco_request']
  50. statement = 'SELECT * FROM deco_request'
  51. reqs = []
  52. for req in db.query(statement):
  53. reqs.append({'name':req['name'],'email':req['email'],'phone':req['phone'],'loc':req['loc']
  54. ,'h_class':req['h_class'],'type':req['type'],'budget':req['budget'],'size':req['size'],'bed_num':req['bed_num']
  55. ,'liv_num':req['liv_num'],'bath_num':req['bath_num'],'style':req['style'],'prefer_date':req['prefer_date'],'gender':req.gender})
  56. return reqs
  57. @app.post("/deco_request")
  58. async def create_req(req:deco_request):
  59. request_table = db['deco_request']
  60. time_stamp = datetime.fromtimestamp(time.time())
  61. time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
  62. pk = request_table.insert({'name':req.name,'email':req.email,'phone':req.phone,'time_stamp':time_stamp})
  63. req.id = pk
  64. return req
  65. @app.post("/deco_request_detail")
  66. async def create_req_detail(req:deco_request_detail):
  67. statement = 'SELECT * FROM deco_request WHERE email="'+req.email+'"'
  68. email_cnt = 0
  69. for row in db.query(statement):
  70. email_cnt = email_cnt + 1
  71. statement = 'SELECT * FROM deco_request WHERE phone="'+req.phone+'"'
  72. phone_cnt = 0
  73. for row in db.query(statement):
  74. phone_cnt = phone_cnt + 1
  75. return_code = 0
  76. #return code 0=good, 1=email duplication, 2=phone duplication, 3= both duplicate
  77. if email_cnt>0 and phone_cnt==0:
  78. return_code = 1
  79. if email_cnt==0 and phone_cnt>0:
  80. return_code = 2
  81. if email_cnt>0 and phone_cnt>0:
  82. return_code = 3
  83. if return_code ==0 :
  84. request_table = db['deco_request']
  85. time_stamp = datetime.fromtimestamp(time.time())
  86. time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
  87. req.time_stamp = time_stamp
  88. pk = request_table.insert({'name':req.name,'email':req.email,'phone':req.phone,'loc':req.loc
  89. ,'h_class':req.h_class,'type':req.type,'budget':req.budget,'size':req.size,'bed_num':req.bed_num
  90. ,'liv_num':req.liv_num,'bath_num':req.bath_num,'style':req.style,'prefer_date':req.prefer_date,'time_stamp':req.time_stamp,'gender':req.gender})
  91. req.id = pk
  92. return return_code
  93. else :
  94. return return_code