Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. import mongoose from "mongoose";
  2.  
  3. import './models/user';
  4. import './models/follow';
  5.  
  6. function DB() {
  7. const User = mongoose.model('User');
  8. // const Follower = mongoose.model('Follower');
  9. // const Follow = mongoose.model('Follow');
  10. this.setUpConnection = () => {
  11. return mongoose.connect(`mongodb://localhost/instabot`, {
  12. useCreateIndex: true,
  13. useNewUrlParser: true,
  14. useFindAndModify: false
  15. });
  16. };
  17. this.listUsers = (id) => {
  18. return User.find();
  19. };
  20. this.getFollow = (id, followId) => {
  21. // return Follow.find({id, followId});
  22. };
  23. this.createFollow = async (user, id, followId) => {
  24. console.log('user in:', user);
  25. await user.follows.push({
  26. id: followId,
  27. createdAt: new Date(),
  28. updatedAt: new Date(),
  29. });
  30. return user;
  31. };
  32. this.updateOrCreateFollow = async (id, followId) => {
  33. console.log('updateOrCreateFollow start');
  34. let user = await User.findOneAndUpdate({id},
  35. async (user) => {
  36. return await new Promise(async (resolve, reject) => {
  37. console.log('user in:', user);
  38. await user.follows.findOneAndUpdate({id: followId}, {
  39. updatedAt: new Date(),
  40. deletedAt: undefined
  41. },
  42. async (err, doc) => {
  43. if (!(doc == null && err == null)) {
  44. console.log('doc:', doc);
  45. console.log('err:', err);
  46. return doc;
  47. } else {
  48. const upuser = await this.createFollow(user, id, followId);
  49. console.log('updated user:', upuser);
  50. resolve(upuser);
  51. }
  52. });
  53. resolve(user);
  54. return user;
  55. });
  56. }, {
  57. returnOriginal: true,
  58. });
  59. console.log('user', user);
  60. console.log('updateOrCreateFollow end');
  61. return await user.save();
  62. };
  63. this.createUser = (data) => {
  64. const user = new User({
  65. id: +data.id,
  66. username: data.username,
  67. fullName: data.fullName,
  68. isPrivate: data.isPrivate,
  69. profilePicUrl: data.profilePicUrl,
  70. profilePicId: data.profilePicId,
  71. isVerified: data.isVerified,
  72. hasAnonymousProfilePicture: data.hasAnonymousProfilePicture,
  73. mediaCount: data.mediaCount || -1,
  74. followerCount: data.followerCount || -1,
  75. followingCount: data.followingCount || -1,
  76. biography: data.biography || '',
  77. // hdProfilePicVersions: data.hdProfilePicVersions || '',
  78. createdAt: new Date(),
  79. updatedAt: new Date(),
  80. });
  81. return user.save();
  82. };
  83. this.updateOrCreate = async (data) => {
  84. return await User.findOneAndUpdate({id: +data.id},
  85. {
  86. id: +data.id,
  87. username: data.username,
  88. fullName: data.fullName,
  89. isPrivate: data.isPrivate,
  90. profilePicUrl: data.profilePicUrl,
  91. profilePicId: data.profilePicId,
  92. isVerified: data.isVerified,
  93. hasAnonymousProfilePicture: data.hasAnonymousProfilePicture,
  94. mediaCount: data.mediaCount || -1,
  95. followerCount: data.followerCount || -1,
  96. followingCount: data.followingCount || -1,
  97. follows: [],
  98. biography: data.biography || '',
  99. // hdProfilePicVersions: data.hdProfilePicVersions || '',
  100. updatedAt: new Date(),
  101. },
  102. async (err, doc) => {
  103. if (doc == null && err == null) {
  104. return await this.createUser(data);
  105. }
  106. return doc;
  107. })
  108. };
  109. this.deleteUser = (id) => {
  110. return User.findById(id).remove();
  111. };
  112.  
  113. return this;
  114. }
  115.  
  116. module.exports = DB;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement