WildOjisan commited on
Commit
1ae1fba
·
1 Parent(s): 5fb73b9
Files changed (1) hide show
  1. routers/user_router.py +61 -2
routers/user_router.py CHANGED
@@ -1,5 +1,6 @@
1
  from fastapi import APIRouter, Form, File, UploadFile
2
  from utils.common import CommonResponse
 
3
 
4
  router = APIRouter(
5
  prefix="/user",
@@ -11,9 +12,67 @@ def login_register(provider: str = Form(""), firebase_uid: str = Form(""),
11
  email: str = Form(""),display_name: str = Form(""),
12
  photo_url: str = Form("")):
13
  try:
14
- # business logic
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  data = {
16
-
 
 
 
 
 
 
 
 
 
 
17
  }
18
  return CommonResponse(success=True, data=data)
19
  except Exception as e:
 
1
  from fastapi import APIRouter, Form, File, UploadFile
2
  from utils.common import CommonResponse
3
+ from utils.db import get_connection
4
 
5
  router = APIRouter(
6
  prefix="/user",
 
12
  email: str = Form(""),display_name: str = Form(""),
13
  photo_url: str = Form("")):
14
  try:
15
+ if firebase_uid == "":
16
+ return CommonResponse(success=False, msg="firebase_uid is required")
17
+ if email == "":
18
+ return CommonResponse(success=False, msg="email is required")
19
+
20
+ with get_connection() as conn:
21
+ with conn.cursor() as cur:
22
+ cur.execute("""
23
+ INSERT INTO t_user (
24
+ firebase_uid,
25
+ email,
26
+ display_name,
27
+ photo_url,
28
+ provider,
29
+ last_login_at
30
+ )
31
+ VALUES (
32
+ %s,
33
+ %s,
34
+ NULLIF(%s, ''),
35
+ NULLIF(%s, ''),
36
+ COALESCE(NULLIF(%s, ''), 'google'),
37
+ CURRENT_TIMESTAMP
38
+ )
39
+ ON CONFLICT (firebase_uid)
40
+ DO UPDATE SET
41
+ email = EXCLUDED.email,
42
+ display_name = EXCLUDED.display_name,
43
+ photo_url = EXCLUDED.photo_url,
44
+ provider = EXCLUDED.provider,
45
+ last_login_at = CURRENT_TIMESTAMP,
46
+ updated_at = CURRENT_TIMESTAMP
47
+ RETURNING
48
+ id,
49
+ firebase_uid,
50
+ email,
51
+ display_name,
52
+ photo_url,
53
+ provider,
54
+ role,
55
+ status,
56
+ last_login_at,
57
+ created_at,
58
+ updated_at
59
+ """, [firebase_uid, email, display_name, photo_url, provider])
60
+
61
+ row = cur.fetchone()
62
+ conn.commit()
63
+
64
  data = {
65
+ "id": row[0],
66
+ "firebase_uid": row[1],
67
+ "email": row[2],
68
+ "display_name": row[3],
69
+ "photo_url": row[4],
70
+ "provider": row[5],
71
+ "role": row[6],
72
+ "status": row[7],
73
+ "last_login_at": row[8].isoformat() if row[8] else None,
74
+ "created_at": row[9].isoformat() if row[9] else None,
75
+ "updated_at": row[10].isoformat() if row[10] else None
76
  }
77
  return CommonResponse(success=True, data=data)
78
  except Exception as e: