<?php
/** @license MIT
 * Copyright 2017 J. King, Dustin Wilson et al.
 * See LICENSE and AUTHORS files for details */

declare(strict_types=1);
namespace JKingWeb\Arsse\Db\SQLite3;

use JKingWeb\Arsse\Db\Exception;
use JKingWeb\Arsse\Db\ExceptionInput;
use JKingWeb\Arsse\Db\ExceptionTimeout;

trait ExceptionBuilder {
    public function exceptionBuild(): array {
        switch ($this->db->lastErrorCode()) {
            case self::SQLITE_BUSY:
                return [ExceptionTimeout::class, 'general', $this->db->lastErrorMsg()];
            case self::SQLITE_CONSTRAINT:
                return [ExceptionInput::class, 'engineConstraintViolation', $this->db->lastErrorMsg()];
            case self::SQLITE_MISMATCH:
                return [ExceptionInput::class, 'engineTypeViolation', $this->db->lastErrorMsg()];
            default:
                return [Exception::class, 'engineErrorGeneral', $this->db->lastErrorMsg()];
        }
    }
}