Try to retrieve schema from all schemas cache if not found in individual cache (#2912)
* Try to get schema from main schema if not found in single schema * Add newline * Add missing return * Add missing done to tests
This commit is contained in:
committed by
Florent Vilmart
parent
af55cd1efb
commit
151bea25ee
37
spec/SchemaCache.spec.js
Normal file
37
spec/SchemaCache.spec.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var CacheController = require('../src/Controllers/CacheController.js').default;
|
||||
var InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').default;
|
||||
var SchemaCache = require('../src/Controllers/SchemaCache').default;
|
||||
|
||||
describe('SchemaCache', () => {
|
||||
var schemaCache;
|
||||
|
||||
beforeEach(() => {
|
||||
var cacheAdapter = new InMemoryCacheAdapter({});
|
||||
var cacheController = new CacheController(cacheAdapter, 'appId');
|
||||
schemaCache = new SchemaCache(cacheController);
|
||||
});
|
||||
|
||||
it('can retrieve a single schema after all schemas stored', (done) => {
|
||||
var allSchemas = [{
|
||||
className: 'Class1'
|
||||
}, {
|
||||
className: 'Class2'
|
||||
}];
|
||||
schemaCache.setAllClasses(allSchemas);
|
||||
schemaCache.getOneSchema('Class2').then((schema) => {
|
||||
expect(schema).not.toBeNull();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('does not return all schemas after a single schema is stored', (done) => {
|
||||
var schema = {
|
||||
className: 'Class1'
|
||||
};
|
||||
schemaCache.setOneSchema('Class1', schema);
|
||||
schemaCache.getAllClasses().then((allSchemas) => {
|
||||
expect(allSchemas).toBeNull();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -50,7 +50,21 @@ export default class SchemaCache {
|
||||
if (!this.ttl) {
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
return this.cache.get(this.prefix+className);
|
||||
return this.cache.get(this.prefix+className).then((schema) => {
|
||||
if (schema) {
|
||||
return Promise.resolve(schema);
|
||||
}
|
||||
return this.cache.get(this.prefix+MAIN_SCHEMA).then((cachedSchemas) => {
|
||||
cachedSchemas = cachedSchemas || [];
|
||||
schema = cachedSchemas.find((cachedSchema) => {
|
||||
return cachedSchema.className === className;
|
||||
});
|
||||
if (schema) {
|
||||
return Promise.resolve(schema);
|
||||
}
|
||||
return Promise.resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
clear() {
|
||||
|
||||
Reference in New Issue
Block a user