visuddhinanda 3 лет назад
Родитель
Сommit
3ca5f76188

+ 75 - 0
app/Http/Controllers/VocabularyController.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Vocabulary;
+use Illuminate\Http\Request;
+use App\Http\Resources\VocabularyResource;
+
+class VocabularyController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        switch ($request->get("view")) {
+            case 'key':
+                $result = Vocabulary::where('word_en','like',$request->get("key")."%")->take(20)->get();
+                if($result){
+                    return $this->ok(['rows'=>VocabularyResource::collection($result),'count'=>count($result)]);
+                }else{
+                    return $this->error();
+                }
+                break;
+        }
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Vocabulary  $vocabulary
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Vocabulary $vocabulary)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Vocabulary  $vocabulary
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Vocabulary $vocabulary)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Vocabulary  $vocabulary
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Vocabulary $vocabulary)
+    {
+        //
+    }
+}

+ 19 - 0
app/Http/Resources/VocabularyResource.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class VocabularyResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return parent::toArray($request);
+    }
+}

+ 13 - 0
app/Models/Vocabulary.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Vocabulary extends Model
+{
+    use HasFactory;
+    protected $fillable = ['word' , 'word_en' , 'count', 'flag'];
+
+}

+ 35 - 0
database/migrations/2023_02_10_052603_create_vocabularies_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateVocabulariesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('vocabularies', function (Blueprint $table) {
+            $table->id();
+            $table->string('word',1024)->index();
+            $table->string('word_en',1024)->index();
+            $table->integer('count');
+            $table->integer('flag')->default(0);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('vocabularies');
+    }
+}

+ 4 - 0
routes/api.php

@@ -32,6 +32,8 @@ use App\Http\Controllers\ShareController;
 use App\Http\Controllers\CourseController;
 use App\Http\Controllers\CourseMemberController;
 use App\Http\Controllers\ExerciseController;
+use App\Http\Controllers\ArticleMapController;
+use App\Http\Controllers\VocabularyController;
 
 /*
 |--------------------------------------------------------------------------
@@ -97,6 +99,8 @@ Route::group(['prefix' => 'v2'],function(){
     Route::get('course-curr', [CourseMemberController::class, 'curr']);
 
     Route::apiResource('exercise',ExerciseController::class);
+    Route::apiResource('article-map',ArticleMapController::class);
+    Route::apiResource('vocabulary',VocabularyController::class);
 
     Route::get('guide/{lang}/{file}', function ($lang,$file) {
         $filename = public_path("app/users_guide/{$lang}/{$file}.md");

+ 22 - 0
tests/Feature/VocabularyTest.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace Tests\Feature;
+
+use Illuminate\Foundation\Testing\RefreshDatabase;
+use Illuminate\Foundation\Testing\WithFaker;
+use Tests\TestCase;
+
+class VocabularyTest extends TestCase
+{
+    /**
+     * A basic feature test example.
+     *
+     * @return void
+     */
+    public function test_index()
+    {
+        $response = $this->get('/api/v2/vocabulary?view=key&key=a');
+
+        $response->assertStatus(200);
+    }
+}