Subscription.js 1.7 KB

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