1- from fastapi import FastAPI , UploadFile , File , HTTPException , Form
1+ from unittest import result
2+ from fastapi import FastAPI , UploadFile , File , HTTPException , Form , Depends
23from minio import Minio
34import asyncpg
45from typing import List , Optional
56from pydantic import BaseModel
67from fastapi .middleware .cors import CORSMiddleware
7- from sqlmodel import SQLModel , create_engine , Session
8+ from sqlmodel import SQLModel , create_engine , Session , select
89import os
910from app .domain .upload_file import _save_file_to_server , upload_to_minio
1011from app .models .file_manager import GestaoArquivos
12+ from app .infra .db import get_session , init_db
1113
14+ '''
1215# Configurações do PostgreSQL
1316DATABASE_URL = "postgresql://postgres:postgres@postgres/digitalsedb"
1417
1518engine = create_engine(DATABASE_URL)
1619# SQLModel.metadata.create_all(engine)
1720
18-
1921def init_db():
2022 SQLModel.metadata.create_all(engine)
21-
23+ '''
2224
2325app = FastAPI (
2426 title = "DigitalSE" ,
@@ -64,7 +66,8 @@ def on_startup():
6466async def upload_image (* , input_images : List [UploadFile ] = File (...),
6567 title : Optional [str ],
6668 description : Optional [str ],
67- owner : Optional [str ]):
69+ owner : Optional [str ],
70+ session : Session = Depends (get_session )):
6871 try :
6972 # Salva a imagem no Minio
7073 bucket_name = "images"
@@ -87,46 +90,25 @@ async def upload_image(*, input_images: List[UploadFile] = File(...),
8790
8891 arquivo_db = GestaoArquivos (titulo = title , descricao = description ,
8992 responsavel = owner , localizacao = image_name )
90- with Session (engine ) as session :
91- session .add (arquivo_db )
92- session .commit ()
93- session .refresh (arquivo_db )
94- print (arquivo_db )
93+ session .add (arquivo_db )
94+ session .commit ()
95+ session .refresh (arquivo_db )
96+ print (arquivo_db )
9597 return {"message" : "Upload successful" }
9698 except Exception as err :
9799 raise HTTPException (status_code = 500 , detail = f"Error: { err } " )
98100
99101# Endpoint para listar as imagens
100- @app .get ("/images/" , response_model = List [Image ])
101- async def list_images ():
102+ @app .get ("/images/" , response_model = List [GestaoArquivos ])
103+ async def list_images (session : Session = Depends ( get_session ) ):
102104 try :
103105 # Consulta o PostgreSQL para obter os caminhos das imagens
104- conn = await connect_db ()
105- rows = await conn .fetch ("SELECT id, path FROM images" )
106- await conn .close ()
107-
108- return [{"id" : row ['id' ], "path" : row ['path' ]} for row in rows ]
109- except asyncpg .exceptions .PostgresError as err :
110- raise HTTPException (status_code = 500 , detail = f"PostgreSQL error: { err } " )
111-
112- # Endpoint para exibir uma imagem
113- @app .get ("/images/{image_id}/" )
114- async def get_image (image_id : int ):
115- try :
116- # Consulta o PostgreSQL para obter o caminho da imagem
117- conn = await connect_db ()
118- row = await conn .fetchrow ("SELECT path FROM images WHERE id = $1" , image_id )
119- await conn .close ()
120-
121- if not row :
122- raise HTTPException (status_code = 404 , detail = "Image not found" )
123-
124- image_path = row ['path' ]
125-
126- # Obtém a imagem do Minio
127- image_stream = minio_client .get_object ("images" , image_path )
128- image_data = image_stream .read ()
129-
130- return {"image" : image_data }
106+ result = session .execute (select (GestaoArquivos ))
107+ arquivos = result .scalars ().all ()
108+ return [GestaoArquivos (id = arquivo .id ,
109+ titulo = arquivo .titulo ,
110+ descricao = arquivo .descricao ,
111+ responsavel = arquivo .responsavel ,
112+ localizacao = arquivo .localizacao ) for arquivo in arquivos ]
131113 except Exception as err :
132- raise HTTPException (status_code = 500 , detail = f"Error : { err } " )
114+ raise HTTPException (status_code = 500 , detail = f"PostgreSQL error : { err } " )
0 commit comments