Skip to content

Commit 8fe2b9c

Browse files
Merge pull request #128 from sliit-foss/development
Perf: added lean to a few queries
2 parents d41e5e0 + 72edf1b commit 8fe2b9c

File tree

6 files changed

+11
-23
lines changed

6 files changed

+11
-23
lines changed

src/models/setting.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import mongoose from 'mongoose';
22

3-
const LeaderboardSchema = mongoose.Schema({
3+
const LeaderboardSchema = new mongoose.Schema({
44
freezed: {
55
type: Boolean,
66
default: false
@@ -15,7 +15,7 @@ const LeaderboardSchema = mongoose.Schema({
1515
}
1616
});
1717

18-
const SettingSchema = mongoose.Schema(
18+
const SettingSchema = new mongoose.Schema(
1919
{
2020
submission_deadline: {
2121
type: Date,

src/models/submission.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import mongoose from 'mongoose';
22
import mongoosePaginate from 'mongoose-paginate-v2';
33

4-
const SubmissionSchema = mongoose.Schema(
4+
const SubmissionSchema = new mongoose.Schema(
55
{
66
user: {
77
type: mongoose.Schema.Types.ObjectId,

src/repository/question/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export const getQuestionById = (id, user) => {
5151
};
5252

5353
export const findAndUpdateQuestion = (filters, data) => {
54-
return Question.findOneAndUpdate(filters, data, { new: true });
54+
return Question.findOneAndUpdate(filters, data, { new: true }).lean();
5555
};
5656

5757
export const deleteAQuestion = (filters) => {

src/repository/settings.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export const getSettingsDoc = () => {
55
};
66

77
export const updateSettingsDoc = async (settings) => {
8-
await Setting.findOneAndUpdate({}, settings, { new: true, upsert: true });
8+
await Setting.findOneAndUpdate({}, settings, { new: true, upsert: true }).lean();
99
};
1010

1111
export const getRegistrationDeadline = async () => {

src/repository/submission.js

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
import { moduleLogger } from '@sliit-foss/module-logger';
21
import { ROLE } from '@/constants';
32
import { Submission } from '@/models';
43
import { prefixObjectKeys } from '@/utils';
54

6-
const logger = moduleLogger('Submission-repository');
7-
85
export const insertSubmission = (userId, question, link) => {
96
return Submission.create({
107
user: userId,
@@ -30,14 +27,11 @@ export const getSubmissions = ({ sort = {}, filter = {}, page, limit = 10 }) =>
3027
collation: {
3128
locale: 'en'
3229
},
33-
populate
30+
populate,
31+
lean: true
3432
};
35-
return page
36-
? Submission.paginate(filter, options).catch((err) => {
37-
logger.error(`An error occurred when retrieving submissions - err: ${err.message}`);
38-
throw err;
39-
})
40-
: Submission.find(filter).sort(sort).populate(populate).lean();
33+
34+
return page ? Submission.paginate(filter, options) : Submission.find(filter).sort(sort).populate(populate).lean();
4135
};
4236

4337
export const getSubmissionById = (id) => {
@@ -53,7 +47,7 @@ export const insertGrade = async (submission, score, automated, userId) => {
5347
{ _id: submission },
5448
{ score, graded_by: userId, automatically_graded: automated },
5549
{ upsert: true }
56-
);
50+
).lean();
5751
};
5852

5953
export const getDistinctSubmissions = (questionId) => {

src/repository/user.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
import { moduleLogger } from '@sliit-foss/module-logger';
21
import { ROLE } from '@/constants';
32
import { User } from '@/models';
43

5-
const logger = moduleLogger('User-repository');
6-
74
export const createUser = async (user) => {
85
const newUser = (await new User(user).save()).toObject();
96
delete newUser.password;
@@ -59,10 +56,7 @@ export const getAllUsers = ({ sort = {}, filter = {}, page, limit = 10 }) => {
5956
{ $unset: ['password', 'verification_code', 'submissions'] }
6057
]);
6158

62-
return (page ? User.aggregatePaginate(pipeline, options) : pipeline).catch((err) => {
63-
logger.error(`An error occurred when retrieving users - err: ${err.message}`);
64-
throw err;
65-
});
59+
return page ? User.aggregatePaginate(pipeline, options) : pipeline;
6660
};
6761

6862
export const getOneUser = async (filters, returnPassword = false) => {

0 commit comments

Comments
 (0)