Skip to content

Commit a615fde

Browse files
committed
Cleaning up the code and creating the endpoint list of available files.
1 parent 7958907 commit a615fde

File tree

3 files changed

+37
-40
lines changed

3 files changed

+37
-40
lines changed

digitalseapi/app/domain/upload_file.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def _save_file_to_server(uploaded_file, path=".", save_as="default"):
1313
return temp_file
1414

1515

16+
1617
def upload_to_minio(minio_client: Minio, file_path, bucket_name, object_name):
1718
# Upload file to MinIO
1819
with open(file_path, 'rb') as file_data:

digitalseapi/app/infra/db.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from sqlmodel import create_engine, SQLModel, Session
2+
3+
DATABASE_URL = "postgresql://postgres:postgres@postgres/digitalsedb"
4+
5+
engine = create_engine(DATABASE_URL, echo=True)
6+
7+
8+
def init_db():
9+
SQLModel.metadata.create_all(engine)
10+
11+
12+
def get_session():
13+
with Session(engine) as session:
14+
yield session

digitalseapi/app/main.py

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
1-
from fastapi import FastAPI, UploadFile, File, HTTPException, Form
1+
from unittest import result
2+
from fastapi import FastAPI, UploadFile, File, HTTPException, Form, Depends
23
from minio import Minio
34
import asyncpg
45
from typing import List, Optional
56
from pydantic import BaseModel
67
from fastapi.middleware.cors import CORSMiddleware
7-
from sqlmodel import SQLModel, create_engine, Session
8+
from sqlmodel import SQLModel, create_engine, Session, select
89
import os
910
from app.domain.upload_file import _save_file_to_server, upload_to_minio
1011
from app.models.file_manager import GestaoArquivos
12+
from app.infra.db import get_session, init_db
1113

14+
'''
1215
# Configurações do PostgreSQL
1316
DATABASE_URL = "postgresql://postgres:postgres@postgres/digitalsedb"
1417
1518
engine = create_engine(DATABASE_URL)
1619
# SQLModel.metadata.create_all(engine)
1720
18-
1921
def init_db():
2022
SQLModel.metadata.create_all(engine)
21-
23+
'''
2224

2325
app = FastAPI(
2426
title="DigitalSE",
@@ -64,7 +66,8 @@ def on_startup():
6466
async 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

Comments
 (0)