From 5bad048505ff4a3111f7994114dcb90fcaf5adf9 Mon Sep 17 00:00:00 2001 From: SachaG Date: Wed, 29 Mar 2017 15:49:07 +0900 Subject: [PATCH] Add dbCollectionName option to createCollection --- .../lib/modules/comments/collection.js | 5 +- .../lib/modules/pics/collection.js | 2 +- .../lib/common/HeadTags.jsx | 4 +- .../lib/getting_started.js | 40 ---------------- .../lib/server/{dummy_content.js => seed.js} | 47 ++++++++++++------- .../vulcan-lib/lib/modules/collections.js | 4 +- packages/vulcan-lib/lib/modules/graphql.js | 3 +- 7 files changed, 42 insertions(+), 63 deletions(-) delete mode 100644 packages/vulcan-getting-started/lib/getting_started.js rename packages/vulcan-getting-started/lib/server/{dummy_content.js => seed.js} (84%) diff --git a/packages/example-instagram/lib/modules/comments/collection.js b/packages/example-instagram/lib/modules/comments/collection.js index 0ec31ff12..6e02f41e2 100644 --- a/packages/example-instagram/lib/modules/comments/collection.js +++ b/packages/example-instagram/lib/modules/comments/collection.js @@ -13,7 +13,10 @@ import './permissions.js'; const Comments = createCollection({ - collectionName: 'comments', + collectionName: 'Comments', + + // avoid conflicts with 'comments' collection in vulcan:comments + dbCollectionName: 'commentsInstagram', typeName: 'Comment', diff --git a/packages/example-instagram/lib/modules/pics/collection.js b/packages/example-instagram/lib/modules/pics/collection.js index 53ae7be7e..ba8b45d61 100644 --- a/packages/example-instagram/lib/modules/pics/collection.js +++ b/packages/example-instagram/lib/modules/pics/collection.js @@ -13,7 +13,7 @@ import './permissions.js'; const Pics = createCollection({ - collectionName: 'pics', + collectionName: 'Pics', typeName: 'Pic', diff --git a/packages/vulcan-base-components/lib/common/HeadTags.jsx b/packages/vulcan-base-components/lib/common/HeadTags.jsx index bb8579fa4..8f65ad826 100644 --- a/packages/vulcan-base-components/lib/common/HeadTags.jsx +++ b/packages/vulcan-base-components/lib/common/HeadTags.jsx @@ -44,7 +44,9 @@ class HeadTags extends Component { // add markup specific to the page rendered const link = Headtags.link.concat([ { rel: "canonical", href: Utils.getSiteUrl() }, - { rel: "shortcut icon", href: getSetting("faviconUrl", "/img/favicon.ico") } + { rel: "shortcut icon", href: getSetting("faviconUrl", "/img/favicon.ico") }, + { rel: 'stylesheet', type: 'text/css', href: 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css' }, + { rel: 'stylesheet', type: 'text/css', href: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css' }, ]); return ( diff --git a/packages/vulcan-getting-started/lib/getting_started.js b/packages/vulcan-getting-started/lib/getting_started.js deleted file mode 100644 index 33e5a8466..000000000 --- a/packages/vulcan-getting-started/lib/getting_started.js +++ /dev/null @@ -1,40 +0,0 @@ -import Posts from "meteor/vulcan:posts"; -import Comments from "meteor/vulcan:comments"; -import Users from 'meteor/vulcan:users'; -import { addCallback } from 'meteor/vulcan:core'; - -Users.addField({ - fieldName: 'isDummy', - fieldSchema: { - type: Boolean, - optional: true, - hidden: true // never show this - } -}); - -Posts.addField({ - fieldName: 'dummySlug', - fieldSchema: { - type: String, - optional: true, - hidden: true // never show this - } -}); - -Posts.addField({ - fieldName: 'isDummy', - fieldSchema: { - type: Boolean, - optional: true, - hidden: true // never show this - } -}); - -Comments.addField({ - fieldName: 'isDummy', - fieldSchema: { - type: Boolean, - optional: true, - hidden: true // never show this - } -}); diff --git a/packages/vulcan-getting-started/lib/server/dummy_content.js b/packages/vulcan-getting-started/lib/server/seed.js similarity index 84% rename from packages/vulcan-getting-started/lib/server/dummy_content.js rename to packages/vulcan-getting-started/lib/server/seed.js index d7a98f861..0e9adb937 100644 --- a/packages/vulcan-getting-started/lib/server/dummy_content.js +++ b/packages/vulcan-getting-started/lib/server/seed.js @@ -5,6 +5,27 @@ import Comments from "meteor/vulcan:comments"; import Users from 'meteor/vulcan:users'; import Events from "meteor/vulcan:events"; +const dummyFlag = { + fieldName: 'isDummy', + fieldSchema: { + type: Boolean, + optional: true, + hidden: true + } +} +Users.addField(dummyFlag); +Posts.addField(dummyFlag); +Comments.addField(dummyFlag); + +Posts.addField({ + fieldName: 'dummySlug', + fieldSchema: { + type: String, + optional: true, + hidden: true // never show this + } +}); + var toTitleCase = function (str) { return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); }; @@ -58,6 +79,7 @@ var createComment = function (slug, username, body, parentBody) { }; var createDummyUsers = function () { + console.log('// inserting dummy users…'); Accounts.createUser({ username: 'Bruce', email: 'dummyuser1@telescopeapp.org', @@ -82,6 +104,7 @@ var createDummyUsers = function () { }; var createDummyPosts = function () { + console.log('// inserting dummy posts'); createPost("read_this_first", moment().toDate(), "Bruce", "telescope.png"); @@ -96,6 +119,7 @@ var createDummyPosts = function () { }; var createDummyComments = function () { + console.log('// inserting dummy comments…'); createComment("read_this_first", "Bruce", "What an awesome app!"); @@ -109,32 +133,21 @@ var createDummyComments = function () { }; -var deleteDummyContent = function () { +const deleteDummyContent = function () { Users.remove({'profile.isDummy': true}); Posts.remove({isDummy: true}); Comments.remove({isDummy: true}); }; -Meteor.methods({ - addGettingStartedContent: function () { - if (Users.isAdmin(Meteor.user())) { - createDummyUsers(); - createDummyPosts(); - createDummyComments(); - } - }, - removeGettingStartedContent: function () { - if (Users.isAdmin(Meteor.user())) - deleteDummyContent(); - } -}); - Meteor.startup(function () { // insert dummy content only if createDummyContent hasn't happened and there aren't any posts or users in the db - if (!Users.find().count() && !Events.findOne({name: 'createDummyContent'}) && !Posts.find().count()) { + if (!Users.find().count()) { createDummyUsers(); + } + if (!Posts.find().count()) { createDummyPosts(); + } + if (!Comments.find().count()) { createDummyComments(); - Events.log({name: 'createDummyContent', unique: true, important: true}); } }); diff --git a/packages/vulcan-lib/lib/modules/collections.js b/packages/vulcan-lib/lib/modules/collections.js index ff53578f2..989f10fa7 100644 --- a/packages/vulcan-lib/lib/modules/collections.js +++ b/packages/vulcan-lib/lib/modules/collections.js @@ -89,10 +89,10 @@ Mongo.Collection.prototype.helpers = function(helpers) { export const createCollection = options => { - const {collectionName, typeName, schema, resolvers, mutations, generateGraphQLSchema = true } = options; + const {collectionName, typeName, schema, resolvers, mutations, generateGraphQLSchema = true, dbCollectionName } = options; // initialize new Mongo collection - const collection = collectionName === 'users' ? Meteor.users : new Mongo.Collection(collectionName); + const collection = collectionName === 'users' ? Meteor.users : new Mongo.Collection(dbCollectionName ? dbCollectionName : collectionName.toLowerCase()); // decorate collection with options collection.options = options; diff --git a/packages/vulcan-lib/lib/modules/graphql.js b/packages/vulcan-lib/lib/modules/graphql.js index f16937a29..fec2cd68a 100644 --- a/packages/vulcan-lib/lib/modules/graphql.js +++ b/packages/vulcan-lib/lib/modules/graphql.js @@ -95,7 +95,8 @@ export const GraphQLSchema = { // generate a GraphQL schema corresponding to a given collection generateSchema(collection) { - const collectionName = collection._name; + const collectionName = collection.options.collectionName; + const mainTypeName = collection.typeName ? collection.typeName : Utils.camelToSpaces(_.initial(collectionName).join('')); // default to posts -> Post // backward-compatibility code: we do not want user.telescope fields in the graphql schema