From 38984a02e549a86845b8bf284e56faaf08476b90 Mon Sep 17 00:00:00 2001 From: jysperm Date: Sun, 19 Oct 2014 22:36:20 +0800 Subject: [PATCH] change to mongoose schema --- .gitignore | 1 + app.coffee | 2 + core/model/account.coffee | 10 ++++- core/model/balance_log.coffee | 41 +++++++++--------- core/model/coupon_code.coffee | 43 ++++++++++++------- core/model/notification.coffee | 41 +++++++++++++----- core/model/security_log.coffee | 37 +++++++++++------ core/model/ticket.coffee | 76 +++++++++++++++++++++++++--------- 8 files changed, 172 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index 0870c4b..f72c0a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /node_modules /coverage-reporter.html +/npm-debug.log /.vagrant /package.box diff --git a/app.coffee b/app.coffee index 986af9d..cf37418 100755 --- a/app.coffee +++ b/app.coffee @@ -21,6 +21,8 @@ app.libs = redisStore: require 'connect-redis' expressSession: require 'express-session' + ObjectId: (require 'mongoose').Schema.Types.ObjectId + {cookieParser, crypto, bodyParser, depd, express, fs, harp, middlewareInjector, mongoose} = exports.libs {morgan, nodemailer, path, redis, redisStore, expressSession} = exports.libs diff --git a/core/model/account.coffee b/core/model/account.coffee index 6ebedec..9bd1155 100644 --- a/core/model/account.coffee +++ b/core/model/account.coffee @@ -5,28 +5,34 @@ _ = require 'underscore' Token = mongoose.Schema type: + required: true type: String + enum: ['full_access'] token: + required: true type: String created_at: type: Date + default: Date.now update_at: type: Date + default: Date.now payload: type: Object + default: {} Account = mongoose.Schema username: - type: String required: true + type: String email: - type: String required: true + type: String password: type: String diff --git a/core/model/balance_log.coffee b/core/model/balance_log.coffee index 3ba7da3..24f8cca 100644 --- a/core/model/balance_log.coffee +++ b/core/model/balance_log.coffee @@ -1,23 +1,26 @@ -{ObjectID} = require 'mongodb' -_ = require 'underscore' +{_, ObjectId, mongoose} = app.libs -module.exports = exports = app.db.collection 'balance_log' +BalanceLog = mongoose.Schema + account_id: + required: true + type: ObjectId + ref: 'Account' + + type: + required: true + type: String + enum: ['deposit'] + + amount: + required: true + type: Number + + created_at: + type: Date + default: Date.now -sample = - account_id: new ObjectID() - type: 'deposit' - amount: 10 - created_at: new Date() payload: - type: 'taobao' - order_id: '560097131641814' + type: Object + default: {} -exports.create = (account, type, amount, payload, callback) -> - exports.insert - account_id: account._id - type: type - amount: amount - payload: payload - created_at: new Date() - , (err, result) -> - callback _.first result +module.exports = mongoose.model 'BalanceLog', BalanceLog diff --git a/core/model/coupon_code.coffee b/core/model/coupon_code.coffee index 7585ae7..f9f4d79 100644 --- a/core/model/coupon_code.coffee +++ b/core/model/coupon_code.coffee @@ -1,25 +1,40 @@ -{ObjectID} = require 'mongodb' -_ = require 'underscore' +{_, ObjectId, mongoose} = app.libs -module.exports = exports = app.db.collection 'coupon_codes' +CouponCode = mongoose.Schema + code: + required: true + type: String -mAccount = require './account' + expired: + type: Date + default: null -utils = require '../utils' + available_times: + type: Number + default: null + + type: + required: true + type: String + enum: ['amount'] -sample = - code: 'PmlFH2hpziDmyqPX' - expired: new Date() - available_times: 2 - type: 'amount' meta: - amount: 10 - category: '2014.9.20' + type: Object + default: {} + apply_log: [ - account_id: new ObjectID() - created_at: new Date() + account_id: + required: true + type: ObjectId + ref: 'Account' + + created_at: + type: Date + default: Date.now ] +module.exports = mongoose.model 'CouponCode', CouponCode + exports.type_meta = amount: restrict: (account, coupon_code, callback) -> diff --git a/core/model/notification.coffee b/core/model/notification.coffee index 24d4f81..af282d6 100644 --- a/core/model/notification.coffee +++ b/core/model/notification.coffee @@ -1,17 +1,36 @@ -{ObjectID} = require 'mongodb' -async = require 'async' -_ = require 'underscore' +{_, ObjectId, mongoose} = app.libs module.exports = exports = app.db.collection 'notifications' -sample = - account_id: ObjectID() - group_name: 'root' - created_at: Date() - level: 'notice/event/log' - type: 'payment_success' - meta: - amount: 10 +Notification = mongoose.Schema + account_id: + type: ObjectId + ref: 'Account' + default: null + + group_name: + type: String + default: null + + type: + required: true + type: String + enum: ['payment_success'] + + level: + required: true + type: String + enum: ['notice', 'event', 'log'] + + created_at: + type: Date + default: Date.now + + payload: + type: Object + default: {} + +module.exports = mongoose.model 'Notification', Notification exports.createNotice = (account, group_name, type, level, meta, callback) -> exports.insert diff --git a/core/model/security_log.coffee b/core/model/security_log.coffee index c0c8968..8e01647 100644 --- a/core/model/security_log.coffee +++ b/core/model/security_log.coffee @@ -1,19 +1,30 @@ -{ObjectID} = require 'mongodb' -_ = require 'underscore' +{_, ObjectId, mongoose} = app.libs -module.exports = exports = app.db.collection 'security_log' +SecurityLog = mongoose.Schema + account_id: + required: true + type: ObjectId + ref: 'Account' + + type: + required: true + type: String + enum: ['update_password', 'update_setting', 'update_email'] + + created_at: + type: Date + default: Date.now + + payload: + type: Object + default: {} -sample = - account_id: new ObjectID() - type: 'update_password/update_setting/update_email' - created_at: new Date() - payload: {} token: - token: 'b535a6cec7b73a60c53673f434686e04972ccafddb2a5477f066f30eded55a9b' - created_at: new Date() - attribute: - ip: '123.184.237.163' - ua: 'Mozilla/5.0 (Intel Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102' + required: true + type: ObjectId + ref: 'Token' + +module.exports = mongoose.model 'SecurityLog', SecurityLog exports.create = (account, type, token, payload, callback) -> matched_token = _.findWhere account.tokens, diff --git a/core/model/ticket.coffee b/core/model/ticket.coffee index 466e26c..9e7f166 100644 --- a/core/model/ticket.coffee +++ b/core/model/ticket.coffee @@ -1,35 +1,71 @@ -{ObjectID} = require 'mongodb' -{markdown} = require 'markdown' -_ = require 'underscore' +{_, ObjectId, mongoose} = app.libs module.exports = exports = app.db.collection 'tickets' -mAccount = require './account' +Reply = mongoose.Schema + _id: + type: ObjectId -sample = - account_id: ObjectID() - created_at: Date() - updated_at: Date() - title: 'Ticket Title' - content: 'Ticket Content(Markdown)' - content_html: 'Ticket Conetnt(HTML)' - status: 'open/pending/finish/closed' + account_id: + required: true + type: ObjectId + ref: 'Account' - options: {} + created_at: + type: Date + default: Date.now + + content: + type: String + + content_html: + type: String + + option: + type: Object + default: {} + +Ticket = mongoose.Schema + account_id: + required: true + type: ObjectId + ref: 'Account' + + created_at: + type: Date + default: Date.now + + updated_at: + type: Date + default: Date.now + + title: + type: String + + content: + type: String + + content_html: + type: String + + status: + type: String + enum: ['open', 'pending', 'finish', 'closed'] + + option: + type: Object + default: {} members: [ - ObjectID() + ObjectId ] replies: [ - _id: ObjectID() - account_id: ObjectID() - created_at: Date() - content: 'Reply Content(Markdown)' - content_html: 'Reply Conetnt(HTML)' - options: {} + Reply ] +module.exports = mongoose.model 'Ticket', Ticket + exports.createTicket = (account, title, content, members, status, options, callback) -> exports.insert account_id: account._id