This repository was archived by the owner on Feb 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrud.py
More file actions
93 lines (63 loc) · 2.29 KB
/
crud.py
File metadata and controls
93 lines (63 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from sqlalchemy import select
from sqlalchemy.orm import Session
from uuid import UUID
import models
import schemas
def unpack_project(db: Session, project: schemas.ProjectIn, user: schemas.User = None):
users = project.users
if user:
users.append(user.id)
users = db.query(models.User).filter(models.User.id.in_(users)).all()
return {**project.dict(exclude_unset=True), "users": users}
def list_all_projects(db: Session):
return db.query(models.Project).all()
def get_project(db: Session, uuid: UUID):
return db.query(models.Project).filter_by(id = uuid).one_or_none()
def create_project(db: Session, project: schemas.ProjectIn, user: schemas.User = None):
db_project = models.Project(**unpack_project(db, project, user))
db.add(db_project)
db.commit()
db.refresh(db_project)
return db_project
def update_project(db: Session, uuid: UUID, project: schemas.ProjectIn):
db_project = get_project(db, uuid)
if db_project is None:
return None
project_data = unpack_project(db, project)
for key, value in project_data.items():
setattr(db_project, key, value)
db.commit()
db.refresh(db_project)
return db_project
def delete_project(db: Session, uuid: UUID):
if db_project := get_project(db, uuid):
db.delete(db_project)
db.commit()
return True
return False
def list_all_users(db: Session):
return db.query(models.User).all()
def create_user(db: Session, user: schemas.UserInternal):
db_user = models.User(**user.dict())
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
def get_user_by_token(db: Session, token: UUID):
token = db.query(models.LoginToken).filter_by(id = token).one_or_none()
return token.user if token else None
def get_user_by_subject(db: Session, subject: str):
return db.query(models.User).filter_by(google_subject = subject).one_or_none()
def create_token(db: Session, user_id: UUID):
token = models.LoginToken(user_id = user_id)
db.add(token)
db.commit()
db.refresh(token)
return token.id
def delete_token(db: Session, token: UUID):
token = db.query(models.LoginToken).filter_by(id = token).one_or_none()
if token:
db.delete(token)
db.commit()
return True
return False