summaryrefslogtreecommitdiff
path: root/src/controller.js
blob: 1f46db5a6ceb9eafe6b168d7d5714e907f7311ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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)}