<?php
namespace Misuzu\Storage\Denylist;

use Index\Db\DbConnection;
use Misuzu\Storage\Files\FileInfo;

class DenylistContext {
    public private(set) DenylistData $list;

    public function __construct(DbConnection $dbConn) {
        $this->list = new DenylistData($dbConn);
    }

    public function denyFile(FileInfo|string $infoOrHash, DenylistReason|string $reason): void {
        if($infoOrHash instanceof FileInfo)
            $infoOrHash = $infoOrHash->hash;
        if(is_string($reason))
            $reason = DenylistReason::from($reason);

        $this->list->createDenylistEntry($infoOrHash, $reason);
    }

    public function getDenylistEntry(FileInfo|string $infoOrHash): ?DenylistInfo {
        if($infoOrHash instanceof FileInfo)
            $infoOrHash = $infoOrHash->hash;

        return $this->list->getDenylistEntry($infoOrHash);
    }
}