-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRouter.js
More file actions
95 lines (87 loc) · 2.73 KB
/
Copy pathRouter.js
File metadata and controls
95 lines (87 loc) · 2.73 KB
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
const { getModulesList, getModule } = require("@notores/core/ModuleHandler");
class AdminRouter {
static async dashboard(req, res, next) {
res.locals.setBody({});
next();
}
static async listModules(req, res, next) {
const modules = getModulesList().map(mod => ({
name: mod.name,
models: []
}));
modules.forEach(module => {
const mod = getModule(module.name);
const models = Object.keys(mod.models);
if (models.length >= 1) {
module.models = models;
}
});
res.locals.setBody({
modules: modules
});
next();
}
static async listModels(req, res, next) {
const module = getModule(req.params.module);
if (module.installed) {
const models = Object.keys(module.models).map(key => {
return ({
name: module.models[key].modelName,
fields: Object.keys(module.models[key].model.schema)
});
});
res.locals.setBody({
models: models
});
} else {
res.locals.setBody({
models: []
});
}
res.locals.page = 'models';
next();
}
static async getModel(req, res, next) {
const module = getModule(req.params.module);
if (module.installed && module.models[req.params.model]) {
const model = module.models[req.params.model].model;
res.locals.setBody({
model: {
name: model.modelName,
fields: [
{
name: "id",
type: "ObjectId"
},
...Object.keys(model.schema.paths).map(name => ({
name,
type: model.schema.paths[name].instance
}))
]
}
});
} else {
res.locals.setBody({
model: null
});
}
res.locals.page = 'model';
next();
}
static async getModelData(req, res, next) {
const module = getModule(req.params.module);
if (module.installed && module.models[req.params.model]) {
const model = module.models[req.params.model];
console.log("finding for", model.model);
res.locals.setBody({
data: await model.model.find()
});
} else {
res.locals.setBody({
data: null
});
}
next();
}
}
module.exports = AdminRouter;