Skip to content

Commit 4b103a7

Browse files
committed
explicit email templates init #111
1 parent 90d4148 commit 4b103a7

File tree

5 files changed

+29
-33
lines changed

5 files changed

+29
-33
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,7 @@ node_modules/
1616
book/8-exp
1717
tutorials/working
1818

19-
yarn-error.log
19+
yarn-error.log
20+
.directory
21+
*.code-workspace
22+
package-lock.json

book/4-end/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@
5050
"eslint-plugin-prettier": "^3.0.0",
5151
"prettier": "^1.15.3"
5252
}
53-
}
53+
}

book/4-end/server/app.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import mongoose from 'mongoose';
77
import auth from './google';
88

99
import logger from './logs';
10+
import { insertTemplates } from './models/EmailTemplate';
1011

1112
require('dotenv').config();
1213

@@ -29,7 +30,7 @@ const ROOT_URL = `http://localhost:${port}`;
2930
const app = next({ dev });
3031
const handle = app.getRequestHandler();
3132

32-
app.prepare().then(() => {
33+
app.prepare().then(async () => {
3334
const server = express();
3435

3536
const MongoStore = mongoSessionStore(session);
@@ -49,7 +50,7 @@ app.prepare().then(() => {
4950
};
5051

5152
server.use(session(sess));
52-
53+
await insertTemplates();
5354
auth({ server, ROOT_URL });
5455

5556
server.get('*', (req, res) => handle(req, res));

book/4-end/server/models/EmailTemplate.js

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,21 @@ const mongoSchema = new Schema({
2222

2323
const EmailTemplate = mongoose.model('EmailTemplate', mongoSchema);
2424

25-
function insertTemplates() {
25+
export default async function getEmailTemplate(name, params) {
26+
const source = await EmailTemplate.findOne({ name });
27+
if (!source) {
28+
throw new Error(`No EmailTemplates found.
29+
Please check that at least one is generated at server startup,
30+
restart your server and try again.`);
31+
}
32+
33+
return {
34+
message: _.template(source.message)(params),
35+
subject: _.template(source.subject)(params),
36+
};
37+
}
38+
39+
export async function insertTemplates() {
2640
const templates = [
2741
{
2842
name: 'welcome',
@@ -41,30 +55,11 @@ function insertTemplates() {
4155
];
4256

4357
templates.forEach(async (template) => {
44-
if ((await EmailTemplate.find({ name: template.name }).countDocuments()) > 0) {
45-
return;
58+
try {
59+
await EmailTemplate.updateOne({ name: template.name }, template, { upsert: true });
60+
} catch (error) {
61+
logger.error('EmailTemplate insertion error:', error);
62+
throw error;
4663
}
47-
48-
EmailTemplate
49-
.create(template)
50-
.catch((error) => {
51-
logger.error('EmailTemplate insertion error:', error);
52-
});
5364
});
5465
}
55-
56-
insertTemplates();
57-
58-
export default async function getEmailTemplate(name, params) {
59-
const source = await EmailTemplate.findOne({ name });
60-
if (!source) {
61-
throw new Error(`No EmailTemplates found.
62-
Please check that at least one is generated at server startup,
63-
restart your server and try again.`);
64-
}
65-
66-
return {
67-
message: _.template(source.message)(params),
68-
subject: _.template(source.subject)(params),
69-
};
70-
}

server/app.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ mongoose.connect(
3636

3737
const sessionSecret = process.env.SESSION_SECRET;
3838

39-
const URL_MAP = {
40-
'/login': '/public/login',
41-
'/my-books': '/customer/my-books',
42-
};
39+
const URL_MAP = { '/login': '/public/login', '/my-books': '/customer/my-books' };
4340

4441
const app = next({ dev });
4542
const handle = app.getRequestHandler();

0 commit comments

Comments
 (0)