feat(settings): final migration of settings and edits added

This commit is contained in:
2025-11-25 14:36:06 -06:00
parent 3193e07e47
commit 7e15e5d7bc
11 changed files with 760 additions and 522 deletions

View File

@@ -5,66 +5,31 @@ import { Router } from "express";
import https from "https";
import { db } from "../../../../pkg/db/db.js";
import { serverData } from "../../../../pkg/db/schema/servers.js";
import { settings } from "../../../../pkg/db/schema/settings.js";
import { createLogger } from "../../../../pkg/logger/logger.js";
import { tryCatch } from "../../../../pkg/utils/tryCatch.js";
const router = Router();
router.patch("/:token", async (req: Request, res: Response) => {
const log = createLogger({ module: "admin", subModule: "update server" });
router.patch("/:id", async (req: Request, res: Response) => {
const log = createLogger({ module: "admin", subModule: "update setting" });
// when a server is updated and is posted from localhost or 127.0.0.1 we also want to post it to the test server so we can see it from there, we want to insert with update on conflict.
const token = req.params.token;
const id = req.params.id;
const updates: Record<string, any> = {};
if (req.body?.name !== undefined) {
updates.name = req.body.name;
}
if (req.body?.serverDNS !== undefined) {
updates.serverDNS = req.body.serverDNS;
if (req.body?.value !== undefined) {
updates.value = req.body.value;
}
if (req.body?.ipAddress !== undefined) {
updates.ipAddress = req.body.ipAddress;
if (req.body?.description !== undefined) {
updates.description = req.body.description;
}
if (req.body?.greatPlainsPlantCode !== undefined) {
updates.greatPlainsPlantCode = req.body.greatPlainsPlantCode;
}
if (req.body?.lstServerPort !== undefined) {
updates.lstServerPort = req.body.lstServerPort;
}
if (req.body?.serverLoc !== undefined) {
updates.serverLoc = req.body.serverLoc;
}
if (req.body?.streetAddress !== undefined) {
updates.streetAddress = req.body.streetAddress;
}
if (req.body?.cityState !== undefined) {
updates.cityState = req.body.cityState;
}
if (req.body?.zipcode !== undefined) {
updates.zipcode = req.body.zipcode;
}
if (req.body?.contactEmail !== undefined) {
updates.contactEmail = req.body.contactEmail;
}
if (req.body?.contactPhone !== undefined) {
updates.contactPhone = req.body.contactPhone;
}
if (req.body?.customerTiAcc !== undefined) {
updates.customerTiAcc = req.body.customerTiAcc;
}
if (req.body?.active !== undefined) {
updates.active = req.body.active;
if (req.body?.moduleName !== undefined) {
updates.moduleName = req.body.moduleName;
}
updates.upd_user = req.user!.username || "lst_user";
@@ -73,65 +38,12 @@ router.patch("/:token", async (req: Request, res: Response) => {
try {
if (Object.keys(updates).length > 0) {
await db
.update(serverData)
.update(settings)
.set(updates)
.where(eq(serverData.plantToken, token));
.where(eq(settings.settings_id, id));
}
if (req.hostname === "localhost" && process.env.MAIN_SERVER) {
log.info({}, "Running in dev server about to add in a new server");
const axiosInstance = axios.create({
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
baseURL: process.env.MAIN_SERVER,
withCredentials: true,
});
const loginRes = (await axiosInstance.post(
`${process.env.MAIN_SERVER}/lst/api/auth/sign-in/username`,
{
username: process.env.MAIN_SERVER_USERNAME,
password: process.env.MAIN_SERVER_PASSWORD,
},
{
headers: { "Content-Type": "application/json" },
},
)) as any;
const setCookie = loginRes?.headers["set-cookie"][0];
//console.log(setCookie.split(";")[0].replace("__Secure-", ""));
if (!setCookie) {
throw new Error("Did not receive a Set-Cookie header from login");
}
const { data, error } = await tryCatch(
axios.patch(
`${process.env.MAIN_SERVER}/lst/api/admin/server/${token}`,
updates,
{
headers: {
"Content-Type": "application/json",
Cookie: setCookie.split(";")[0],
},
withCredentials: true,
},
),
);
if (error) {
console.log(error);
log.error(
{ stack: error },
"There was an error adding the server to Main Server",
);
}
log.info(
{ stack: data?.data },
"A new Server was just added to the server.",
);
}
res.status(200).json({ message: `${token} Server was just updated` });
res.status(200).json({ message: `Setting was just updated` });
} catch (error) {
console.log(error);
res.status(400).json({ message: "Error Server updated", error });

View File

@@ -65,8 +65,6 @@ export const addListeners = async () => {
// all the migration stuff that will need to be moved later build 230 and above will need to remove
export const manualFixes = async () => {
const fixQuery = `ALTER TABLE "serverData" ADD CONSTRAINT "serverData_name_unique" UNIQUE("name");`;
const log = createLogger({ module: "utils", subModule: "manual fixes" });
const client = new Client({
connectionString: `postgresql://${process.env.DATABASE_USER}:${process.env.DATABASE_PASSWORD}@${process.env.DATABASE_HOST}:${process.env.DATABASE_PORT}/${process.env.DATABASE_DB}`,
@@ -74,12 +72,16 @@ export const manualFixes = async () => {
await client.connect();
try {
log.info({}, "Running the manual fix");
await client.query(fixQuery);
} catch (e) {
log.info({ error: e }, "Fix was not completed");
}
/**
* The fix to correct the constraint on the server data
*/
// const fixQuery = `ALTER TABLE "serverData" ADD CONSTRAINT "serverData_name_unique" UNIQUE("name");`;
// try {
// log.info({}, "Running the manual fix");
// await client.query(fixQuery);
// } catch (e) {
// log.info({ error: e }, "Fix was not completed");
// }
};
export const settingsMigrate = async () => {