<?php

declare(strict_types=1);

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @method static static|null find(int $Id)
 * @method static static findOrFail(int $Id)
 */
abstract class AbstractModel extends Model
{
    use HasFactory;
    use SoftDeletes;

    const PrivateKey = 'Id';

    /**
     * The name of the "created at" column.
     *
     * @var string
     */
    const CREATED_AT = 'CreatedAt';

    /**
     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'DeletedAt';

    /**
     * The name of the "updated at" column.
     *
     * @var string
     */
    const UPDATED_AT = 'UpdatedAt';

    public static $snakeAttributes = false;

    /**
     * Indicates whether lazy loading will be prevented on this model.
     *
     * @var bool
     */
    public $preventsLazyLoading = true;

    /**
     * The primary key for the model.
     *
     * @var string
     */
    protected $primaryKey = self::PrivateKey;
}
