Skip to content

Commit a46359d

Browse files
committed
Merge remote-tracking branch 'origin/development'
2 parents 7f36dbe + 822d95f commit a46359d

14 files changed

+275
-309
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
}
2020
],
2121
"require": {
22-
"php": "^8.0"
22+
"php": "^8.0",
23+
"doctrine/dbal": "4.0.x-dev"
2324
},
2425
"autoload": {
2526
"psr-4": {

src/Commands/DBAuditCommand.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class DBAuditCommand extends Command
1919
*
2020
* @var string
2121
*/
22-
protected $description = 'Database Audit : Check Standard and Constrain';
22+
protected $description = 'Database Audit : Check Standard and Constraint';
2323

2424
/**
2525
* Execute the console command.
@@ -28,14 +28,14 @@ public function handle()
2828
{
2929
$commandSelect = $this->choice(
3030
'Please Select',
31-
[Constant::STANDARD_COMMAND, Constant::CONSTRAIN_COMMAND]
31+
[Constant::STANDARD_COMMAND, Constant::CONSTRAINT_COMMAND]
3232
);
3333

3434
if ($commandSelect === Constant::STANDARD_COMMAND) {
3535
$this->call('db:standard');
3636
}
3737

38-
if ($commandSelect === Constant::CONSTRAIN_COMMAND) {
38+
if ($commandSelect === Constant::CONSTRAINT_COMMAND) {
3939
$this->call('db:constraint');
4040
}
4141
}

src/Commands/DBConstrainCommand.php

+65-58
Original file line numberDiff line numberDiff line change
@@ -25,104 +25,86 @@ class DBConstrainCommand extends Command
2525
*
2626
* @var string
2727
*/
28-
protected $description = 'Table Constrain Playground';
28+
protected $description = 'Table Constraint Playground';
2929

3030
/**
3131
* Execute the console command.
32+
* @param AuditService
3233
*/
3334
public function handle(AuditService $auditService)
3435
{
3536
try {
3637

3738
$tableName = $this->components->choice(
38-
'Which table whould you like to audit?',
39+
__('Lang::messages.constraint.question.table_selection'),
3940
$auditService->getTablesList()
4041
);
4142

42-
$data = [
43-
"table" => $tableName,
44-
"size" => $auditService->getTableSize($tableName),
45-
"fields" => $auditService->getTableFields($tableName),
46-
'field_count' => count($auditService->getTableFields($tableName)),
47-
'constrain' => [
48-
'primary' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_PRIMARY_KEY),
49-
'unique' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_UNIQUE_KEY),
50-
'foreign' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_FOREIGN_KEY),
51-
'index' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_INDEX_KEY)
52-
]
53-
];
54-
55-
render(view('DBAuditor::constraint', ['data' => $data]));
43+
$this->displayTable($tableName);
5644

5745
if ($tableName) {
5846

59-
$continue = Constant::STATUS_TRUE;
60-
do {
47+
$flag = Constant::STATUS_TRUE;
6148

62-
$noConstrainfields = $auditService->getNoConstrainFields($tableName);
63-
$constrainList = $auditService->getConstrainList($tableName, $noConstrainfields);
49+
do {
50+
$continue = Constant::STATUS_TRUE;
51+
$noConstrainfields = $auditService->getNoConstraintFields($tableName);
52+
$constrainList = $auditService->getConstraintList($tableName, $noConstrainfields);
6453

6554
if ($noConstrainfields) {
6655

67-
$userInput = $this->confirm("Do you want add more constrain?");
56+
$userInput = $this->confirm(__('Lang::messages.constraint.question.continue'));
6857

6958
if ($userInput) {
7059

7160
$selectConstrain = $this->choice(
72-
'Please select constrain which you want to add',
61+
__('Lang::messages.constraint.question.constraint_selection'),
7362
$constrainList
7463
);
7564

76-
if ($selectConstrain === Constant::CONSTRAIN_PRIMARY_KEY || $selectConstrain === Constant::CONSTRAIN_FOREIGN_KEY) {
77-
$fields = $noConstrainfields['integer'];
78-
} else {
79-
$fields = $noConstrainfields['mix'];
80-
}
81-
82-
$selectField = $this->choice(
83-
'Please select field where you want to add ' . $selectConstrain,
84-
$fields
85-
);
86-
87-
if ($selectConstrain === Constant::CONSTRAIN_FOREIGN_KEY) {
65+
if ($selectConstrain === Constant::CONSTRAINT_FOREIGN_KEY || $selectConstrain === Constant::CONSTRAINT_UNIQUE_KEY) {
8866
$tableHasValue = $auditService->tableHasValue($tableName);
8967

9068
if ($tableHasValue) {
91-
render('<div class="w-120 px-2 p-1 bg-red-600 text-center"> 😢 Can not apply Foreign Key | Please trancate table 😎 </div>');
92-
} else {
93-
$referenceTable = $this->ask("Please add foreign table name");
94-
$referenceField = $this->ask("Please add foreign table primary key name");
95-
$auditService->addConstrain($tableName, $selectField, $selectConstrain, $referenceTable, $referenceField);
69+
$continue = Constant::STATUS_FALSE;
70+
render('<div class="w-120 px-2 p-1 bg-red-600 text-center"> 😢 Can not apply ' . strtolower($selectConstrain) . ' key | Please trancate table 😎 </div>');
9671
}
9772
}
9873

99-
$auditService->addConstrain($tableName, $selectField, $selectConstrain);
74+
if ($continue) {
10075

101-
renderUsing($this->output);
76+
if ($selectConstrain === Constant::CONSTRAINT_PRIMARY_KEY || $selectConstrain === Constant::CONSTRAINT_FOREIGN_KEY) {
77+
$fields = $noConstrainfields['integer'];
78+
} else {
79+
$fields = $noConstrainfields['mix'];
80+
}
10281

103-
render('<div class="w-120 px-2 p-1 bg-green-600 text-center"> 😎 Constrain Add Successfully 😎 </div>');
82+
$selectField = $this->choice(
83+
__('Lang::messages.constraint.question.field_selection').' '. strtolower($selectConstrain) . ' key',
84+
$fields
85+
);
10486

105-
$data = [
106-
"table" => $tableName,
107-
"size" => $auditService->getTableSize($tableName),
108-
"fields" => $auditService->getTableFields($tableName),
109-
'field_count' => count($auditService->getTableFields($tableName)),
110-
'constrain' => [
111-
'primary' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_PRIMARY_KEY),
112-
'unique' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_UNIQUE_KEY),
113-
'foreign' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_FOREIGN_KEY),
114-
'index' => $auditService->getConstrainField($tableName, Constant::CONSTRAIN_INDEX_KEY)
115-
]
116-
];
87+
if ($selectConstrain === Constant::CONSTRAINT_FOREIGN_KEY) {
88+
$referenceTable = $this->ask(__('Lang::messages.constraint.question.foreign_table'));
89+
$referenceField = $this->ask(__('Lang::messages.constraint.question.foreign_field'));
90+
$auditService->addConstraint($tableName, $selectField, $selectConstrain, $referenceTable, $referenceField);
91+
}
11792

118-
render(view('DBAuditor::constraint', ['data' => $data]));
93+
$auditService->addConstraint($tableName, $selectField, $selectConstrain);
94+
95+
renderUsing($this->output);
96+
97+
render('<div class="w-120 px-2 p-1 bg-green-600 text-center"> 😎 ' . __('Lang::messages.constraint.messages.success') . ' 😎 </div>');
98+
99+
$this->displayTable($tableName);
100+
}
119101
} else {
120-
$continue = Constant::STATUS_FALSE;
102+
$flag = Constant::STATUS_FALSE;
121103
}
122104
} else {
123-
$continue = Constant::STATUS_FALSE;
105+
$flag = Constant::STATUS_FALSE;
124106
}
125-
} while ($continue === Constant::STATUS_TRUE);
107+
} while ($flag === Constant::STATUS_TRUE);
126108
}
127109
} catch (Exception $exception) {
128110
Log::error($exception->getMessage());
@@ -131,4 +113,29 @@ public function handle(AuditService $auditService)
131113

132114
return self::SUCCESS;
133115
}
116+
117+
/**
118+
* Display selected table
119+
* @param string $tableName
120+
* @return render
121+
*/
122+
public function displayTable($tableName)
123+
{
124+
$auditService = resolve(AuditService::class);
125+
126+
$data = [
127+
"table" => $tableName,
128+
"size" => $auditService->getTableSize($tableName),
129+
"fields" => $auditService->getTableFields($tableName),
130+
'field_count' => count($auditService->getTableFields($tableName)),
131+
'constrain' => [
132+
'primary' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_PRIMARY_KEY),
133+
'unique' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_UNIQUE_KEY),
134+
'foreign' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_FOREIGN_KEY),
135+
'index' => $auditService->getConstraintField($tableName, Constant::CONSTRAINT_INDEX_KEY)
136+
]
137+
];
138+
139+
render(view('DBAuditor::constraint', ['data' => $data]));
140+
}
134141
}

src/Constants/Constant.php

+7-16
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,12 @@ class Constant
1212

1313
public const DASH = " - ";
1414

15-
//constrain list
16-
public const CONSTRAIN_PRIMARY_KEY = "PRIMARY";
17-
public const CONSTRAIN_INDEX_KEY = "INDEX";
18-
public const CONSTRAIN_UNIQUE_KEY = "UNIQUE";
19-
public const CONSTRAIN_FOREIGN_KEY = "FOREIGN";
20-
public const CONSTRAIN_ALL_KEY = "ALL";
21-
22-
//Header Title
23-
public const HEADER_TITLE_TABLE_NAME = "Table Name";
24-
public const HEADER_TITLE_COLUMN_NAME = "Column Name";
25-
public const HEADER_TITLE_CONSTRAIN = "Constraints";
26-
public const HEADER_TITLE_REFERENCED_TABLE_NAME = "Reference Table Name";
27-
public const HEADER_TITLE_REFERENCED_COLUMN_NAME = "Reference Column Name";
28-
29-
//rules
15+
//constraint list
16+
public const CONSTRAINT_PRIMARY_KEY = "PRIMARY";
17+
public const CONSTRAINT_INDEX_KEY = "INDEX";
18+
public const CONSTRAINT_UNIQUE_KEY = "UNIQUE";
19+
public const CONSTRAINT_FOREIGN_KEY = "FOREIGN";
20+
3021
public const NAME_LENGTH = 64;
3122

3223
public const STATUS_TRUE_EMOJI = "";
@@ -46,5 +37,5 @@ class Constant
4637
public const STATUS_FALSE = false;
4738

4839
public const STANDARD_COMMAND = 'STANDARD';
49-
public const CONSTRAIN_COMMAND = 'CONSTRAIN';
40+
public const CONSTRAINT_COMMAND = 'CONSTRAINT';
5041
}

src/Database/migrations/update_table_foreign.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
*/
1212
public function up(): void
1313
{
14-
Schema::table($table_name, function (Blueprint $table) {
15-
$table->foreign($field_name)->references($reference_field)->on($reference_table);
14+
Schema::table($tableName, function (Blueprint $table) {
15+
$table->foreign($fieldName)->references($reference_field)->on($reference_table);
1616
});
1717
}
1818

@@ -21,7 +21,7 @@ public function up(): void
2121
*/
2222
public function down(): void
2323
{
24-
Schema::table($table_name, function (Blueprint $table) {
24+
Schema::table($tableName, function (Blueprint $table) {
2525
//
2626
});
2727
}

src/Database/migrations/update_table_primary.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
*/
1212
public function up(): void
1313
{
14-
Schema::table($table_name, function (Blueprint $table) {
15-
$table->$dataType($field_name)->change()->primary();
14+
Schema::table($tableName, function (Blueprint $table) {
15+
$table->$dataType($fieldName)->change()->primary();
1616
});
1717
}
1818

@@ -21,7 +21,7 @@ public function up(): void
2121
*/
2222
public function down(): void
2323
{
24-
Schema::table($table_name, function (Blueprint $table) {
24+
Schema::table($tableName, function (Blueprint $table) {
2525
//
2626
});
2727
}

src/Database/migrations/update_table_unique.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
*/
1212
public function up(): void
1313
{
14-
Schema::table($table_name, function (Blueprint $table) {
15-
$table->$dataType($field_name)->change()->unique();
14+
Schema::table($tableName, function (Blueprint $table) {
15+
$table->$dataType($fieldName)->change()->unique();
1616
});
1717
}
1818

@@ -21,7 +21,7 @@ public function up(): void
2121
*/
2222
public function down(): void
2323
{
24-
Schema::table($table_name, function (Blueprint $table) {
24+
Schema::table($tableName, function (Blueprint $table) {
2525
//
2626
});
2727
}

src/Lang/en/messages.php

+21-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,30 @@
1313
|
1414
*/
1515

16-
'audit' => [
16+
'audit' => [],
1717

18+
'constraint' => [
19+
'question' => [
20+
'table_selection' => 'Which table whould you like to audit?',
21+
'continue' => 'Do you want add more constrain?',
22+
'constraint_selection' => 'Please select constrain which you want to add',
23+
'field_selection' => 'Please select field where you want to add',
24+
'foreign_table' => 'Please add foreign table name',
25+
'foreign_field' => 'Please add foreign table primary key name',
26+
],
27+
'messages' => [
28+
'success' => 'Constraint Add Successfully'
29+
]
1830
],
19-
'standard' => [
2031

32+
'standard' => [
33+
'error_messages' => [
34+
'length' => 'Names should be not more than 64 characters.',
35+
'plural' => 'Use Table Name Plural.',
36+
'space' => 'Using space between words is not advised. Please Use Underscore.',
37+
'alphabets' => 'Numbers are not for names! Please use alphabets for name.',
38+
'lowercase' => 'Use lowercase MYSQL is case sensitive.'
39+
]
2140
]
2241

2342
];

src/Providers/DBAuditorServiceProvider.php

+1
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ public function register(): void
2626
public function boot(): void
2727
{
2828
$this->loadViewsFrom(__DIR__ . '/../views', 'DBAuditor');
29+
$this->loadTranslationsFrom(__DIR__.'/../Lang/', 'Lang');
2930
}
3031
}

0 commit comments

Comments
 (0)