import time
from threading import Thread
from typing import List

from fpakman.util.cache import Cache


class CacheCleaner(Thread):

    def __init__(self, caches: List[Cache], check_interval: int = 15):
        super(CacheCleaner, self).__init__(daemon=True)
        self.caches = [c for c in caches if c.is_enabled()]
        self.check_interval = check_interval

    def run(self):

        if self.caches:
            while True:
                for cache in self.caches:
                    cache.clean_expired()

                time.sleep(self.check_interval)

