Subscription.coffee 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. mongoose = require 'mongoose'
  2. Settings = require 'settings-sharelatex'
  3. TeamInviteSchema = require('./TeamInvite').TeamInviteSchema
  4. Schema = mongoose.Schema
  5. ObjectId = Schema.ObjectId
  6. SubscriptionSchema = new Schema
  7. admin_id : {type:ObjectId, ref:'User', index: {unique: true, dropDups: true}}
  8. manager_ids : [ type:ObjectId, ref:'User' ]
  9. member_ids : [ type:ObjectId, ref:'User' ]
  10. invited_emails: [ String ]
  11. teamInvites : [ TeamInviteSchema ]
  12. recurlySubscription_id : String
  13. teamName : {type: String}
  14. teamNotice : {type: String}
  15. planCode : {type: String}
  16. groupPlan : {type: Boolean, default: false}
  17. membersLimit: {type:Number, default:0}
  18. customAccount: Boolean
  19. overleaf:
  20. id:
  21. type: Number
  22. index:
  23. unique: true,
  24. partialFilterExpression: {'overleaf.id': {$exists: true}}
  25. SubscriptionSchema.statics.findAndModify = (query, update, callback)->
  26. self = @
  27. this.update query, update, ->
  28. self.findOne query, callback
  29. # Subscriptions have no v1 data to fetch
  30. SubscriptionSchema.method 'fetchV1Data', (callback = (error, subscription)->) ->
  31. callback(null, this)
  32. conn = mongoose.createConnection(Settings.mongo.url, {
  33. server: {poolSize: Settings.mongo.poolSize || 10},
  34. config: {autoIndex: false}
  35. })
  36. Subscription = conn.model('Subscription', SubscriptionSchema)
  37. mongoose.model 'Subscription', SubscriptionSchema
  38. exports.Subscription = Subscription
  39. exports.SubscriptionSchema = SubscriptionSchema