-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
82 lines (66 loc) · 2.51 KB
/
main.py
File metadata and controls
82 lines (66 loc) · 2.51 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
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.routers import (comprador, destino, origen, patio, entidad, producto,
conductor, vehiculo, trailer, usuario, registro, transportadora,
factura, medida, proceso, autenticacion, historial)
from app.config.database import engine # Importar el engine donde está configurada la base de datos
from sqlmodel import SQLModel
from apscheduler.schedulers.background import BackgroundScheduler
from sqlmodel import Session, select
from app.models.historial.modelo_historial import Historial
from datetime import datetime, timedelta
#Instancias
app = FastAPI(
title="API Sistema Ocean SYT",
version="1.0.0",
)
scheduler = BackgroundScheduler()
#SQLModel.metadata.create_all(engine)
# Configuracion de funcion para la eliminacion de datos en la tabla historial
def eliminar_registros_viejos():
with Session(engine) as session:
limite = datetime.utcnow() - timedelta(days=7)
historial = session.exec(select(Historial).where(Historial.his_fecha < limite)).all()
for h in historial:
session.delete(h)
session.commit()
print(f"✅ Se eliminaron {len(historial)} registros.")
@app.on_event("startup")
def startup():
# Configuración del job para que se ejecute el 30 de cada mes a las 00:00
scheduler.add_job(
eliminar_registros_viejos,
trigger='cron',
day=30,
hour=0,
minute=0
)
scheduler.start()
# Configuración de CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*", "null"],
allow_credentials=True,
allow_methods=["*"], # Permitir todos los métodos (GET, POST, PUT, DELETE, etc.)
allow_headers=["*"], # Permitir todos los encabezados
expose_headers=["Content-Disposition"] #Exponer encabezados específicos
)
# Rutas
app.include_router(comprador.router)
app.include_router(destino.router)
app.include_router(origen.router)
app.include_router(patio.router)
app.include_router(entidad.router)
app.include_router(producto.router)
app.include_router(medida.router)
app.include_router(proceso.router)
app.include_router(conductor.router)
app.include_router(vehiculo.router)
app.include_router(trailer.router)
app.include_router(registro.router)
app.include_router(transportadora.router)
app.include_router(factura.router)
app.include_router(historial.router)
#app.include_router(bascula.router)
app.include_router(usuario.router)
app.include_router(autenticacion.router)