mirror of
				https://git.collinwebdesigns.de/oscar.krause/fastapi-dls.git
				synced 2025-11-04 06:50:22 +01:00 
			
		
		
		
	created endpoints to delete origins and to delete a lease
This commit is contained in:
		@@ -33,6 +33,10 @@ List registered origins.
 | 
			
		||||
|-----------------|---------|--------------------------------------|
 | 
			
		||||
| `leases`        | `false` | Include referenced leases per origin |
 | 
			
		||||
 | 
			
		||||
### `DELETE /-/origins`
 | 
			
		||||
 | 
			
		||||
Deletes all origins and their leases.
 | 
			
		||||
 | 
			
		||||
### `GET /-/leases?origin=false`
 | 
			
		||||
 | 
			
		||||
List current leases.
 | 
			
		||||
@@ -41,6 +45,10 @@ List current leases.
 | 
			
		||||
|-----------------|---------|-------------------------------------|
 | 
			
		||||
| `origin`        | `false` | Include referenced origin per lease |
 | 
			
		||||
 | 
			
		||||
### `DELETE /-/lease/{lease_ref}`
 | 
			
		||||
 | 
			
		||||
Deletes an lease.
 | 
			
		||||
 | 
			
		||||
### `GET /client-token`
 | 
			
		||||
 | 
			
		||||
Generate client token, (see [installation](#installation)).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								app/main.py
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								app/main.py
									
									
									
									
									
								
							@@ -15,7 +15,7 @@ from calendar import timegm
 | 
			
		||||
from jose import jws, jwk, jwt
 | 
			
		||||
from jose.constants import ALGORITHMS
 | 
			
		||||
from starlette.middleware.cors import CORSMiddleware
 | 
			
		||||
from starlette.responses import StreamingResponse, JSONResponse, HTMLResponse
 | 
			
		||||
from starlette.responses import StreamingResponse, JSONResponse, HTMLResponse, Response
 | 
			
		||||
from sqlalchemy import create_engine
 | 
			
		||||
from sqlalchemy.orm import sessionmaker
 | 
			
		||||
 | 
			
		||||
@@ -88,6 +88,12 @@ async def _origins(request: Request, leases: bool = False):
 | 
			
		||||
    return JSONResponse(response)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.delete('/-/origins')
 | 
			
		||||
async def _origins_delete(request: Request):
 | 
			
		||||
    Origin.delete(db)
 | 
			
		||||
    return Response(status_code=201)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.get('/-/leases')
 | 
			
		||||
async def _leases(request: Request, origin: bool = False):
 | 
			
		||||
    session = sessionmaker(bind=db)()
 | 
			
		||||
@@ -102,6 +108,13 @@ async def _leases(request: Request, origin: bool = False):
 | 
			
		||||
    return JSONResponse(response)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.delete('/-/lease/{lease_ref}')
 | 
			
		||||
async def _lease_delete(request: Request, lease_ref: str):
 | 
			
		||||
    if Lease.delete(db, lease_ref) == 1:
 | 
			
		||||
        return Response(status_code=201)
 | 
			
		||||
    raise HTTPException(status_code=404, detail='lease not found')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# venv/lib/python3.9/site-packages/nls_core_service_instance/service_instance_token_manager.py
 | 
			
		||||
@app.get('/client-token')
 | 
			
		||||
async def client_token():
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								app/orm.py
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								app/orm.py
									
									
									
									
									
								
							@@ -54,13 +54,24 @@ class Origin(Base):
 | 
			
		||||
        session.flush()
 | 
			
		||||
        session.close()
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete(engine: Engine, origins: ["Origin"] = None) -> int:
 | 
			
		||||
        session = sessionmaker(bind=engine)()
 | 
			
		||||
        if origins is None:
 | 
			
		||||
            deletions = session.query(Origin).delete()
 | 
			
		||||
        else:
 | 
			
		||||
            deletions = session.query(Origin).filter(Origin.origin_ref in origins).delete()
 | 
			
		||||
        session.commit()
 | 
			
		||||
        session.close()
 | 
			
		||||
        return deletions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Lease(Base):
 | 
			
		||||
    __tablename__ = "lease"
 | 
			
		||||
 | 
			
		||||
    lease_ref = Column(CHAR(length=36), primary_key=True, nullable=False, index=True)  # uuid4
 | 
			
		||||
 | 
			
		||||
    origin_ref = Column(CHAR(length=36), ForeignKey(Origin.origin_ref), nullable=False, index=True)  # uuid4
 | 
			
		||||
    origin_ref = Column(CHAR(length=36), ForeignKey(Origin.origin_ref, ondelete='CASCADE'), nullable=False, index=True)  # uuid4
 | 
			
		||||
    lease_created = Column(DATETIME(), nullable=False)
 | 
			
		||||
    lease_expires = Column(DATETIME(), nullable=False)
 | 
			
		||||
    lease_updated = Column(DATETIME(), nullable=False)
 | 
			
		||||
@@ -127,6 +138,14 @@ class Lease(Base):
 | 
			
		||||
        session.close()
 | 
			
		||||
        return deletions
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete(engine: Engine, lease_ref: str) -> int:
 | 
			
		||||
        session = sessionmaker(bind=engine)()
 | 
			
		||||
        deletions = session.query(Lease).filter(Lease.lease_ref == lease_ref).delete()
 | 
			
		||||
        session.commit()
 | 
			
		||||
        session.close()
 | 
			
		||||
        return deletions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def init(engine: Engine):
 | 
			
		||||
    tables = [Origin, Lease]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user