kouja/project-assistant

Package for installing initial files and dependencies for starting your project

0.0.5 2021-05-10 11:54 UTC

This package is auto-updated.

Last update: 2024-10-11 16:20:12 UTC


README

This Package get rid of Duplicate Work like handling json response and writing duplicated query

Installation

Package can be installed via composer

 composer require kouja/project-assistant

Features

  • Extended Model stub
  • Custom Exception
  • Custom Form Request
  • New Helper Class

Usage/Examples

Extended Model

You Can Add New Model Using Command

php artisan make:extended_model

The New Model Will Be like This

class Roynex extends BaseModel
{
    use HasFactory;

    protected $table = '';

    protected $fillable = [];

    protected $hidden = [];

    protected $dates = [];

    protected $casts = [];

}

The New Model Extend BaseModel Class

BaseModel Class For Now is only using ModelTrait

That Look like This

trait ModelTrait
{
    public function createData($data)
    {
        try{
            $createdModel = $this::create($data);

            if(empty($createdModel))
            throw new CreatingModelFailException('creating data fail');

        }catch(Exception $excption)
        {
            throw new CreatingModelFailException($excption->getMessage());
        }
       
        return $createdModel;
    }

    public function insertData($data)
    {
        try{
            $insertedData = $this->insert($data);

            if(empty($insertedData))
            throw new InsertingDataFailException('inserting data fail');

        }catch(Exception $excption)
        {
            throw new InsertingDataFailException($excption->getMessage());
        }
       
        return $insertedData;
    }

    public function updateData($filter, $newData)
    {
         try{
            $updatedDataStatus = $this::where($filter)
            ->update($newData);

            if(empty($updatedDataStatus))
            throw new UpdatingModelFailException('updating data fail');

        }catch(Exception $excption)
        {
            throw new UpdatingModelFailException($excption->getMessage());
        }
       
        return $updatedDataStatus;
    }

    public function updateOrCreateData($filter,$data)
    {
        try{
            $queryResult = $this->updateOrCreate($filter,$data);

            if(empty($queryResult))
            throw new UpdatingModelFailException('deleting data fail');
    
        }catch(Exception $excption)
        {
            throw new UpdatingModelFailException($excption->getMessage());
        }
       
        return $queryResult;
    }

    public function softDeleteData($filter)
    {
       try{
        $deletingDataStatus = $this::where($filter)
        ->delete();

        if(empty($deletingDataStatus))
        throw new DeletingModelFailException('deleting data fail');

    }catch(Exception $excption)
    {
        throw new DeletingModelFailException($excption->getMessage());
    }
   
    return $deletingDataStatus;
        
    }

    public function forceDeleteData($filter)
    {
        try{
            $deletingDataStatus = $this::where($filter)
            ->forceDelete();
    
            if(empty($deletingDataStatus))
            throw new DeletingModelFailException('deleting data fail');
    
        }catch(Exception $excption)
        {
            throw new DeletingModelFailException($excption->getMessage());
        }
       
        return $deletingDataStatus;
        
    }



}

This Query Are Duplicated in Every Model so Insted of Writing Them in Every Model We Are Using Them in This Trait