-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
62 lines (50 loc) · 1.71 KB
/
main.py
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
import uvicorn
from fastapi import FastAPI, HTTPException, Depends
from fastapi.middleware.cors import CORSMiddleware
from typing import Annotated
from sqlalchemy.orm import Session
from database import get_db
from atividade_db import Atividade
from atividade_base import AtividadeBase
app = FastAPI()
origins = [
'http://localhost',
'http://localhost:3000'
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*']
)
db_dependency = Annotated[Session, Depends(get_db)]
@app.get("/")
async def buscar_atividades(db: db_dependency):
result = db.query(Atividade).order_by(Atividade.id).all()
if not result:
raise HTTPException(status_code=404, detail='Atividades não encontradas')
return result
@app.post("/")
async def atualizar_atividade(atividade: AtividadeBase, db: db_dependency):
db_atividade = Atividade(
tarefa=atividade.tarefa,
tempo=atividade.tempo,
tempoRestante=atividade.tempoRestante,
selecionado=atividade.selecionado,
completado=atividade.completado
)
atividade_anterior = db.get(Atividade, atividade.id)
if not atividade_anterior:
db.add(db_atividade)
else:
if atividade.selecionado:
db.query(Atividade).update({'selecionado': False})
atividade_anterior.tarefa = atividade.tarefa
atividade_anterior.tempo = atividade.tempo
atividade_anterior.tempoRestante = atividade.tempoRestante
atividade_anterior.selecionado = atividade.selecionado
atividade_anterior.completado = atividade.completado
db.commit()
if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8000)