111 lines
2.9 KiB
Bash
Executable File
111 lines
2.9 KiB
Bash
Executable File
#!/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!"
|