public static function delete($terms = null)
    {
        $self = static::newSelf($terms);

        if (!empty($self->attributes) && null === $terms) {
            $terms = $self->attributes[$self->primary()];
        }

        if (empty($terms)) {
            throw new \LogicException('Could not delete empty data');
        }

        if ($self->softDeletes) {
            return $self->patch([self::DELETED => $self->freshDate()], $terms);
        }

        if (!$self->table()) {
            return false;
        }

        $query = $self->remove();

        $self->normalizeTerms($query, $terms);

        return $query->execute();
    }