Skip to content

Commit

Permalink
start stubbing out source
Browse files Browse the repository at this point in the history
  • Loading branch information
alnutile committed May 22, 2023
1 parent 9fbf202 commit 6510de7
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 11 deletions.
83 changes: 83 additions & 0 deletions STUBS/Controllers/SourceController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

namespace App\Http\Controllers\ResponseTypes;

use App\Models\Project;
use App\Models\Source;
use App\Source\SourceTypeEnum;

class [RESOURCE_CLASS_NAME]ResponseTypeController extends BaseSourceController
{

public function create(Project $project)
{
return inertia('Sources/[RESOURCE_CLASS_NAME]/Create', [
'details' => config('larachain.sources.[RESOURCE_KEY]'),
'project' => $project,
'source' => [
'meta_data' => [
'url' => 'https://foo.com/some.pdf',
],
],
]);
}

public function edit(Project $project, Source $source)
{
return inertia('Sources/[RESOURCE_CLASS_NAME]/Edit', [
'details' => config('larachain.sources.[RESOURCE_KEY]'),
'project' => $project,
'source' => $source,
]);
}

public function store(Project $project)
{
$validated = request()->validate([
'meta_data.url' => ['required', 'url'],
'name' => ['required'],
'description' => ['nullable'],
]);

Source::create([
'project_id' => $project->id,
'name' => $validated['name'],
'description' => $validated['description'],
'type' => SourceTypeEnum::[RESOURCE_CLASS_NAME],
'order' => 1,
'meta_data' => $validated['meta_data'],
]);

request()->session()->flash('flash.banner', 'Source Created 🤘');

return to_route('projects.show', [
'project' => $project->id,
]);
}

public function update(Project $project, Source $source)
{
$validated = request()->validate([
'meta_data.url' => ['required', 'url'],
'name' => ['required'],
'description' => ['nullable'],
]);

$validated['project_id'] = $project->id;

$source->update([
'project_id' => $validated['project_id'],
'name' => $validated['name'],
'description' => $validated['description'],
'type' => SourceTypeEnum::[RESOURCE_CLASS_NAME],
'order' => 1,
'meta_data' => $validated['meta_data'],
]);

request()->session()->flash('flash.banner', 'Source Updated ✅');

return to_route('projects.show', [
'project' => $project->id,
]);
}
}
6 changes: 4 additions & 2 deletions app/Generators/BaseRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Support\Facades\File;

class BaseRepository
abstract class BaseRepository
{
public string $name;

Expand All @@ -30,6 +30,9 @@ public function setup(
return $this;
}

abstract public function run(): self;


public function getKey(): string
{
return $this->key;
Expand All @@ -45,7 +48,6 @@ public function getClassName(): string
return $this->class_name;
}

abstract public function run(): self;

public function putFile(string $pathWithName, string $content)
{
Expand Down
41 changes: 41 additions & 0 deletions app/Generators/Source/ControllerSource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace App\Generators\Source;

use Facades\App\Generators\ResponseType\TokenReplacer;
use Illuminate\Support\Facades\File;

class ControllerSource extends BaseSource
{
public function handle(GeneratorRepository $generatorRepository): void
{
$this->generatorRepository = $generatorRepository;

$this->makeController();
//$this->makeTest();
}

protected function makeTest()
{
$content = $this->getContents('/Tests/ResponseTypeControllerTest.php');
$transformed = TokenReplacer::handle($this->generatorRepository, $content);

$name = sprintf('%sResponseTypeControllerTest.php', $this->generatorRepository->getClassName());
$basePath = base_path('tests/Feature/Http/Controllers/');
File::makeDirectory($basePath, 0755, true, true);
$destination = $basePath.$name;
$this->generatorRepository->putFile($destination, $transformed);
}

protected function makeController()
{
$content = $this->getContents('Controllers/SourceController.php');

$transformed = TokenReplacer::handle($this->generatorRepository, $content);

$name = sprintf('%sSourceController.php', $this->generatorRepository->getClassName());
$destination = base_path('app/Http/Controllers/Sources/'.$name);

$this->generatorRepository->putFile($destination, $transformed);
}
}
10 changes: 3 additions & 7 deletions app/Generators/Source/GeneratorRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@
namespace App\Generators\Source;

use App\Generators\BaseRepository;
use Facades\App\Generators\ResponseType\ControllerTransformer;
use Facades\App\Generators\Source\ControllerSource;
use Facades\App\Generators\ResponseType\EnumTransformer;
use Facades\App\Generators\ResponseType\LarachainConfigTransformer;
use Facades\App\Generators\ResponseType\ResponseTypeClassTransformer;
use Facades\App\Generators\ResponseType\RoutesTransformer;
use Facades\App\Generators\ResponseType\VueTransformer;
use Illuminate\Support\Facades\File;

class GeneratorRepository extends BaseRepository
{


public function run() : self
public function run(): self
{
// ControllerTransformer::handle($this);
ControllerSource::handle($this);
// VueTransformer::handle($this);
// RoutesTransformer::handle($this);
// EnumTransformer::handle($this);
Expand All @@ -26,5 +23,4 @@ public function run() : self

return $this;
}

}
4 changes: 2 additions & 2 deletions tests/Feature/ControllerSourceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

namespace Tests\Feature;

use App\Generators\Source\ControllerSource;
use App\Generators\Source\GeneratorRepository;
use App\Generators\ResponseType\VueTransformer;
use Illuminate\Support\Facades\File;
use Tests\TestCase;

Expand All @@ -30,7 +30,7 @@ public function test_copies_to_folders()
$generator = new GeneratorRepository();
$generator->setup('Foo Bar', 'Some Response Type', 'Some Description', false);

$controllerGenerator = new VueTransformer();
$controllerGenerator = new ControllerSource();
$controllerGenerator->handle($generator);
}
}

0 comments on commit 6510de7

Please sign in to comment.