Browse Source

Remove entries from cache.

pull/95/head
Sebastian Stehle 8 years ago
parent
commit
16e68e726f
  1. 13
      src/Squidex/app/framework/services/local-cache.service.spec.ts
  2. 4
      src/Squidex/app/framework/services/local-cache.service.ts
  3. 31
      src/Squidex/app/shared/services/assets.service.ts
  4. 20
      src/Squidex/app/shared/services/contents.service.ts
  5. 17
      src/Squidex/app/shared/services/schemas.service.ts

13
src/Squidex/app/framework/services/local-cache.service.spec.ts

@ -30,7 +30,7 @@ describe('LocalCache', () => {
expect(localCacheService.get('key')).toBe(value);
});
it('should get and store item in cache', () => {
it('should not retrieve item if cleared', () => {
const localCacheService = new LocalCacheService();
const value = {};
@ -41,6 +41,17 @@ describe('LocalCache', () => {
expect(localCacheService.get('key')).toBeUndefined();
});
it('should not retrieve item if removed', () => {
const localCacheService = new LocalCacheService();
const value = {};
localCacheService.set('key', value);
localCacheService.remove('key');
expect(localCacheService.get('key')).toBeUndefined();
});
it('should not retrieve item if expired', () => {
const localCacheService = new LocalCacheService();

4
src/Squidex/app/framework/services/local-cache.service.ts

@ -48,6 +48,10 @@ export class LocalCacheService {
this.entries[key] = { value, expires: new Date().getTime() + expiresIn };
}
public remove(key: string) {
delete this.entries[key];
}
private static isExpired(now: number, entry: Entry): boolean {
return entry.expires < now;
}

31
src/Squidex/app/shared/services/assets.service.ts

@ -236,7 +236,6 @@ export class AssetsService {
}
public replaceFile(appName: string, id: string, file: File, version?: Version): Observable<number | AssetReplacedDto> {
return new Observable<number | AssetReplacedDto>(subscriber => {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/assets/${id}/content`);
const req = new HttpRequest('PUT', url, getFormData(file), {
@ -246,15 +245,14 @@ export class AssetsService {
reportProgress: true
});
this.http.request(req)
.pretifyError('Failed to replace asset. Please reload.')
.subscribe(event => {
return this.http.request(req)
.map(event => {
if (event.type === HttpEventType.UploadProgress) {
const percentDone = Math.round(100 * event.loaded / event.total);
subscriber.next(percentDone);
return percentDone;
} else if (event instanceof HttpResponse) {
const response = event.body;
const response: any = event.body;
const dto = new AssetReplacedDto(
response.fileSize,
@ -265,27 +263,26 @@ export class AssetsService {
response.pixelHeight,
new Version(response.version.toString()));
subscriber.next(dto);
return dto;
}
}, err => {
subscriber.error(err);
}, () => {
subscriber.complete();
});
});
})
.pretifyError('Failed to replace asset. Please reload.');
}
public putAsset(appName: string, id: string, dto: UpdateAssetDto, version?: Version): Observable<any> {
public deleteAsset(appName: string, id: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/assets/${id}`);
return HTTP.putVersioned(this.http, url, dto, version)
return HTTP.deleteVersioned(this.http, url, version)
.do(() => {
this.localCache.remove(`asset.${id}`);
})
.pretifyError('Failed to delete asset. Please reload.');
}
public deleteAsset(appName: string, id: string, version?: Version): Observable<any> {
public putAsset(appName: string, id: string, dto: UpdateAssetDto, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/assets/${id}`);
return HTTP.deleteVersioned(this.http, url, version)
return HTTP.putVersioned(this.http, url, dto, version)
.pretifyError('Failed to delete asset. Please reload.');
}
}

20
src/Squidex/app/shared/services/contents.service.ts

@ -182,9 +182,22 @@ export class ContentsService {
const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}/${id}`);
return HTTP.putVersioned(this.http, url, dto, version)
.do(content => {
this.localCache.set(`content.${content.id}`, content, 5000);
})
.pretifyError('Failed to update content. Please reload.');
}
public deleteContent(appName: string, schemaName: string, id: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}/${id}`);
return HTTP.deleteVersioned(this.http, url, version)
.do(() => {
this.localCache.remove(`content.${id}`);
})
.pretifyError('Failed to delete content. Please reload.');
}
public publishContent(appName: string, schemaName: string, id: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}/${id}/publish`);
@ -198,11 +211,4 @@ export class ContentsService {
return HTTP.putVersioned(this.http, url, {}, version)
.pretifyError('Failed to unpublish content. Please reload.');
}
public deleteContent(appName: string, schemaName: string, id: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}/${id}`);
return HTTP.deleteVersioned(this.http, url, version)
.pretifyError('Failed to delete content. Please reload.');
}
}

17
src/Squidex/app/shared/services/schemas.service.ts

@ -733,6 +733,16 @@ export class SchemasService {
.pretifyError('Failed to add field. Please reload.');
}
public deleteSchema(appName: string, schemaName: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/schemas/${schemaName}`);
return HTTP.deleteVersioned(this.http, url, version)
.do(() => {
this.localCache.remove(`service.${appName}.${schemaName}`);
})
.pretifyError('Failed to delete schema. Please reload.');
}
public putSchema(appName: string, schemaName: string, dto: UpdateSchemaDto, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/schemas/${schemaName}`);
@ -802,11 +812,4 @@ export class SchemasService {
return HTTP.deleteVersioned(this.http, url, version)
.pretifyError('Failed to delete field. Please reload.');
}
public deleteSchema(appName: string, schemaName: string, version?: Version): Observable<any> {
const url = this.apiUrl.buildUrl(`api/apps/${appName}/schemas/${schemaName}`);
return HTTP.deleteVersioned(this.http, url, version)
.pretifyError('Failed to delete schema. Please reload.');
}
}
Loading…
Cancel
Save