from models.vulnerability import Vulnerability

class VulnerabilityIntelligence:
    def __init__(self, id: str):
        self.id = id
        self.titles = []
        self.descriptions = []
        self.urls = []
        self.reference_urls = set()
        self.base_scores = []
        self.severities = []
        self.vulnerable_components = set()
        self.tags = set() 
        self.dates = []
        self.weaknesses = set()
        self.patched_versions = set()

    def add_vulnerability(self, vulnerability: Vulnerability):
        self.titles.append({"source": vulnerability.source, "text": vulnerability.title, "date": vulnerability.date})
        self.urls.append({"source": vulnerability.source, "url": vulnerability.url, "date": vulnerability.date})
        self.descriptions.append({"source": vulnerability.source, "text": vulnerability.description, "date": vulnerability.date})
        self.reference_urls.update(vulnerability.reference_urls)
        self.base_scores.append({"source": vulnerability.source, "score": vulnerability.base_score, "date": vulnerability.date})
        self.severities.append({"source": vulnerability.source, "severity": vulnerability.base_severity, "date": vulnerability.date})
        self.vulnerable_components.update(vulnerability.vulnerable_components)
        self.tags.update(vulnerability.tags)
        self.dates.append({"source": vulnerability.source, "date": vulnerability.date})
        self.weaknesses.update(vulnerability.weaknesses)
        self.patched_versions.update([vulnerability.patched_versions])
