<?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;

trait SQLState {
    protected static function buildStandardException(string $code, string $msg): array {
        switch ($code) {
            case "22007":
            case "22P02":
            case "42804":
                return [ExceptionInput::class, 'engineTypeViolation', $msg];
            case "23000":
            case "23502":
            case "23505":
                return [ExceptionInput::class, "engineConstraintViolation", $msg];
            case "55P03":
            case "57014":
                return [ExceptionTimeout::class, 'general', $msg];
            default:
                return [Exception::class, "engineErrorGeneral", "SQLSTATE $code: $msg"]; // @codeCoverageIgnore
        }
    }
}