Browse Source

Get configuration by group

moell 1 year ago
parent
commit
4f3c28e731

+ 33 - 0
app/Http/Controllers/API/ConfigController.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Http\Controllers\API;
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\API\Config\SettingRequest;
+use App\Models\Config;
+use Illuminate\Http\Request;
+
+class ConfigController extends Controller
+{
+    public function index(Request $request)
+    {
+        $groups = $request->get("group", []);
+
+        $data = [];
+
+        if ($groups) {
+            $data = Config::query()->whereIn("group", $groups)->get([
+                'group', 'key', 'value'
+            ])->groupBy("group");
+        }
+
+        return $this->success([
+            'data' => $data
+        ]);
+    }
+
+    public function setting(SettingRequest $request)
+    {
+
+    }
+}

+ 29 - 0
app/Http/Requests/API/Config/SettingRequest.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace App\Http\Requests\API\Config;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class SettingRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
+     */
+    public function rules(): array
+    {
+        return [
+            "group" => "required",
+            ""
+        ];
+    }
+}

+ 11 - 0
app/Models/Config.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Config extends Model
+{
+    use HasFactory;
+}

+ 30 - 0
database/migrations/2024_03_04_212018_create_configs_table.php

@@ -0,0 +1,30 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::create('configs', function (Blueprint $table) {
+            $table->id();
+            $table->string("group", 100);
+            $table->string("key", 100);
+            $table->string("value")->nullable();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::dropIfExists('configs');
+    }
+};

+ 3 - 0
routes/api.php

@@ -84,5 +84,8 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::delete("folder/{folder}", [API\FolderController::class, "destroy"])->name("folder.destroy");
 
         Route::post("requirement/batch", [API\RequirementController::class, "batchStore"])->name("requirement.batchStore");
+
+        Route::get("config", [API\ConfigController::class, "index"])->name("config.index");
+        Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
     });
 });