Skip to content

Commit

Permalink
Aftral: store models in getModels
Browse files Browse the repository at this point in the history
  • Loading branch information
sebaauvray committed Aug 18, 2024
1 parent f7b62e5 commit b36b1f9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
18 changes: 12 additions & 6 deletions backend/web/server/utils/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,13 +302,19 @@ const getModelAttributes = (modelName, level=MODEL_ATTRIBUTES_DEPTH) => {
return attrsWithCounts
}

let MODELS=null

const getModels = () => {
const modelNames = lodash.sortBy(mongoose.modelNames())
const result = {}
modelNames.forEach(name => {
const attrs = getModelAttributes(name)
result[name]={name, attributes: Object.fromEntries(attrs)}
})
let result=MODELS
if (!result) {
const modelNames = lodash.sortBy(mongoose.modelNames())
result = {}
modelNames.forEach(name => {
const attrs = getModelAttributes(name)
result[name]={name, attributes: Object.fromEntries(attrs)}
})
MODELS=result
}
return result
}

Expand Down
13 changes: 7 additions & 6 deletions backend/web/tests/aftral-lms/performance.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const { ACTIONS } = require('../../server/utils/studio/actions')
const { SseKmsEncryptedObjectsStatus } = require('@aws-sdk/client-s3')
const { getDatabaseUri } = require('../../config/config')
const { ChainCache, ATTRIBUTES_CACHE } = require('../../server/plugins/aftral-lms/block')
const { runPromisesWithDelay } = require('../../server/utils/concurrency')


jest.setTimeout(60000)
Expand All @@ -37,13 +38,13 @@ describe('Test performances', () => {
it('must load programs', async() => {
const builder=await User.findOne({role: ROLE_CONCEPTEUR})
const FIELDS='name,children.children.picture,children.children.name,children.children.children_count,children.children.creation_date,children.children.update_date,children.children.badges.picture,children.children.badges,children.children.search_text,children.children.description,children.children.children.evaluation,children.children.children.code,children.children.children.name,children.children.children.resource_type,children.children.children.search_text,children.children.children.achievement_rule,children.children.children.optional,children.children.children.creation_date,children.children.children.update_date,children.children.children.access_condition,children.children.children.masked,children.children.children,children.children.success_message,children.children,children.picture,children.name,children.children_count,children.badges.picture,children.description,children.creation_date,children.update_date,children.search_text,codes.code,search_text,children_count,badges.picture,description,creation_date,update_date,status,available_codes.code,codes,closed,badges,children.badges,children,last_updater.firstname,last_updater.lastname,creator.lastname,creator.firstname,children.children.children.homework_mode,children.children.children.picture,children.children.children.children_count,children.children.children.badges.picture,children.children.children.badges,children.children.children.description,children.children.children.children.evaluation,children.children.children.children.homework_mode,children.children.children.children.code,children.children.children.children.name,children.children.children.children.resource_type,children.children.children.children.search_text,children.children.children.children.achievement_rule,children.children.children.children.optional,children.children.children.children.creation_date,children.children.children.children.update_date,children.children.children.children.access_condition,children.children.children.children.masked,children.children.children.children,children.children.children.success_message'.split(',')
let LIMITS=lodash('limit=1&limit.children.children.badges=30&limit.children.children.children=30&limit.children.children=30&limit.codes=30&limit.badges=30&limit.children.badges=30&limit.children=30&limit.children.children.badges=30&limit.children.children.children.badges=30&limit.children.children.children.children=30&limit.children.children.children=30&limit.children=30&limit.children.children=30&sort.creation_date=desc')
let LIMITS=lodash('limit=2&limit.children.children.badges=30&limit.children.children.children=30&limit.children.children=30&limit.codes=30&limit.badges=30&limit.children.badges=30&limit.children=30&limit.children.children.badges=30&limit.children.children.children.badges=30&limit.children.children.children.children=30&limit.children.children.children=30&limit.children=30&limit.children.children=30&sort.creation_date=desc')
.split('&').map(v => v.split('=')).fromPairs().value()
console.time('Loading')
const programs=await loadFromDb({model: 'program', fields: FIELDS, params: LIMITS, user: builder})
console.timeEnd('Loading')
console.log(ChainCache.getStats())
console.log(ATTRIBUTES_CACHE.getStats())
await runPromisesWithDelay(lodash.range(10).map(() => async () => {
console.time('Loading')
const programs=await loadFromDb({model: 'program', fields: FIELDS, params: LIMITS, user: builder})
console.timeEnd('Loading')
}))
})


Expand Down

0 comments on commit b36b1f9

Please sign in to comment.