mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-03 17:02:40 +00:00
Add indexes to HomebrewSchema
This commit is contained in:
@@ -7,29 +7,29 @@ import zlib from 'zlib';
|
|||||||
const HomebrewSchema = mongoose.Schema({
|
const HomebrewSchema = mongoose.Schema({
|
||||||
shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
||||||
editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
||||||
googleId : { type: String },
|
googleId : { type: String, index: true },
|
||||||
title : { type: String, default: '' },
|
title : { type: String, default: '', index: true },
|
||||||
text : { type: String, default: '' },
|
text : { type: String, default: '' },
|
||||||
textBin : { type: Buffer },
|
textBin : { type: Buffer },
|
||||||
pageCount : { type: Number, default: 1 },
|
pageCount : { type: Number, default: 1, index: true },
|
||||||
|
|
||||||
description : { type: String, default: '' },
|
description : { type: String, default: '' },
|
||||||
tags : [String],
|
tags : { type: [String], index: true },
|
||||||
systems : [String],
|
systems : [String],
|
||||||
lang : { type: String, default: 'en' },
|
lang : { type: String, default: 'en', index: true },
|
||||||
renderer : { type: String, default: '' },
|
renderer : { type: String, default: '', index: true },
|
||||||
authors : [String],
|
authors : { type: [String], index: true },
|
||||||
invitedAuthors : [String],
|
invitedAuthors : [String],
|
||||||
published : { type: Boolean, default: false },
|
published : { type: Boolean, default: false, index: true },
|
||||||
thumbnail : { type: String, default: '' },
|
thumbnail : { type: String, default: '', index: true },
|
||||||
|
|
||||||
createdAt : { type: Date, default: Date.now },
|
createdAt : { type: Date, default: Date.now, index: true },
|
||||||
updatedAt : { type: Date, default: Date.now },
|
updatedAt : { type: Date, default: Date.now, index: true },
|
||||||
lastViewed : { type: Date, default: Date.now },
|
lastViewed : { type: Date, default: Date.now, index: true },
|
||||||
views : { type: Number, default: 0 },
|
views : { type: Number, default: 0 },
|
||||||
version : { type: Number, default: 1 },
|
version : { type: Number, default: 1, index: true },
|
||||||
|
|
||||||
lock : { type: Object }
|
lock : { type: Object, index: true }
|
||||||
}, { versionKey: false });
|
}, { versionKey: false });
|
||||||
|
|
||||||
HomebrewSchema.statics.increaseView = async function(query) {
|
HomebrewSchema.statics.increaseView = async function(query) {
|
||||||
@@ -43,6 +43,8 @@ HomebrewSchema.statics.increaseView = async function(query) {
|
|||||||
return brew;
|
return brew;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// STATIC FUNCTIONS
|
||||||
|
|
||||||
HomebrewSchema.statics.get = async function(query, fields=null){
|
HomebrewSchema.statics.get = async function(query, fields=null){
|
||||||
const brew = await Homebrew.findOne(query, fields).orFail()
|
const brew = await Homebrew.findOne(query, fields).orFail()
|
||||||
.catch((error)=>{throw 'Can not find brew';});
|
.catch((error)=>{throw 'Can not find brew';});
|
||||||
@@ -63,6 +65,15 @@ HomebrewSchema.statics.getByUser = async function(username, allowAccess=false, f
|
|||||||
return brews;
|
return brews;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// INDEXES
|
||||||
|
|
||||||
|
HomebrewSchema.index({ updatedAt: -1, lastViewed: -1 });
|
||||||
|
HomebrewSchema.index({ published: 1, title: 'text' });
|
||||||
|
|
||||||
|
HomebrewSchema.index({ lock: 1, sparse: true });
|
||||||
|
HomebrewSchema.path('lock.reviewRequested').index({ sparse: true });
|
||||||
|
|
||||||
|
|
||||||
const Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
const Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
Reference in New Issue
Block a user