Vulcan/packages/nova-voting/lib/custom_fields.js

162 lines
3.1 KiB
JavaScript
Raw Normal View History

import PublicationUtils from 'meteor/utilities:smart-publications';
2016-06-23 11:40:35 +09:00
import Posts from "meteor/nova:posts";
2016-06-23 12:17:39 +09:00
import Comments from "meteor/nova:comments";
2016-02-17 12:54:18 +09:00
// ------------------------------------- Posts -------------------------------- //
Posts.addField([
2016-02-17 11:28:00 +09:00
/**
How many upvotes the post has received
*/
{
fieldName: "upvotes",
fieldSchema: {
type: Number,
2016-04-05 16:27:48 +09:00
optional: true,
2016-04-14 09:54:41 +09:00
publish: true,
defaultValue: 0
2016-02-17 11:28:00 +09:00
}
},
/**
An array containing the `_id`s of the post's upvoters
*/
{
fieldName: "upvoters",
fieldSchema: {
type: [String],
2016-04-05 16:27:48 +09:00
optional: true,
publish: true
2016-02-17 11:28:00 +09:00
}
},
/**
How many downvotes the post has received
*/
{
fieldName: "downvotes",
fieldSchema: {
2016-04-05 16:27:48 +09:00
type: Number,
optional: true,
2016-04-14 09:54:41 +09:00
publish: true,
defaultValue: 0
2016-02-17 11:28:00 +09:00
}
},
/**
An array containing the `_id`s of the post's downvoters
*/
{
fieldName: "downvoters",
fieldSchema: {
type: [String],
2016-04-05 16:27:48 +09:00
optional: true,
publish: true
2016-02-17 11:28:00 +09:00
}
},
2016-02-17 12:54:18 +09:00
/**
The post's base score (not factoring in the post's age)
*/
{
fieldName: "baseScore",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
/**
The post's current score (factoring in age)
*/
{
fieldName: "score",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
]);
2016-03-21 10:46:00 +09:00
PublicationUtils.addToFields(Posts.publishedFields.list, ["upvotes", "upvoters", "downvotes", "downvoters", "baseScore", "score"]);
2016-02-17 12:54:18 +09:00
// ------------------------------------- Comments -------------------------------- //
Comments.addField([
/**
The number of upvotes the comment has received
*/
{
fieldName: "upvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
/**
An array containing the `_id`s of upvoters
*/
{
fieldName: "upvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
2016-02-17 12:54:18 +09:00
}
},
/**
The number of downvotes the comment has received
*/
{
fieldName: "downvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
/**
An array containing the `_id`s of downvoters
*/
{
fieldName: "downvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
2016-02-17 12:54:18 +09:00
}
},
/**
The comment's base score (not factoring in the comment's age)
*/
{
fieldName: "baseScore",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
/**
The comment's current score (factoring in age)
*/
{
fieldName: "score",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
2016-04-14 09:54:41 +09:00
defaultValue: 0
2016-02-17 12:54:18 +09:00
}
},
2016-02-17 11:28:00 +09:00
]);
PublicationUtils.addToFields(Comments.publishedFields.list, ["upvotes", "downvotes", "baseScore", "score"]);