|
|
@ -18,6 +18,7 @@ let CONFIGURED = false; |
|
|
|
nunjucks.configure("templates", { watch: true }); |
|
|
|
nunjucks.configure("templates", { watch: true }); |
|
|
|
|
|
|
|
|
|
|
|
const configure = async (fastify, opts) => { |
|
|
|
const configure = async (fastify, opts) => { |
|
|
|
|
|
|
|
const app = fastify(opts); |
|
|
|
|
|
|
|
|
|
|
|
// MAGIC: this is how you trick the importer to reload modules
|
|
|
|
// MAGIC: this is how you trick the importer to reload modules
|
|
|
|
// that have changed. Since it uses a URL you can add a query
|
|
|
|
// that have changed. Since it uses a URL you can add a query
|
|
|
@ -25,15 +26,14 @@ const configure = async (fastify, opts) => { |
|
|
|
// tags the module as being "new" when it's still the same file
|
|
|
|
// tags the module as being "new" when it's still the same file
|
|
|
|
// TODO: maybe use fs timestamps instead?
|
|
|
|
// TODO: maybe use fs timestamps instead?
|
|
|
|
// BUG: sometimes reload is too fast for vim and crashes
|
|
|
|
// BUG: sometimes reload is too fast for vim and crashes
|
|
|
|
const controller = await import(`../controllers/todo.js?update=${new Date()}`); |
|
|
|
const control_mod = await import(`../controllers/todo.js?update=${new Date()}`); |
|
|
|
|
|
|
|
|
|
|
|
const handler = new controller.Todo(); |
|
|
|
|
|
|
|
const app = fastify(opts); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// this is a sample that uses the handler we dynamic load
|
|
|
|
// this is a sample that uses the handler we dynamic load
|
|
|
|
// to handle the /todo but not sure how to work the actual
|
|
|
|
// to handle the /todo but not sure how to work the actual
|
|
|
|
// URL mappings for it. Also not sure about using classes
|
|
|
|
// URL mappings for it. Also not sure about using classes
|
|
|
|
app.get("/todo", async (req, rep) => { |
|
|
|
for(let [url, controller] of Object.entries(control_mod.default)) { |
|
|
|
|
|
|
|
const handler = new controller(); |
|
|
|
|
|
|
|
app.get(`/${url}`, async (req, rep) => { |
|
|
|
try { |
|
|
|
try { |
|
|
|
await handler.get(req, rep); |
|
|
|
await handler.get(req, rep); |
|
|
|
} catch(error) { |
|
|
|
} catch(error) { |
|
|
@ -42,6 +42,7 @@ const configure = async (fastify, opts) => { |
|
|
|
console.error(error.source); |
|
|
|
console.error(error.source); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
app.register(FastifyStatic, { |
|
|
|
app.register(FastifyStatic, { |
|
|
|
root: path.join(path.resolve("."), 'static'), |
|
|
|
root: path.join(path.resolve("."), 'static'), |
|
|
|