-
Notifications
You must be signed in to change notification settings - Fork 33
/
comment.js
76 lines (56 loc) · 1.7 KB
/
comment.js
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
'use strict';
const Joi = require('@hapi/joi');
const { Model } = require('./helpers');
const internals = {};
module.exports = class Comment extends Model {
static get tableName() {
return 'Comments';
}
static get joiSchema() {
return Joi.object({
id: Joi.number().integer().greater(0),
createdAt: Joi.date(),
updatedAt: Joi.date(),
authorId: Joi.number().integer().greater(0).required(),
articleId: Joi.number().integer().greater(0).required(),
body: Joi.string().required()
});
}
static get relationMappings() {
const User = require('./user');
const Article = require('./article');
return {
author: {
relation: Model.BelongsToOneRelation,
modelClass: User,
join: {
from: 'Comments.authorId',
to: 'Users.id'
}
},
article: {
relation: Model.BelongsToOneRelation,
modelClass: Article,
join: {
from: 'Comments.articleId',
to: 'Articles.id'
}
}
};
}
$beforeInsert(ctx) {
const now = new Date();
this.createdAt = now;
this.updatedAt = now;
}
$beforeUpdate(opt, ctx) {
const now = new Date();
this.updatedAt = now;
}
$parseDatabaseJson(json) {
json = super.$parseDatabaseJson(json);
json.createdAt = json.createdAt && new Date(json.createdAt);
json.updatedAt = json.updatedAt && new Date(json.updatedAt);
return json;
}
};