Skip to content

Commit

Permalink
develop init
Browse files Browse the repository at this point in the history
  • Loading branch information
sawon authored and sawon committed Oct 30, 2022
1 parent 53581f8 commit a3dd24d
Show file tree
Hide file tree
Showing 29 changed files with 354 additions and 231 deletions.
4 changes: 3 additions & 1 deletion .idea/oscar-interview3.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/php-test-framework.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/php.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/phpunit.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion web/app/.phpunit.result.cache
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"version":1,"defects":{"AppTest\\Oscar\\Lib\\DB\\DatabaseConnectionTest::test__construct":4,"AppTest\\Oscar\\Lib\\DB\\DatabaseConnectionTest::testConnect":4,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::test__construct":4,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::testAll":4,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::testToVehicle":4,"AppTest\\Oscar\\Services\\CsvFileReaderServiceTest::testRead":1,"AppTest\\Oscar\\Services\\CsvFileReaderServiceTest::testTransform":1,"AppTest\\Oscar\\Services\\VehicleImportServiceTest::testProcessFile":5},"times":{"AppTest\\Oscar\\Factory\\FileReaderFactoryTest::testcreate":0.035,"AppTest\\Oscar\\FooTest::testGetName":0.006,"AppTest\\Oscar\\Lib\\DB\\DatabaseConnectionTest::test__construct":0.012,"AppTest\\Oscar\\Lib\\DB\\DatabaseConnectionTest::testConnect":0.007,"AppTest\\Oscar\\Model\\VehicleTest::test__construct":0.107,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::test__construct":0.008,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::testAll":0.006,"AppTest\\Oscar\\Repositories\\VehicleRepositoryTest::testToVehicle":0.005,"AppTest\\Oscar\\Services\\CsvFileReaderServiceTest::testRead":0.008,"AppTest\\Oscar\\Services\\CsvFileReaderServiceTest::testTransform":0,"AppTest\\Oscar\\Services\\VehicleImportServiceTest::testProcessFile":0.004}}
{"version":1,"defects":{"Lib\\DB\\DatabaseConnectionTest::test__construct":5,"Lib\\DB\\DatabaseConnectionTest::testConnect":5,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::test__construct":4,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::testAll":4,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::testToVehicle":4,"Services\\CsvFileReaderServiceTest::testRead":1},"times":{"Tests\\Unit\\Factory\\FileReaderFactoryTest::test_can_create_csv_file_reader_instance":0.038,"Tests\\Unit\\Factory\\FileReaderFactoryTest::test_can_create_json_file_reader_instance":0.004,"Tests\\Unit\\Factory\\FileReaderFactoryTest::test_can_throwException_on_unsupported_file_type":0.002,"Lib\\DB\\DatabaseConnectionTest::test__construct":0.011,"Lib\\DB\\DatabaseConnectionTest::testConnect":0.003,"Model\\VehicleTest::test__construct":0.158,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::test__construct":0.007,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::testAll":0.001,"Tests\\Unit\\Repositories\\VehicleRepositoryTest::testToVehicle":0,"Services\\CsvFileReaderServiceTest::testRead":0.003,"Services\\VehicleImportServiceTest::testProcessFile":0.027}}
22 changes: 0 additions & 22 deletions web/app/composer.json.dist

This file was deleted.

45 changes: 24 additions & 21 deletions web/app/phpunit.xml
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" bootstrap="test/bootstrap.php" colors="true">
<coverage includeUncoveredFiles="false">
<include>
<directory suffix=".php">./src</directory>
</include>
<exclude>
<directory suffix=".php">./vendor</directory>
</exclude>
<report>
<html outputDirectory="./report/phpunit"/>
<text outputFile="php://stdout" showUncoveredFiles="false"/>
</report>
</coverage>
<testsuites>
<testsuite name="PHP Test suite">
<directory>./test/</directory>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>

<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
<exclude>
<directory suffix=".php">./vendor</directory>
</exclude>
<report>
<html outputDirectory="./report/phpunit"/>
<text outputFile="php://stdout" showUncoveredFiles="false"/>
</report>
</coverage>
<testsuite name="Unit">
<directory >./tests/Unit</directory>
</testsuite>
</testsuites>
<php>
<ini name="date.timezone" value="UTC"/>
</php>
<logging/>
<php>
<ini name="date.timezone" value="UTC"/>
</php>
<logging/>
</phpunit>
27 changes: 0 additions & 27 deletions web/app/phpunit.xml.bak

This file was deleted.

2 changes: 1 addition & 1 deletion web/app/src/Contracts/FileReaderInterface.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace App\Oscar\Contracts;
namespace App\Contracts;

interface FileReaderInterface
{
Expand Down
8 changes: 4 additions & 4 deletions web/app/src/Factory/FileReaderFactory.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?php

namespace App\Oscar\Factory;
namespace App\Factory;

use App\Oscar\Contracts\FileReaderInterface;
use App\Oscar\Services\CsvFileReaderService;
use App\Oscar\Services\JsonFileReaderService;
use App\Contracts\FileReaderInterface;
use App\Services\CsvFileReaderService;
use App\Services\JsonFileReaderService;
use RuntimeException;

class FileReaderFactory
Expand Down
2 changes: 1 addition & 1 deletion web/app/src/Foo.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* I belong to a file
*/

namespace App\Oscar;
namespace App;

/**
* I belong to a class
Expand Down
1 change: 1 addition & 0 deletions web/app/src/Http/Controller/CarController.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
namespace App\Http\Controller;

class CarController
{
Expand Down
170 changes: 153 additions & 17 deletions web/app/src/Lib/DB/DatabaseConnection.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<?php
namespace App\Oscar\Lib\DB;

namespace App\Lib\DB;

use PDO;
use PDOException;

class DatabaseConnection
{
Expand All @@ -21,42 +23,176 @@ class DatabaseConnection

private array $options;

public function __construct($errorMode = PDO::ERRMODE_EXCEPTION, $fetchMode = PDO::FETCH_ASSOC, $emulate = false)
public function __construct($errorMode = PDO::ERRMODE_EXCEPTION, $fetchMode = PDO::FETCH_ASSOC, $emulate = false)
{
$config = include __DIR__ . '/../../../config/database.php';
$config = include __DIR__ . '/../../config/database.php';

$this->db = $config['database'];
$this->db = $config['database'];
$this->host = $config['host'];
$this->port = $config['port'];
$this->user =$config['user'];
$this->port = $config['port'];
$this->user = $config['user'];
$this->pass = $config['pass'];
$this->charset = $config['charset'];

$this->options = [
PDO::ATTR_ERRMODE => $errorMode,
PDO::ATTR_ERRMODE => $errorMode,
PDO::ATTR_DEFAULT_FETCH_MODE => $fetchMode,
PDO::ATTR_EMULATE_PREPARES => $emulate
PDO::ATTR_EMULATE_PREPARES => $emulate
];
}

/**
* @return PDO|null
* @throws PDOException
*/
public static function databaseManager(): ?PDO
{
$db = new self();
return $db->connect(
$db->getUser(),
$db->getPassword(),
$db->getHost(),
$db->getDb(),
$db->getCharset(),
$db->getPort(),
$db->getOptions()
);
}

/**
* @param string $user
* @param string $pass
* @param string $host
* @param string $dbname
* @param string $charset
* @param string $port
* @param array $options
* @return PDO|null
* @throws PDOException
*/
public function connect(
string $user,
string $pass,
string $host,
string $dbname,
string $charset,
string $port,
array $options = []
): ?PDO {
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset;port=$port";

return new PDO($dsn, $user, $pass, $options);
}

/**
* @return mixed|string
*/
public function getHost(): mixed
{
return $this->host;
}

/**
* @return mixed|string
*/
public function getPort(): mixed
{
return $this->port;
}

/**
* @return mixed|string
*/
public function getDb(): mixed
{
return $this->db;
}

/**
* @return mixed|string
*/
public function getUser(): mixed
{
return $this->user;
}

$this->connection = $this->connect();
/**
* @return mixed|string
*/
public function getCharset(): mixed
{
return $this->charset;
}

private function connect(): ?PDO
/**
* @return array
*/
public function getOptions(): array
{
$dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset;port=$this->port";
return $this->options;
}

try {
return new PDO($dsn, $this->user, $this->pass, $this->options);
} catch (\PDOException $e) {
// Log::critical($e->getMessage());
return null;
}
/**
* @return string
*/
public function getPassword(): string
{
return $this->pass;
}
/**
* @param mixed|string $host
*/
public function setHost(mixed $host): void
{
$this->host = $host;
}

/**
* @param mixed|string $port
*/
public function setPort(mixed $port): void
{
$this->port = $port;
}

/**
* @param mixed|string $db
*/
public function setDb(mixed $db): void
{
$this->db = $db;
}

/**
* @param mixed|string $user
*/
public function setUser(mixed $user): void
{
$this->user = $user;
}

/**
* @param mixed|string $pass
*/
public function setPass(mixed $pass): void
{
$this->pass = $pass;
}

/**
* @param mixed|string $charset
*/
public function setCharset(mixed $charset): void
{
$this->charset = $charset;
}

/**
* @param array $options
*/
public function setOptions(array $options): void
{
$this->options = $options;
}

}
Loading

0 comments on commit a3dd24d

Please sign in to comment.