cowegis/cowegis-core
Core package for Cowegis applications, providing shared Laravel/PHP foundations, common utilities, and base components used across the Cowegis ecosystem. Intended as an internal dependency for Cowegis services and apps.
Installation
composer require cowegis/cowegis-core
Ensure cowegis/cowegis-core is added to providers in config/app.php:
Cowegis\Core\CowegisServiceProvider::class,
Publish Config
php artisan vendor:publish --provider="Cowegis\Core\CowegisServiceProvider" --tag="config"
Review config/cowegis.php for core settings (e.g., API endpoints, default drivers).
First Use Case: Basic Query Inject the facade or service into a controller/console command:
use Cowegis\Facades\Cowegis;
public function search()
{
$results = Cowegis::query('search_term')->limit(10)->get();
return response()->json($results);
}
Documentation
Check for README.md or docs/ folder in the package. If sparse, inspect:
src/Cowegis/ for core classes.tests/ for usage examples.Querying Data Chain methods for flexibility:
$results = Cowegis::query('term')
->filter(['category' => 'tech'])
->sortBy('relevance')
->limit(5)
->get();
Driver Abstraction
Switch implementations via config (config/cowegis.php):
'driver' => env('COWEGIS_DRIVER', 'local'), // e.g., 'local', 'remote_api', 'database'
Extend drivers by implementing Cowegis\Core\Contracts\DriverInterface.
Event Listeners Listen for query events (if supported):
Cowegis::listen(function ($query) {
Log::info('Query executed:', $query->toArray());
});
Caching Responses Leverage Laravel’s cache or package-specific caching:
$cachedResults = Cowegis::remember('search_term', 3600)->get();
Route::middleware('cowegis.throttle') for rate-limiting.dispatch(new CowegisQueryJob('term', $userId));
Blade::directive('cowegis', function ($term) {
return "<?php echo Cowegis::quickSearch($term); ?>";
});
Driver Mismatches
config/cowegis.php) matches your environment (e.g., local vs. remote_api).Rate Limiting
Cowegis::setRateLimiter(new \Cowegis\Core\RateLimiters\ExponentialBackoff());
Data Sanitization
$term = Cowegis::sanitize('user_input');
Deprecated Methods
@deprecated tags in the codebase. Example:
// Avoid:
Cowegis::oldMethod(); // Deprecated since v1.2
// Use:
Cowegis::newMethod();
COWEGIS_DEBUG=true in .env to log queries and errors to storage/logs/cowegis.log.Cowegis::enableQueryLogging() to inspect raw queries in Tinker:
php artisan tinker
Cowegis::query('test')->dump();
Custom Drivers
Implement DriverInterface and bind in CowegisServiceProvider:
$this->app->bind(
\Cowegis\Core\Contracts\DriverInterface::class,
\App\Services\CustomCowegisDriver::class
);
Query Macros Extend the query builder:
Cowegis::macro('customMethod', function ($param) {
return $this->filter(['custom' => $param]);
});
Middleware Add custom logic to all queries:
Cowegis::extend(function ($query) {
$query->setUserId(auth()->id());
});
Testing Mock drivers in tests:
$this->app->instance(
\Cowegis\Core\Contracts\DriverInterface::class,
MockDriver::class
);
How can I help you explore Laravel packages today?