Netra / frontend /src /api.js
chikentikka's picture
Add Challans page surfacing the MongoDB challan evidence store
0fd3a61
Raw
History Blame Contribute Delete
2.36 kB
import axios from "axios";
const baseURL = import.meta.env.VITE_API_URL || "http://localhost:8000/api";
export const api = axios.create({ baseURL });
export const uploadImage = (file, location) => {
const form = new FormData();
form.append("file", file);
if (location) form.append("location", location);
return api.post("/upload", form).then((r) => r.data);
};
export const uploadVideo = (file, location) => {
const form = new FormData();
form.append("file", file);
if (location) form.append("location", location);
return api.post("/video-upload", form).then((r) => r.data);
};
export const getViolations = (params) =>
api.get("/violations", { params }).then((r) => r.data);
export const updateViolationStatus = (id, status) =>
api.patch(`/violations/${id}`, { status }).then((r) => r.data);
export const getViolationEvidence = (id) =>
api.get(`/violations/${id}/evidence`).then((r) => r.data);
export const getSummary = () =>
api.get("/analytics/summary").then((r) => r.data);
export const getByType = () =>
api.get("/analytics/by-type").then((r) => r.data);
export const getRules = () =>
api.get("/rules").then((r) => r.data);
export const getTrends = () =>
api.get("/analytics/trends").then((r) => r.data);
export const getTopPlates = () =>
api.get("/analytics/top-plates").then((r) => r.data);
export const API_ORIGIN = baseURL.replace(/\/api\/?$/, "");
// Build a servable evidence URL from a stored annotated-image path (any OS separator).
export const evidenceUrl = (path) =>
path ? `${API_ORIGIN}/evidence/${String(path).split(/[\\/]/).pop()}` : null;
export const getHealth = () =>
axios.get(`${API_ORIGIN}/health`).then((r) => r.data);
// ── Challan evidence store (MongoDB) ──────────────────────────────────────
export const getChallanTree = () =>
api.get("/challans").then((r) => r.data);
export const getChallanList = (params) =>
api.get("/challans/list", { params }).then((r) => r.data);
export const issueChallan = (id) =>
api.patch(`/challans/${id}/issue`).then((r) => r.data);
// Challan crops are served from the backend's /challans static mount; the API
// returns an evidence_url like "/challans/two_wheeler/HELMET/uuid.jpg".
export const challanUrl = (url) => (url ? `${API_ORIGIN}${url}` : null);