const buildPages = require('./buildpages') const routes = require('./routes')() const routesConfig = require('../config/routes') const database = require('../config/database') const {on} = require('nodemailer/lib/xoauth2') const template = require('../template/template') let buildpages = null class Controller { constructor(data) { this.baseURL = data.baseURL this.data = { req: data.req, res: data.res } buildpages = buildPages({ baseURL: data.baseURL, routes: new Map() }) buildpages = buildpages.build this.routes = buildPages.routes this.buildPages = buildPages.build this.app = data.app this.addRoute = this.#SetupRoutes({ app: data.app, validateCookie: data.validateCookie, log: data.log, mime: data.mime, session: data.session, logger: data.logger, database: database }).addRoute /* const temp = this.#GetRoutes({ validateCookie: data.validateCookie, log: data.log, mime: data.mime, session: data.session }) */ } Init(data) { const template = this.#GetTemplate(data) //console.log(template) return {template: template} } RoutesTemplate(data) { const inputData = data const template = this.#GetTemplate(inputData) return {template: template} } #SetupRoutes(data) { return routesConfig({ app: data.app, validateCookie: data.validateCookie, log: data.log, mime: data.mime, session: data.session, template: this.#GetTemplate, database: data.database }) } #IsAsync(x) {return buildpages.IsAsync(x)} #GetTemplate(data) { const query = new Map() Object.entries(data.req.query).forEach(([key, value]) => { query.set(key, value) }) const object = {} if (query.size > 0) { object.req = data.req object.res = data.res object.path = data.path object.query = query object.baseURL = data.baseURL object.routeData = { routes: routes.GetPages() } object.database = database const output = (buildpages.Build(object)) return output } else { object.req = data.req object.res = data.res object.path = data.path object.query = null object.baseURL = data.baseURL object.routeData = { routes: routes.GetPages(), } object.database = database return buildpages.Template(object) } } //#GetRoutes(data) {const allRoutes = routes.GetAllPages()} } module.exports = (x) => {return new Controller(x)}