Skip to content
Snippets Groups Projects
Commit b18c00d3 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#9 - call database cleaner

parent ce8985eb
Branches
Tags
No related merge requests found
...@@ -20,7 +20,17 @@ ...@@ -20,7 +20,17 @@
"owncloudUser": "myUser", "owncloudUser": "myUser",
"owncloudPassword": "", "owncloudPassword": "",
"owncloudDestinationPath": "MyFolder" "owncloudDestinationPath": "MyFolder"
},
"retentionPolicies": [
{
"resolutionInMinutes": 60,
"ageInDays": 30
},
{
"resolutionInMinutes": 3600,
"ageInDays": 60
} }
]
}, },
"api": { "api": {
"url": "http://localhost:10003", "url": "http://localhost:10003",
......
import logging
from dataclasses import dataclass
from typing import List
from sqlalchemy.orm import Session
from logic import Constants
LOGGER = logging.getLogger(Constants.APP_NAME)
@dataclass
class RetentionPolicy:
resolutionInMinutes: int
ageInDays: int
class DatabaseCleaner:
def __init__(self, retentionPolicies: List[RetentionPolicy]):
self._policies = retentionPolicies
def clean(self, db: Session):
LOGGER.info('Performing database cleanup...')
for policy in self._policies:
LOGGER.debug(f'Enforcing retention policy: {policy}')
LOGGER.info('Database cleanup done')
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from Settings import VERSION from Settings import VERSION, SETTINGS
from logic.Dependencies import get_database from logic.Dependencies import get_database
from logic.database import Schemas, DatabaseInfoProvider from logic.database import Schemas, DatabaseInfoProvider
from logic.database.DatabaseCleaner import DatabaseCleaner, RetentionPolicy
router = APIRouter( router = APIRouter(
prefix='/general', prefix='/general',
...@@ -31,7 +32,12 @@ async def databaseInfo(db: Session = Depends(get_database)): ...@@ -31,7 +32,12 @@ async def databaseInfo(db: Session = Depends(get_database)):
async def databaseCleanup(db: Session = Depends(get_database)): async def databaseCleanup(db: Session = Depends(get_database)):
infoBefore = DatabaseInfoProvider.get_database_info(db) infoBefore = DatabaseInfoProvider.get_database_info(db)
# TODO retentionPolicies = SETTINGS['database']['retentionPolicies']
policies = []
for item in retentionPolicies:
policies.append(RetentionPolicy(resolutionInMinutes=item['resolutionInMinutes'], ageInDays=item['ageInDays']))
DatabaseCleaner(policies).clean(db)
infoAfter = DatabaseInfoProvider.get_database_info(db) infoAfter = DatabaseInfoProvider.get_database_info(db)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment