52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { GridColDef } from "@mui/x-data-grid-pro";
|
|
import { Database } from "./database";
|
|
|
|
const entities = [
|
|
"facebook",
|
|
"whatsapp",
|
|
"signal",
|
|
"voice",
|
|
"webhook",
|
|
"user",
|
|
] as const;
|
|
|
|
export type Entity = (typeof entities)[number];
|
|
|
|
export type FieldDescription = {
|
|
name: string;
|
|
type: string;
|
|
label: string;
|
|
lines?: number;
|
|
copyable?: boolean;
|
|
defaultValue?: string;
|
|
required?: boolean;
|
|
disabled?: boolean;
|
|
size?: number;
|
|
helperText?: string;
|
|
};
|
|
|
|
export type ServiceConfig = {
|
|
entity: Entity;
|
|
table: keyof Database;
|
|
displayName: string;
|
|
createFields: FieldDescription[];
|
|
updateFields: FieldDescription[];
|
|
displayFields: FieldDescription[];
|
|
listColumns: GridColDef[];
|
|
};
|
|
|
|
export type Service = {
|
|
getAllBots: (req: NextRequest) => Promise<NextResponse>;
|
|
getOneBot: (req: NextRequest) => Promise<NextResponse>;
|
|
sendMessage: (req: NextRequest) => Promise<NextResponse>;
|
|
receiveMessages: (req: NextRequest) => Promise<NextResponse>;
|
|
registerBot: (req: NextRequest) => Promise<NextResponse>;
|
|
resetBot: (req: NextRequest) => Promise<NextResponse>;
|
|
requestCode: (req: NextRequest) => Promise<NextResponse>;
|
|
unverifyBot: (req: NextRequest) => Promise<NextResponse>;
|
|
refreshBot: (req: NextRequest) => Promise<NextResponse>;
|
|
createBot: (req: NextRequest) => Promise<NextResponse>;
|
|
deleteBot: (req: NextRequest) => Promise<NextResponse>;
|
|
handleWebhook: (req: NextRequest) => Promise<NextResponse>;
|
|
};
|