feat: changes

This commit is contained in:
Ron
2025-05-29 08:32:13 +03:00
parent 867ba7746d
commit b4313dd815
11 changed files with 797 additions and 46 deletions

View File

@@ -0,0 +1,29 @@
export default defineEventHandler(async (event) => {
const xTagHeader = getRequestHeader(event, "x-tag");
if (!xTagHeader || xTagHeader !== "094ut234") {
throw createError({ statusCode: 401, statusMessage: "unauthenticated" });
}
const query = getQuery(event);
const { id } = query;
if (!id) {
throw createError({ statusCode: 400, statusMessage: "ID is required" });
}
try {
const interest = await getInterestById(id as string);
return interest;
} catch (error) {
if (error instanceof Error) {
throw createError({ statusCode: 500, statusMessage: error.message });
} else {
throw createError({
statusCode: 500,
statusMessage: "An unexpected error occurred",
});
}
}
});

View File

@@ -0,0 +1,10 @@
export default defineEventHandler(async (event) => {
const xTagHeader = getRequestHeader(event, "x-tag");
if (!xTagHeader || xTagHeader !== "094ut234") {
throw createError({ statusCode: 401, statusMessage: "unauthenticated" });
}
const interests = await getInterests();
return interests;
});

38
server/utils/nocodb.ts Normal file
View File

@@ -0,0 +1,38 @@
export interface PageInfo {
pageSize: number;
totalRows: number;
isFirstPage: boolean;
isLastPage: boolean;
page: number;
}
export interface InterestsResponse {
list: Interest[];
PageInfo: PageInfo;
}
export enum Table {
Interest = "mbs9hjauug4eseo",
}
export const getNocoDbConfiguration = () => useRuntimeConfig().nocodb;
export const createTableUrl = (table: Table) =>
`${getNocoDbConfiguration().url}/api/v2/tables/${table}/records`;
export const getInterests = async () =>
$fetch<InterestsResponse>(createTableUrl(Table.Interest), {
headers: {
"xc-token": getNocoDbConfiguration().token,
},
params: {
limit: 1000,
},
});
export const getInterestById = async (id: string) =>
$fetch<Interest>(`${createTableUrl(Table.Interest)}/${id}`, {
headers: {
"xc-token": getNocoDbConfiguration().token,
},
});