import { OpenAPIHono } from "@hono/zod-openapi";
import { apiReference } from "@scalar/hono-api-reference";
import { settings } from "../../../../database/schema/settings.js";
import { db } from "../../../../database/dbclient.js";
import { eq } from "drizzle-orm";
import { getSettings } from "../../server/controller/settings/getSettings.js";

const app = new OpenAPIHono();
const serverSettings = await getSettings();
const plantToken = serverSettings.filter((n) => n.name === "plantToken") as any; //await db.select().from(settings).where(eq(settings.name, "plantToken"));

let pToken = plantToken[0]?.value;
const testServers = ["test1", "test2", "test3"];
if (testServers.includes(plantToken[0]?.value)) {
    pToken = "usbow1";
}
app.get(
    "/docs",
    apiReference({
        theme: "kepler",
        layout: "classic",
        defaultHttpClient: { targetKey: "node", clientKey: "axios" },
        pageTitle: "Lst API Reference",
        hiddenClients: [
            "libcurl",
            "clj_http",
            "httpclient",
            "restsharp",
            "native",
            "http1.1",
            "asynchttp",
            "nethttp",
            "okhttp",
            "unirest",
            "xhr",
            "fetch",
            "jquery",
            "okhttp",
            "native",
            "request",
            "unirest",
            "nsurlsession",
            "cohttp",
            "curl",
            "guzzle",
            "http1",
            "http2",
            "webrequest",
            "restmethod",
            "python3",
            "requests",
            "httr",
            "native",
            "curl",
            "httpie",
            "wget",
            "nsurlsession",
            "undici",
        ],

        url: "/api/ref",

        baseServerURL: "https://scalar.com",
        servers: [
            {
                url: `http://${pToken}vms006:${process.env.VITE_SERVER_PORT}`,
                description: "Production",
            },
            {
                url: `http://localhost:${process.env.VITE_SERVER_PORT}`,
                description: "dev server",
            },
        ],
        // authentication: {
        //     preferredSecurityScheme: {'bearerAuth'},
        // },

        // metaData: {
        //     title: "Page title",
        //     description: "My page page",
        //     ogDescription: "Still about my my page",
        //     ogTitle: "Page title",
        //     ogImage: "https://example.com/image.png",
        //     twitterCard: "summary_large_image",
        //     // Add more...
        // },
    })
);

export default app;
