pdm = new PersistentDataManager();
        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
    }
    public function configure(): void
    {
        $this->setName('db:maintain')
            ->setDescription('Maintain database.');
    }
    public function execute(InputInterface $input, OutputInterface $output): int
    {
        try {
            $this->deleteExpiredPasswordResetters();
            $this->deleteExpiredSessions();
        } catch (\Exception $e) {
            $output->writeln('Maintenance failed!');
            $output->writeln('');
            $output->writeln((string) $e);
            $output->writeln('');
            return 1;
        }
        $output->writeln('Maintenance was successful!');
        $output->writeln('');
        return 0;
    }
    private function deleteExpiredPasswordResetters(): void
    {
        foreach ($this->userPasswordResetterRepository->getAllExpired() as $passwordResetter) {
            $this->pdm->deleteFromDb($passwordResetter);
        }
    }
    private function deleteExpiredSessions(): void
    {
        //TODO: model may be used for sessions too
        $select = new Select(\Container::$dbConnection, 'sessions');
        $select->columns(['id']);
        $select->where('updated', '<', (new DateTime('-7 days'))->format('Y-m-d H:i:s'));
        $result = $select->execute();
        while ($session = $result->fetch(IResultSet::FETCH_ASSOC)) {
            $modify = new Modify(\Container::$dbConnection, 'sessions');
            $modify->setId($session['id']);
            $modify->delete();
        }
    }
}