main
alex 2024-01-23 23:26:35 +01:00
parent 4f8ecc6bc8
commit 5df021d4d2
2 changed files with 64 additions and 36 deletions

View File

@ -20,6 +20,8 @@ import swaggerJsDoc from "swagger-jsdoc";
import syncModels from "./src/models/index"; import syncModels from "./src/models/index";
import logger from "./src/logger/logger"; import logger from "./src/logger/logger";
import passport from "passport"; import passport from "passport";
import fs from "fs-extra";
import { cloneWebsiteTemplate } from "./src/controllers/websiteController";
const app: Express = express(); const app: Express = express();
const host = process.env.HOST || "localhost"; const host = process.env.HOST || "localhost";
const port = Number(process.env.PORT) || 3000; const port = Number(process.env.PORT) || 3000;
@ -130,6 +132,29 @@ app.use((err: any, req: any, res: any, next: any) => {
syncModels(); syncModels();
// create tmp folder if not exists
[
process.env.WEBSITE_BUILDER_TMP_DIR as string,
process.env.WEBSITE_BUILDER_TMP_CUSTOMER_WEBSITES_DIR as string,
].forEach((dir) => {
fs.mkdir(dir, { recursive: true }, (err) => {
if (err) throw err;
});
});
// clone website template if not exists
if (
!fs.pathExistsSync(
process.env.WEBSITE_BUILDER_TMP_DIR_WEBSITE_TEMPLATE as string
)
) {
cloneWebsiteTemplate();
}
// start server
app.listen(port, host, () => app.listen(port, host, () =>
logger.info(`⚡️[server]: Server is running at http://${host}:${port}`) logger.info(`⚡️[server]: Server is running at http://${host}:${port}`)
); );

View File

@ -11,11 +11,19 @@ const execPromise = util.promisify(exec);
// this is a webhook that will be called by github when a new commit is pushed to the website template repository // this is a webhook that will be called by github when a new commit is pushed to the website template repository
export async function UpdateTemplateWebhook(req: Request, res: Response) { export async function UpdateTemplateWebhook(req: Request, res: Response) {
try { try {
await cloneWebsiteTemplate();
res.status(200).send({ message: "ok" });
} catch (error) {
console.log("error", error);
res.status(500).send({ error: "invalid request" });
}
}
export async function cloneWebsiteTemplate() {
let tmpDirWebsiteTemplate = process.env let tmpDirWebsiteTemplate = process.env
.WEBSITE_BUILDER_TMP_DIR_WEBSITE_TEMPLATE as string; .WEBSITE_BUILDER_TMP_DIR_WEBSITE_TEMPLATE as string;
logger.info("UpdateTemplateWebhook", req.body);
// if website folder exists, pull, else clone // if website folder exists, pull, else clone
if (await fs.pathExists(tmpDirWebsiteTemplate)) { if (await fs.pathExists(tmpDirWebsiteTemplate)) {
@ -23,13 +31,13 @@ export async function UpdateTemplateWebhook(req: Request, res: Response) {
cwd: tmpDirWebsiteTemplate, cwd: tmpDirWebsiteTemplate,
}); });
console.log(stdout); console.debug(stdout);
} else { } else {
let { stdout } = await execPromise( let { stdout } = await execPromise(
`git clone ${process.env.WEBSITE_BUILDER_TEMPLATE_REPOSITORY_URL} ${tmpDirWebsiteTemplate}` `git clone ${process.env.WEBSITE_BUILDER_TEMPLATE_REPOSITORY_URL} ${tmpDirWebsiteTemplate}`
); );
console.log(stdout); console.debug(stdout);
} }
// execute npm install // execute npm install
@ -38,13 +46,8 @@ export async function UpdateTemplateWebhook(req: Request, res: Response) {
cwd: tmpDirWebsiteTemplate, cwd: tmpDirWebsiteTemplate,
}); });
console.log(installOutput); console.debug(installOutput);
console.debug("website template cloned");
res.status(200).send({ message: "ok" });
} catch (error) {
console.log("error", error);
res.status(500).send({ error: "invalid request" });
}
} }
export async function CreateWebsite(req: Request, res: Response) { export async function CreateWebsite(req: Request, res: Response) {
@ -87,13 +90,6 @@ export async function CreateWebsite(req: Request, res: Response) {
const storeName = store.name.toLowerCase().replace(/ /g, "-"); const storeName = store.name.toLowerCase().replace(/ /g, "-");
// create database record
await Website.create({
website_id: storeName,
store_id: storeId,
});
const tmpDirWebsiteTemplate = process.env const tmpDirWebsiteTemplate = process.env
.WEBSITE_BUILDER_TMP_DIR_WEBSITE_TEMPLATE as string; .WEBSITE_BUILDER_TMP_DIR_WEBSITE_TEMPLATE as string;
const tmpDirCustomerWebsite = `${process.env.WEBSITE_BUILDER_TMP_DIR}/${storeName}`; const tmpDirCustomerWebsite = `${process.env.WEBSITE_BUILDER_TMP_DIR}/${storeName}`;
@ -118,7 +114,7 @@ export async function CreateWebsite(req: Request, res: Response) {
cwd: tmpDirCustomerWebsite, cwd: tmpDirCustomerWebsite,
}); });
console.log(buildOutput); console.debug(buildOutput);
// copy the build folder to customer websites folder // copy the build folder to customer websites folder
@ -128,6 +124,13 @@ export async function CreateWebsite(req: Request, res: Response) {
await fs.remove(tmpDirCustomerWebsite); await fs.remove(tmpDirCustomerWebsite);
// create database record
await Website.create({
website_id: storeName,
store_id: storeId,
});
res.status(200).send({ message: "oks" }); res.status(200).send({ message: "oks" });
} catch (error) { } catch (error) {
console.log("error", error); console.log("error", error);