Add helpers and types for BFF API
This commit is contained in:
parent
d626c2a498
commit
9dbd93a430
5 changed files with 89 additions and 0 deletions
16
lib/api/cmFetch.ts
Normal file
16
lib/api/cmFetch.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { RequestInit } from "next/dist/server/web/spec-extension/request";
|
||||||
|
|
||||||
|
const FRONTEND_URL = process.env.FRONTEND_URL;
|
||||||
|
|
||||||
|
export async function cmFetch<T>(
|
||||||
|
bffUrl: string | URL,
|
||||||
|
options?: RequestInit,
|
||||||
|
): Promise<T> {
|
||||||
|
const response = await fetch(`${FRONTEND_URL}/${bffUrl}`, options);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error("Request failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
0
lib/api/helpers/projects.ts
Normal file
0
lib/api/helpers/projects.ts
Normal file
26
lib/api/helpers/services.ts
Normal file
26
lib/api/helpers/services.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { cmFetch } from "../cmFetch";
|
||||||
|
import { Service } from "../types";
|
||||||
|
|
||||||
|
export async function getServices() {
|
||||||
|
return cmFetch<Service[]>(`/api/services`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getService(id: number) {
|
||||||
|
return cmFetch<Service>(`/api/services/${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createService(service: Service) {
|
||||||
|
return cmFetch<Service>(`/api/services`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify(service),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function deleteService(id: number) {
|
||||||
|
return cmFetch<Service>(`/api/services/${id}`, {
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
}
|
||||||
18
lib/api/helpers/users.ts
Normal file
18
lib/api/helpers/users.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
export async function getUsers() {
|
||||||
|
const response = await fetch("/api/users");
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Response status: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getUser(id: number) {
|
||||||
|
const response = await fetch(`/api/users/${id}`);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Response status: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
29
lib/api/types.ts
Normal file
29
lib/api/types.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
export interface User {
|
||||||
|
id: number | null;
|
||||||
|
|
||||||
|
username: string;
|
||||||
|
|
||||||
|
authority: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Service {
|
||||||
|
id: number | null;
|
||||||
|
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
description: string | null;
|
||||||
|
|
||||||
|
priority: number;
|
||||||
|
|
||||||
|
link: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Project {
|
||||||
|
id: number | null;
|
||||||
|
|
||||||
|
parent_id: number | null;
|
||||||
|
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
content: string | null;
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue