Bläddra i källkod

add into DB nftdrops - eventid, nftid, email; adjust collection api

CJYen 3 år sedan
förälder
incheckning
5593d25fad
2 ändrade filer med 26 tillägg och 30 borttagningar
  1. 25 30
      main.py
  2. 1 0
      models.py

+ 25 - 30
main.py

@@ -14,7 +14,9 @@ from PIL import Image
 import base64, io
 from random import randrange
 import models
+import time
 
+time = time.ctime()
 app = fastapi.FastAPI()
 
 app.add_middleware(
@@ -171,41 +173,32 @@ def message(event):
 def collection(userid):
     # db connect
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4')
-    table2 = db['nft']
     table3 = db['nftdrops']
-
+    table2 = db['nft']
+    nftdrops = {}
     nft = {}
-    nft1 = {}
+    nfts_all = {}
     i = 0
-    if table3.find_one(userid=userid) and table2.find_one(userid=userid):
-        results1 = table3.find_one(userid=userid)
-        results2 = table2.find(userid=userid)
-        nft[0] = results1
-        for row in results2:
-            nft1[i] = row
-            i += 1
-        nft[1] = nft1
-        return nft
+    if not table3.find_one(userid=userid) and not table2.find_one(userid=userid):
         db.close()
+        return "error: user don't have any nft"
 
-    elif table3.find_one(userid=userid) and not table2.find_one(userid=userid):
-        results1 = table3.find_one(userid=userid)
-        nft[0] = results1
-        return nft
-        db.close()
+    else:
+        results1 = table3.find(userid=userid)
+        for item in results1:
+            nftdrops[i] = item
+            i += 1
 
-    elif table2.find_one(userid=userid) and not table3.find_one(userid=userid):
         results2 = table2.find(userid=userid)
-        for row in results2:
-            nft1[i] = row
+        for item in results2:
+            nft[i] = item
             i += 1
-        nft[1] = nft1
-        return nft
-        db.close()
 
-    else:
+        nfts_all[0] = nftdrops
+        nfts_all[1] = nft
+        return nfts_all
         db.close()
-        print("error: user don't have any nft")
+
     db.close()
 
 # receive handler
@@ -294,18 +287,20 @@ async def nftdrops(userModel : models.NftDrops):
 
     # input對應
     userid = userModel.userid
+    email = userModel.email
+    eventid = '1'
+    nftid = '101'
 
     # 如果userid不在db, 寫入到一個空值nft
     if not table3.find_one(userid=userid):
-        sql = 'UPDATE arkcard.nftdrops SET userid="' + userid + '" WHERE userid IS NULL OR userid ="" LIMIT 1'
-        result = db.query(sql)
+        # 新增資料
+        table3.insert(dict(eventid=eventid, nftid=nftid, userid=userid, email=email, time=time))
         db.close()
-        return "「火」通行證已送出"
+        return "新增成功"
     # 如果userid存在,回傳通知
     else:
         db.close()
-        return "您已收藏過「火」通行證"
-    db.close()
+        return "已有資料"
 
 if __name__ == '__main__':
     uvicorn.run("main:app", host="0.0.0.0", port=8228, reload=True,ssl_context=('/etc/letsencrypt/live/ark.cards/fullchain.pem', '/etc/letsencrypt/live/ark.cards/privkey.pem'))

+ 1 - 0
models.py

@@ -10,6 +10,7 @@ class BuyNft(BaseModel):
 
 class NftDrops(BaseModel):
     userid: str
+    email: str
 
 class callBack(BaseModel):
     type: str