test(datamart): more work on datamart stuff

This commit is contained in:
2025-12-30 21:04:54 -06:00
parent 9eeede7fbe
commit cc3e823a7d
4 changed files with 172 additions and 6 deletions

View File

@@ -8,9 +8,13 @@ import type { Express } from "express";
import { apiReference } from "@scalar/express-api-reference"; import { apiReference } from "@scalar/express-api-reference";
// const port = 3000; // const port = 3000;
import type { OpenAPIV3_1 } from "openapi-types"; import type { OpenAPIV3_1 } from "openapi-types";
import { datamartAddSpec } from "../scaler/datamartAdd.spec.js";
import { getDatamartSpec } from "../scaler/getDatamart.spec.js";
import { prodLoginSpec } from "../scaler/login.spec.js";
import { prodRestartSpec } from "../scaler/prodSqlRestart.spec.js"; import { prodRestartSpec } from "../scaler/prodSqlRestart.spec.js";
import { prodStartSpec } from "../scaler/prodSqlStart.spec.js"; import { prodStartSpec } from "../scaler/prodSqlStart.spec.js";
import { prodStopSpec } from "../scaler/prodSqlStop.spec.js"; import { prodStopSpec } from "../scaler/prodSqlStop.spec.js";
import { prodRegisterSpec } from "../scaler/register.spec.js";
// all the specs // all the specs
import { statusSpec } from "../scaler/stats.spec.js"; import { statusSpec } from "../scaler/stats.spec.js";
@@ -62,6 +66,10 @@ export const setupApiDocsRoutes = (baseUrl: string, app: Express) => {
...prodStartSpec, ...prodStartSpec,
...prodStopSpec, ...prodStopSpec,
...prodRestartSpec, ...prodRestartSpec,
...prodLoginSpec,
...prodRegisterSpec,
...getDatamartSpec,
...datamartAddSpec,
// Add more specs here as you build features // Add more specs here as you build features
}, },

View File

@@ -4,10 +4,4 @@ export const setupDatamartRoutes = (baseUrl: string, app: Express) => {
//setup all the routes //setup all the routes
app.use(`${baseUrl}/api/datamart`, runQuery); app.use(`${baseUrl}/api/datamart`, runQuery);
app.all("*foo", (_, res) => {
res.status(400).json({
message: "You have encountered a datamart route that dose not exist",
});
});
}; };

View File

@@ -0,0 +1,87 @@
import type { OpenAPIV3_1 } from "openapi-types";
export const datamartAddSpec: OpenAPIV3_1.PathsObject = {
"/api/datamart/add": {
post: {
summary: "Creates the new query",
description: "Queries can only be created on the main server.",
tags: ["Datamart"],
requestBody: {
required: true,
content: {
"application/json": {
schema: {
type: "object",
required: ["username", "password", "email"],
properties: {
username: {
type: "string",
example: "jdoe",
},
name: {
type: "string",
format: "string",
example: "joe",
},
email: {
type: "string",
format: "email",
example: "joe.doe@alpla.net",
},
password: {
type: "string",
format: "password",
example: "superSecretPassword",
},
},
},
},
},
},
responses: {
"200": {
description: "User info",
content: {
"application/json": {
schema: {
type: "object",
properties: {
success: {
type: "boolean",
format: "true",
example: true,
},
message: {
type: "string",
example: "User was created",
},
},
},
},
},
},
"400": {
description: "Invalid Data was sent over",
content: {
"application/json": {
schema: {
type: "object",
properties: {
success: {
type: "boolean",
format: "false",
example: false,
},
message: {
type: "string",
format: "Invalid Data was sent over.",
},
},
},
},
},
},
},
},
},
};

View File

@@ -0,0 +1,77 @@
import type { OpenAPIV3_1 } from "openapi-types";
export const getDatamartSpec: OpenAPIV3_1.PathsObject = {
"/api/datamart/{name}": {
get: {
summary: "Runs the query by name",
description:
"This will allow to run any query by its name and optional parameters to be sent over as well, up to 3 params can be added",
tags: ["Datamart"],
parameters: [
{
name: "name",
in: "path",
required: true,
description: "Name to look up",
schema: {
type: "string",
},
example: "exampleName",
},
{
name: "limit",
in: "query",
required: false, // 👈 optional
description: "Maximum number of records to return",
schema: {
type: "integer",
minimum: 1,
maximum: 100,
},
example: 10,
},
],
responses: {
"200": {
description: "Successful response",
content: {
"application/json": {
schema: {
type: "object",
properties: {
success: { type: "boolean", example: true },
data: {
type: "object",
example: {
name: "exampleName",
value: "some value",
},
},
},
},
},
},
},
"400": {
description: "Bad request",
content: {
"application/json": {
schema: {
type: "object",
properties: {
success: { type: "boolean", example: false },
message: {
type: "string",
example: "Invalid name parameter",
},
},
},
},
},
},
},
},
},
};