basic seach small json data set models and parts
This commit is contained in:
Executable
+110
@@ -0,0 +1,110 @@
|
||||
#!/bin/zsh
|
||||
|
||||
echo "📡 Creating API Layer for RC Compatibility App..."
|
||||
|
||||
BASE="src/app/api"
|
||||
|
||||
#############################################
|
||||
# CREATE DIRECTORY STRUCTURE
|
||||
#############################################
|
||||
|
||||
mkdir -p "$BASE/models"
|
||||
mkdir -p "$BASE/models/[id]"
|
||||
mkdir -p "$BASE/parts"
|
||||
mkdir -p "$BASE/parts/[id]"
|
||||
mkdir -p "$BASE/compatibility/model/[id]"
|
||||
mkdir -p "$BASE/compatibility/part/[id]"
|
||||
|
||||
#############################################
|
||||
# MODELS → /api/models
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/models/route.js" << 'EOF'
|
||||
import { MODELS } from "@/src/lib/data/models";
|
||||
|
||||
export async function GET() {
|
||||
return Response.json(MODELS);
|
||||
}
|
||||
EOF
|
||||
|
||||
#############################################
|
||||
# MODEL BY ID → /api/models/[id]
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/models/[id]/route.js" << 'EOF'
|
||||
import { MODELS } from "@/src/lib/data/models";
|
||||
|
||||
export async function GET(request, { params }) {
|
||||
const model = MODELS.find(m => m.id === params.id);
|
||||
if (!model) {
|
||||
return Response.json({ error: "Model not found" }, { status: 404 });
|
||||
}
|
||||
return Response.json(model);
|
||||
}
|
||||
EOF
|
||||
|
||||
#############################################
|
||||
# PARTS → /api/parts
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/parts/route.js" << 'EOF'
|
||||
import { PARTS } from "@/src/lib/data/parts";
|
||||
|
||||
export async function GET() {
|
||||
return Response.json(PARTS);
|
||||
}
|
||||
EOF
|
||||
|
||||
#############################################
|
||||
# PART BY ID → /api/parts/[id]
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/parts/[id]/route.js" << 'EOF'
|
||||
import { PARTS } from "@/src/lib/data/parts";
|
||||
|
||||
export async function GET(request, { params }) {
|
||||
const part = PARTS.find(p => p.id === params.id);
|
||||
if (!part) {
|
||||
return Response.json({ error: "Part not found" }, { status: 404 });
|
||||
}
|
||||
return Response.json(part);
|
||||
}
|
||||
EOF
|
||||
|
||||
#############################################
|
||||
# MODEL COMPATIBILITY → /api/compatibility/model/[id]
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/compatibility/model/[id]/route.js" << 'EOF'
|
||||
import { getCompatibleParts } from "@/src/lib/compatibility/engine";
|
||||
|
||||
export async function GET(request, { params }) {
|
||||
const results = getCompatibleParts(params.id);
|
||||
|
||||
if (!results.length) {
|
||||
return Response.json({ error: "No compatible parts or model not found" }, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json(results);
|
||||
}
|
||||
EOF
|
||||
|
||||
#############################################
|
||||
# PART COMPATIBILITY → /api/compatibility/part/[id]
|
||||
#############################################
|
||||
|
||||
cat > "$BASE/compatibility/part/[id]/route.js" << 'EOF'
|
||||
import { getCrossCompatibleModels } from "@/src/lib/compatibility/engine";
|
||||
|
||||
export async function GET(request, { params }) {
|
||||
const results = getCrossCompatibleModels(params.id);
|
||||
|
||||
if (!results.length) {
|
||||
return Response.json({ error: "No compatible models or part not found" }, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json(results);
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "🎉 API Layer created successfully!"
|
||||
Reference in New Issue
Block a user