Vulcan/packages/nova-voting/lib/custom_fields.js
Xavier Cazalot 7f99b48953 devel - revert commits related to simpl-schema (#1537)
* Revert "add note link to issue in collection2 on mutation insert, remove debug console logs on mutation edit"

This reverts commit 7a15103de7.

* Revert "node simpl-schema + collection2-core: fix vote by specifying the right type of the array (dont use blackbox in the end!)"

This reverts commit e894c3224c.

* Revert "add graphql date type (fix problem with node simple schema), fix an update bug on date picker,  add edit check on custom post item, add `blackbox: true` for arrays field (validation problem with simple-schema)"

This reverts commit 9d84fbec98.

* Revert "use node `simpl-schema` by aldeed to replace `meteor/aldeed:simple-schema` ; use the meteor collection2 core package as recommended"

This reverts commit 016935f4fa.

* revert before node-simple-schema, fix obj.hasOwnProperty undefined error thrown by simple-schema & collection2

* CustomPostsItem: check on renderActions; withDocument/List: pollInterval 20seconds by default; DateTime form component enhancement + GraphQLDate type
2017-01-11 18:02:12 +01:00

243 lines
4.4 KiB
JavaScript

import Users from "meteor/nova:users";
import Posts from "meteor/nova:posts";
import Comments from "meteor/nova:comments";
/**
* @summary Vote schema
* @type {SimpleSchema}
*/
const voteSchema = new SimpleSchema({
itemId: {
type: String
},
power: {
type: Number,
optional: true
},
votedAt: {
type: Date,
optional: true
}
});
Users.addField([
/**
An array containing comments upvotes
*/
{
fieldName: '__upvotedComments',
fieldSchema: {
type: [voteSchema],
publish: false,
optional: true,
viewableBy: ['guests'],
resolveAs: '__upvotedComments: [Vote]',
}
},
/**
An array containing posts upvotes
*/
{
fieldName: '__upvotedPosts',
fieldSchema: {
type: [voteSchema],
publish: false,
optional: true,
viewableBy: ['guests'],
resolveAs: '__upvotedPosts: [Vote]',
}
},
/**
An array containing comment downvotes
*/
{
fieldName: '__downvotedComments',
fieldSchema: {
type: [voteSchema],
publish: false,
optional: true,
viewableBy: ['guests'],
resolveAs: '__downvotedComments: [Vote]',
}
},
/**
An array containing posts downvotes
*/
{
fieldName: '__downvotedPosts',
fieldSchema: {
type: [voteSchema],
publish: false,
optional: true,
viewableBy: ['guests'],
resolveAs: '__downvotedPosts: [Vote]',
}
},
]);
Posts.addField([
/**
How many upvotes the post has received
*/
{
fieldName: "upvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
An array containing the `_id`s of the post's upvoters
*/
{
fieldName: "upvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
viewableBy: ['guests'],
resolveAs: 'upvoters: [User]',
}
},
/**
How many downvotes the post has received
*/
{
fieldName: "downvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
An array containing the `_id`s of the post's downvoters
*/
{
fieldName: "downvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
viewableBy: ['guests'],
resolveAs: 'downvoters: [User]',
}
},
/**
The post's base score (not factoring in the post's age)
*/
{
fieldName: "baseScore",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
The post's current score (factoring in age)
*/
{
fieldName: "score",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
]);
Comments.addField([
/**
The number of upvotes the comment has received
*/
{
fieldName: "upvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
An array containing the `_id`s of upvoters
*/
{
fieldName: "upvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
viewableBy: ['guests'],
resolveAs: 'upvoters: [User]',
}
},
/**
The number of downvotes the comment has received
*/
{
fieldName: "downvotes",
fieldSchema: {
type: Number,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
An array containing the `_id`s of downvoters
*/
{
fieldName: "downvoters",
fieldSchema: {
type: [String],
optional: true,
publish: true,
viewableBy: ['guests'],
resolveAs: 'downvoters: [User]',
}
},
/**
The comment's base score (not factoring in the comment's age)
*/
{
fieldName: "baseScore",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
/**
The comment's current score (factoring in age)
*/
{
fieldName: "score",
fieldSchema: {
type: Number,
decimal: true,
optional: true,
publish: true,
defaultValue: 0,
viewableBy: ['guests'],
}
},
]);