Skip to content

Commit e8a78dc

Browse files
authored
Merge pull request #32 from vc-urvin/main
Restructure the Service to Traits
2 parents 884173d + ab2cbd0 commit e8a78dc

12 files changed

+180
-148
lines changed

src/Commands/DBAuditCommand.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class DBAuditCommand extends Command
2727
*/
2828
public function handle(): void
2929
{
30-
$commandSelect = $this->choice('Please Select feature which would you like to do', [Constant::STANDARD_COMMAND, Constant::CONSTRAINT_COMMAND]);
30+
$commandSelect = $this->choice('Please Select feature which would you like to do', [Constant::STANDARD_COMMAND, Constant::CONSTRAINT_COMMAND, Constant::SUMMARY_COMMAND]);
3131

3232
if ($commandSelect === Constant::STANDARD_COMMAND) {
3333
$this->call('db:standard');
@@ -36,5 +36,9 @@ public function handle(): void
3636
if ($commandSelect === Constant::CONSTRAINT_COMMAND) {
3737
$this->call('db:constraint');
3838
}
39+
40+
if ($commandSelect === Constant::SUMMARY_COMMAND) {
41+
$this->call('db:summary');
42+
}
3943
}
4044
}

src/Commands/DBConstraintCommand.php

+23-27
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
use Illuminate\Console\Command;
77
use Illuminate\Support\Facades\Log;
88
use Vcian\LaravelDBAuditor\Constants\Constant;
9-
use Vcian\LaravelDBAuditor\Services\AuditService;
9+
use Vcian\LaravelDBAuditor\Traits\Audit;
1010
use function Termwind\{render};
1111
use function Termwind\{renderUsing};
1212

1313
class DBConstraintCommand extends Command
1414
{
15+
use Audit;
1516
/**
1617
* @var bool
1718
*/
@@ -37,11 +38,10 @@ class DBConstraintCommand extends Command
3738
public function handle(): int|string
3839
{
3940
try {
40-
$auditService = app(AuditService::class);
41-
41+
4242
$tableName = $this->components->choice(
4343
__('Lang::messages.constraint.question.table_selection'),
44-
$auditService->getTablesList()
44+
$this->getTableList()
4545
);
4646

4747
$this->displayTable($tableName);
@@ -51,15 +51,15 @@ public function handle(): int|string
5151
$continue = Constant::STATUS_TRUE;
5252

5353
do {
54-
$noConstraintFields = $auditService->getNoConstraintFields($tableName);
54+
$noConstraintFields = $this->getNoConstraintFields($tableName);
5555

5656
if (empty($noConstraintFields)) {
5757
$continue = Constant::STATUS_FALSE;
5858
} else {
5959
if ($this->confirm(__('Lang::messages.constraint.question.continue'))) {
6060

6161
$this->skip = Constant::STATUS_FALSE;
62-
$constraintList = $auditService->getConstraintList($tableName, $noConstraintFields);
62+
$constraintList = $this->getConstraintList($tableName, $noConstraintFields);
6363
$selectConstrain = $this->choice(
6464
__('Lang::messages.constraint.question.constraint_selection'),
6565
$constraintList
@@ -86,18 +86,17 @@ public function handle(): int|string
8686
*/
8787
public function displayTable(string $tableName): void
8888
{
89-
$auditService = app(AuditService::class);
9089

9190
$data = [
9291
"table" => $tableName,
93-
"size" => $auditService->getTableSize($tableName),
94-
"fields" => $auditService->getTableFields($tableName),
95-
'field_count' => count($auditService->getTableFields($tableName)),
92+
"size" => $this->getTableSize($tableName),
93+
"fields" => $this->getFieldsDetails($tableName),
94+
'field_count' => count($this->getFieldsDetails($tableName)),
9695
'constrain' => [
97-
'primary' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_PRIMARY_KEY),
98-
'unique' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_UNIQUE_KEY),
99-
'foreign' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_FOREIGN_KEY),
100-
'index' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_INDEX_KEY)
96+
'primary' => $this->getConstraintField($tableName, Constant::CONSTRAINT_PRIMARY_KEY),
97+
'unique' => $this->getConstraintField($tableName, Constant::CONSTRAINT_UNIQUE_KEY),
98+
'foreign' => $this->getConstraintField($tableName, Constant::CONSTRAINT_FOREIGN_KEY),
99+
'index' => $this->getConstraintField($tableName, Constant::CONSTRAINT_INDEX_KEY)
101100
]
102101
];
103102

@@ -131,23 +130,22 @@ public function successMessage(string $message): void
131130
*/
132131
public function foreignKeyConstraint(string $tableName, string $selectField): void
133132
{
134-
$auditService = app(AuditService::class);
135133
$foreignContinue = Constant::STATUS_FALSE;
136134
$referenceField = Constant::NULL;
137135
$fields = Constant::ARRAY_DECLARATION;
138136

139137
do {
140-
$referenceTable = $this->anticipate(__('Lang::messages.constraint.question.foreign_table'), $auditService->getTablesList());
138+
$referenceTable = $this->anticipate(__('Lang::messages.constraint.question.foreign_table'), $this->getTablesList());
141139

142-
if ($referenceTable && $auditService->checkTableExistOrNot($referenceTable)) {
140+
if ($referenceTable && $this->checkTableExistOrNot($referenceTable)) {
143141

144-
foreach ($auditService->getTableFields($referenceTable) as $field) {
142+
foreach ($this->getTableFields($referenceTable) as $field) {
145143
$fields[] = $field->COLUMN_NAME;
146144
}
147145
do {
148146
$referenceField = $this->anticipate(__('Lang::messages.constraint.question.foreign_field'), $fields);
149147

150-
if (!$referenceField || !$auditService->checkFieldExistOrNot($referenceTable, $referenceField)) {
148+
if (!$referenceField || !$this->checkFieldExistOrNot($referenceTable, $referenceField)) {
151149
$this->errorMessage(__('Lang::messages.constraint.error_message.field_not_found'));
152150
} else {
153151
$foreignContinue = Constant::STATUS_TRUE;
@@ -158,8 +156,8 @@ public function foreignKeyConstraint(string $tableName, string $selectField): vo
158156
}
159157
} while ($foreignContinue === Constant::STATUS_FALSE);
160158

161-
$referenceFieldType = $auditService->getFieldDataType($referenceTable, $referenceField);
162-
$selectedFieldType = $auditService->getFieldDataType($tableName, $selectField);
159+
$referenceFieldType = $this->getFieldDataType($referenceTable, $referenceField);
160+
$selectedFieldType = $this->getFieldDataType($tableName, $selectField);
163161

164162
if ($referenceTable === $tableName) {
165163
$this->errorMessage(__('Lang::messages.constraint.error_message.foreign_selected_table_match', ['foreign' => $referenceTable, 'selected' => $tableName]));
@@ -181,7 +179,7 @@ public function foreignKeyConstraint(string $tableName, string $selectField): vo
181179
');
182180
$this->errorMessage(__('Lang::messages.constraint.error_message.foreign_not_apply'));
183181
} else {
184-
$auditService->addConstraint($tableName, $selectField, Constant::CONSTRAINT_FOREIGN_KEY, $referenceTable, $referenceField);
182+
$this->addConstraint($tableName, $selectField, Constant::CONSTRAINT_FOREIGN_KEY, $referenceTable, $referenceField);
185183
}
186184
}
187185
}
@@ -195,10 +193,8 @@ public function foreignKeyConstraint(string $tableName, string $selectField): vo
195193
public function selectedConstraint(string $selectConstrain, array $noConstraintFields, string $tableName): void
196194
{
197195

198-
$auditService = app(AuditService::class);
199-
200196
if ($selectConstrain === Constant::CONSTRAINT_FOREIGN_KEY) {
201-
$tableHasValue = $auditService->tableHasValue($tableName);
197+
$tableHasValue = $this->tableHasValue($tableName);
202198

203199
if ($tableHasValue) {
204200
$this->errorMessage(__('Lang::messages.constraint.error_message.constraint_not_apply', ['constraint' => strtolower($selectConstrain)]));
@@ -213,7 +209,7 @@ public function selectedConstraint(string $selectConstrain, array $noConstraintF
213209
}
214210

215211
if ($selectConstrain === Constant::CONSTRAINT_UNIQUE_KEY) {
216-
$fields = $auditService->getUniqueFields($tableName, $noConstraintFields['mix']);
212+
$fields = $this->getUniqueFields($tableName, $noConstraintFields['mix']);
217213
if (empty($fields)) {
218214
$this->errorMessage(__('Lang::messages.constraint.error_message.unique_constraint_not_apply'));
219215
}
@@ -228,7 +224,7 @@ public function selectedConstraint(string $selectConstrain, array $noConstraintF
228224
if ($selectConstrain === Constant::CONSTRAINT_FOREIGN_KEY) {
229225
$this->foreignKeyConstraint($tableName, $selectField);
230226
} else {
231-
$auditService->addConstraint($tableName, $selectField, $selectConstrain);
227+
$this->addConstraint($tableName, $selectField, $selectConstrain);
232228
}
233229
}
234230
}

src/Commands/DBStandardCommand.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
use Illuminate\Console\Command;
66
use Vcian\LaravelDBAuditor\Constants\Constant;
7-
use Vcian\LaravelDBAuditor\Services\RuleService;
7+
use Vcian\LaravelDBAuditor\Traits\Rules;
88
use function Termwind\{render};
99

1010
class DBStandardCommand extends Command
1111
{
12+
use Rules;
1213
/**
1314
* The name and signature of the console command.
1415
*
@@ -28,8 +29,7 @@ class DBStandardCommand extends Command
2829
*/
2930
public function handle(): ?int
3031
{
31-
$ruleService = app(RuleService::class);
32-
$tableStatus = $ruleService->tablesRule();
32+
$tableStatus = $this->tablesRule();
3333

3434
if (!$tableStatus) {
3535
render(view('DBAuditor::error_message', ['message' => 'No Table Found']));
@@ -40,13 +40,13 @@ public function handle(): ?int
4040
$continue = Constant::STATUS_TRUE;
4141

4242
do {
43-
$tableName = $this->anticipate('Please enter table name if you want to see the table report', $ruleService->getTableList());
43+
$tableName = $this->anticipate('Please enter table name if you want to see the table report', $this->getTableList());
4444

4545
if (empty($tableName)) {
4646
return render(view('DBAuditor::error_message', ['message' => 'No Table Found']));
4747
}
4848

49-
$tableStatus = $ruleService->tableRules($tableName);
49+
$tableStatus = $this->tableRules($tableName);
5050

5151
if (!$tableStatus) {
5252
return render(view('DBAuditor::error_message', ['message' => 'No Table Found']));

src/Commands/DBSummaryCommand.php

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace Vcian\LaravelDBAuditor\Commands;
4+
5+
use Illuminate\Console\Command;
6+
use Vcian\LaravelDBAuditor\Traits\DBConnection;
7+
use function Termwind\{render};
8+
9+
class DBSummaryCommand extends Command
10+
{
11+
use DBConnection;
12+
13+
/**
14+
* The name and signature of the console command.
15+
*
16+
* @var string
17+
*/
18+
protected $signature = 'db:summary';
19+
20+
/**
21+
* The console command description.
22+
*
23+
* @var string
24+
*/
25+
protected $description = 'Command description';
26+
27+
/**
28+
* Execute the console command.
29+
*/
30+
public function handle()
31+
{
32+
$this->table(
33+
['Database Name', 'Size', 'Table Count', 'Engin', 'Character Set'],
34+
[[
35+
$this->getDatabaseName(),
36+
$this->getDatabaseSize(),
37+
count($this->getTableList()),
38+
$this->getDatabaseEngin(),
39+
$this->getCharacterSetName()
40+
]]
41+
);
42+
43+
return self::SUCCESS;
44+
}
45+
}

src/Constants/Constant.php

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class Constant
3838

3939
public const STANDARD_COMMAND = 'STANDARD';
4040
public const CONSTRAINT_COMMAND = 'CONSTRAINT';
41+
public const SUMMARY_COMMAND = 'SUMMARY';
42+
4143
public const NULL = null;
4244
public const NUMERIC_PATTERN = '/[0-9]+/';
4345

src/Providers/DBAuditorServiceProvider.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ class DBAuditorServiceProvider extends ServiceProvider
99
protected array $commands = [
1010
'Vcian\LaravelDBAuditor\Commands\DBAuditCommand',
1111
'Vcian\LaravelDBAuditor\Commands\DBStandardCommand',
12-
'Vcian\LaravelDBAuditor\Commands\DBConstraintCommand'
12+
'Vcian\LaravelDBAuditor\Commands\DBConstraintCommand',
13+
'Vcian\LaravelDBAuditor\Commands\DBSummaryCommand'
1314
];
1415

1516
/**

src/Services/AuditService.php renamed to src/Traits/Audit.php

+7-59
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,18 @@
11
<?php
22

3-
namespace Vcian\LaravelDBAuditor\Services;
3+
namespace Vcian\LaravelDBAuditor\Traits;
44

55
use Exception;
66
use Illuminate\Support\Facades\Artisan;
77
use Illuminate\Support\Facades\DB;
88
use Illuminate\Support\Facades\File;
99
use Illuminate\Support\Facades\Log;
1010
use Vcian\LaravelDBAuditor\Constants\Constant;
11+
use Vcian\LaravelDBAuditor\Traits\DBConnection;
1112

12-
class AuditService
13+
trait Audit
1314
{
14-
public function __construct(protected DBConnectionService $dBConnectionService)
15-
{
16-
//
17-
}
18-
19-
/**
20-
* Get All Table List
21-
* @return array
22-
*/
23-
public function getTablesList(): array
24-
{
25-
return $this->dBConnectionService->getTableList();
26-
}
27-
28-
/**
29-
* Get Table Fields
30-
* @param string $tableName
31-
* @return array
32-
*/
33-
public function getTableFields(string $tableName): array
34-
{
35-
return $this->dBConnectionService->getFieldsDetails($tableName);
36-
}
37-
38-
/**
39-
* Get Table Size
40-
* @param string $tableName
41-
* @return string $size
42-
* @return string
43-
*/
44-
public function getTableSize(string $tableName): string
45-
{
46-
return $this->dBConnectionService->getTableSize($tableName);
47-
}
48-
49-
/**
50-
* Check table exist or not
51-
* @param string $tableName
52-
* @return bool
53-
*/
54-
public function checkTableExistOrNot(string $tableName): bool
55-
{
56-
return $this->dBConnectionService->checkTableExist($tableName);
57-
}
58-
59-
/**
60-
* @param string $tableName
61-
* @param string $field
62-
* @return array
63-
*/
64-
public function getFieldDataType(string $tableName, string $field): array
65-
{
66-
return $this->dBConnectionService->getFieldDataType($tableName, $field);
67-
}
15+
use DBConnection;
6816

6917
/**
7018
* Check field exist or not
@@ -74,7 +22,7 @@ public function getFieldDataType(string $tableName, string $field): array
7422
*/
7523
public function checkFieldExistOrNot(string $tableName, string $field): bool
7624
{
77-
$fields = $this->dBConnectionService->getFields($tableName);
25+
$fields = $this->getFields($tableName);
7826
if (in_array($field, $fields)) {
7927
return Constant::STATUS_TRUE;
8028
}
@@ -95,7 +43,7 @@ public function getNoConstraintFields(string $tableName): array
9543

9644
foreach ($fieldList as $field) {
9745
if (!in_array($field->DATA_TYPE, Constant::RESTRICT_DATATYPE)) {
98-
if (!$this->dBConnectionService->checkFieldHasIndex($tableName, $field->COLUMN_NAME)) {
46+
if (!$this->checkFieldHasIndex($tableName, $field->COLUMN_NAME)) {
9947
if (str_contains($field->DATA_TYPE, "int")) {
10048
$fields['integer'][] = $field->COLUMN_NAME;
10149
}
@@ -155,7 +103,7 @@ public function getConstraintField(string $tableName, string $input): array
155103
try {
156104
$constraintFields = Constant::ARRAY_DECLARATION;
157105

158-
if (!$this->dBConnectionService->checkTableExist($tableName)) {
106+
if (!$this->checkTableExist($tableName)) {
159107
return [];
160108
}
161109

0 commit comments

Comments
 (0)