diff options
Diffstat (limited to 'server/lib/schemas')
| -rw-r--r-- | server/lib/schemas/Blueprint.js | 66 | ||||
| -rw-r--r-- | server/lib/schemas/Layout.js | 3 | ||||
| -rw-r--r-- | server/lib/schemas/Media.js | 7 | ||||
| -rw-r--r-- | server/lib/schemas/Plan.js | 44 | ||||
| -rw-r--r-- | server/lib/schemas/Project.js | 4 | ||||
| -rw-r--r-- | server/lib/schemas/Subscription.js | 31 | ||||
| -rw-r--r-- | server/lib/schemas/User.js | 9 |
7 files changed, 160 insertions, 4 deletions
diff --git a/server/lib/schemas/Blueprint.js b/server/lib/schemas/Blueprint.js new file mode 100644 index 0000000..3c3b0cc --- /dev/null +++ b/server/lib/schemas/Blueprint.js @@ -0,0 +1,66 @@ +/* jshint node: true */ + +var mongoose = require('mongoose'), + _ = require('lodash'), + util = require('../util'); + +var BlueprintSchema = new mongoose.Schema({ + type: { + type: String, + required: true + }, + url: { + type: String, + required: true, + }, + token: { + type: String, + default: "" + }, + thumbnail: { + type: String, + default: "" + }, + width: { + type: Number, + default: 0 + }, + height: { + type: Number, + default: 0 + }, + name: { + type: String, + default: "" + }, + slug: { + type: String, +// required: true, + validate: [function (val){ + val = util.sanitize(val || this.displayName || "") +// if (! val.length) return false + return true + },"{PATH} name is required"] + }, + description: { + type: String, + default: "" + }, + tag: { type: String, default: "" }, + scale: { type: Number, default: 1.0 }, + + widthDimension: { type: Number }, + heightDimension: { type: Number }, + wallHeight: { type: Number }, + units: { type: String }, + line: { type: String }, + + shapes: [mongoose.Schema.Types.Mixed], + startPosition: mongoose.Schema.Types.Mixed, + + user_id: { type: mongoose.Schema.ObjectId, index: true }, + created_at: { type: Date }, +}); + +module.exports = exports = mongoose.model('blueprint', BlueprintSchema) +exports.schema = BlueprintSchema; diff --git a/server/lib/schemas/Layout.js b/server/lib/schemas/Layout.js index e3f2616..e15e188 100644 --- a/server/lib/schemas/Layout.js +++ b/server/lib/schemas/Layout.js @@ -23,9 +23,12 @@ var LayoutSchema = new mongoose.Schema({ photo: { type: String, }, + media: mongoose.Schema.Types.Mixed, rooms: [mongoose.Schema.Types.Mixed], startPosition: mongoose.Schema.Types.Mixed, viewHeight: { type: Number }, + is_stock: { type: Boolean, default: false }, + is_pro: { type: Boolean, default: false }, user_id: { type: mongoose.Schema.ObjectId, index: true }, created_at: { type: Date }, updated_at: { type: Date }, diff --git a/server/lib/schemas/Media.js b/server/lib/schemas/Media.js index 1de354d..f37fb12 100644 --- a/server/lib/schemas/Media.js +++ b/server/lib/schemas/Media.js @@ -37,11 +37,12 @@ var MediaSchema = new mongoose.Schema({ type: String, default: "" }, - autoplay: { type: Boolean, default: false }, - loop: { type: Boolean, default: false }, - mute: { type: Boolean, default: true }, + autoplay: { type: Boolean, default: true }, + loop: { type: Boolean, default: true }, + mute: { type: Boolean, default: false }, keyframe: { type: Number, default: 0.0 }, tag: { type: String, default: "" }, + scale: { type: Number, default: 1.0 }, widthDimension: { type: Number }, heightDimension: { type: Number }, diff --git a/server/lib/schemas/Plan.js b/server/lib/schemas/Plan.js new file mode 100644 index 0000000..388ce69 --- /dev/null +++ b/server/lib/schemas/Plan.js @@ -0,0 +1,44 @@ +/* jshint node: true */ + +var mongoose = require('mongoose'), + _ = require('lodash'), + crypto = require('crypto'), + config = require('../../../config.json'), + util = require('../util'); + +var PlanSchema = new mongoose.Schema({ + name: { type: String }, + slug: { type: String }, + + level: { type: Number }, + + monthly_price: { type: Number }, + yearly_price: { type: Number }, + + basic_layout_monthly_price: { type: Number }, + basic_layout_yearly_price: { type: Number }, + + pro_layout_monthly_price: { type: Number }, + pro_layout_yearly_price: { type: Number }, + + basic_layout_limit: { type: Number }, + pro_layout_limit: { type: Number }, + + stock_project_limit: { type: Number }, + basic_project_limit: { type: Number }, + pro_project_limit: { type: Number }, + + permissions: { + basic_editor: { type: Boolean, default: false }, + pro_editor: { type: Boolean, default: false }, + sculpture: { type: Boolean, default: false }, + collaborators: { type: Boolean, default: false }, + no_logo: { type: Boolean, default: false }, + }, + + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now }, +}) + +module.exports = exports = mongoose.model('plan', PlanSchema); +exports.schema = PlanSchema; diff --git a/server/lib/schemas/Project.js b/server/lib/schemas/Project.js index a923d85..687555d 100644 --- a/server/lib/schemas/Project.js +++ b/server/lib/schemas/Project.js @@ -28,16 +28,20 @@ var ProjectSchema = new mongoose.Schema({ type: String, }, rooms: [mongoose.Schema.Types.Mixed], + shapes: [mongoose.Schema.Types.Mixed], walls: [mongoose.Schema.Types.Mixed], media: [mongoose.Schema.Types.Mixed], + sculpture: [mongoose.Schema.Types.Mixed], colors: mongoose.Schema.Types.Mixed, startPosition: mongoose.Schema.Types.Mixed, lastPosition: mongoose.Schema.Types.Mixed, viewHeight: { type: Number }, + units: { type: String, default: "ft" }, user_id: { type: mongoose.Schema.ObjectId, index: true }, created_at: { type: Date }, updated_at: { type: Date }, featured: { type: Boolean, default: false }, + layout_type: { type: Number, default: 0 }, }); module.exports = exports = mongoose.model('project', ProjectSchema); diff --git a/server/lib/schemas/Subscription.js b/server/lib/schemas/Subscription.js new file mode 100644 index 0000000..bf43e8b --- /dev/null +++ b/server/lib/schemas/Subscription.js @@ -0,0 +1,31 @@ +/* jshint node: true */ + +var mongoose = require('mongoose'), + _ = require('lodash'), + crypto = require('crypto'), + config = require('../../../config.json'), + util = require('../util'); + +var SubscriptionSchema = new mongoose.Schema({ + user_id: { type: mongoose.Schema.ObjectId, index: true }, + + plan_code: { type: String, default: "" }, + plan_type: { type: String, default: "free" }, + plan_period: { type: String, default: "monthly" }, + + uuid: { type: String }, + basic_layouts: { type: Number, default: 0 }, + pro_layouts: { type: Number, default: 0 }, + + history: [{ + action: { type: String }, + data: { type: String }, + created_at: { type: Date, default: Date.now }, + }], + + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now }, +}) + +module.exports = exports = mongoose.model('subscription', SubscriptionSchema); +exports.schema = SubscriptionSchema; diff --git a/server/lib/schemas/User.js b/server/lib/schemas/User.js index 180a140..829b360 100644 --- a/server/lib/schemas/User.js +++ b/server/lib/schemas/User.js @@ -54,7 +54,12 @@ var UserSchema = new mongoose.Schema({ type: String, default: "", }, - + + plan_code: { type: String, default: "" }, + plan_level: { type: Number, default: 0 }, + plan_type: { type: String, default: "free" }, + last_charged: { type: Date, default: null }, + location: { type: String, default: "" }, photo: { type: String, default: "" }, bio: { type: String, default: "" }, @@ -62,6 +67,8 @@ var UserSchema = new mongoose.Schema({ twitterName: { type: String, default: "" }, facebookUrl: { type: String, default: "" }, isStaff: { type: Boolean, default: false }, + isArtist: { type: Boolean, default: false }, + subscription_id: { type: mongoose.Schema.ObjectId }, created_at: { type: Date }, updated_at: { type: Date }, last_seen: { type: Date }, |
