0.0.139 • Published 10 months ago

@grec0/ngx-cachemanager v0.0.139

Weekly downloads
-
License
-
Repository
-
Last release
10 months ago

ngx-cachemanager

Líbrería Angular para la gestión de la cache implícita.

Con esta librería se pretende desacoplar la propia lógica de cache sobre el desarrollador, de tal manera que, le permite más control sobre ella sin necesidad de líneas de código solo de algunos Decorators.

Actualmente la comunidad en caso necesario, sulee delegar esta cache en un interceptor HTTP, lo cúal, no esta mal pero, para formatos de aplicación CRUD no suele ser válido además que implica saber que se realiza una llamada HTTP.

Con esta librería ignoraremos lo que hay por detras, ngx-cachemanager hace esto por ti, da igual si la petición es sincrona o no, Promise o Observable si el tipo está definido ngx-cachemanager sabrá que hacer.

En caso de que no se defina el tipo que devuelve la función ngx-cachemanager tomará esta cache como síncrona y puede llevar a errores en caso de que si lo séa.

Un ejemplo:

MAL (RETURN TYPE UNDEFINED async = false)

@Cache({map: 'tasks'})
private getTasks(range) {

    return this.projectService.getProject(
      this.clientId
    );
  }

BIEN (RETURN TYPE Observable async = true)

@Cache({map: 'tasks'})
private getTasks(range): Observable<ITaskDetail[]> {

    return this.projectService.getProject(
      this.clientId
    );
  }

Table of Contents

Quick Start

bower install --save @grec0/ngx-cachemanager or npm install --save @grec0/ngx-cachemanager.

2 opciones para inicializar la configuración:
1) APP_INITIALIZER (recomendada carga en nivel superior) "loadGlobalConfig(config: ConfigCacheGlobal): Promise<boolean>;"

2) Root Module environment (carga en nivel inferior) NgxCachemanagerModule.forRoot(config);

1) APP_INITIALIZER app.module.ts

export function initializer(cacheConfig: CacheConfigService): () => Promise<any> {
	return (): Promise<any> => cacheConfig.loadGlobalConfig({});
}

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    NgxCachemanagerModule
  ],
  providers: [
    {
			provide: APP_INITIALIZER,
			useFactory: initializer,
			deps: [CacheConfigService],
			multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

2) Root Module environment app.module.ts

import{ environment } from '@environment'; // environment contiene el objeto de configuración de cache descrito mas abajo.



@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    NgxCachemanagerModule.forRoot(environment)
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

The Basics

Primero extendemos nuestro servicio de la clase CacheableService y aplicamos el decorator encima del @injectable con la estrategia requerida:

@Cacheable({defaultStrategy:'memory', logger: true})
@Injectable({providedIn:'root'})
export class UserService extends CacheableService {

  @Cache({timeout: 10000, map: 'users-search'})
  getUsers(clientId: string): Observable<Array<User>> {
    return this.userHttpService.getUsers(clientId);
  }
}
0.0.139

10 months ago

0.0.117

11 months ago

0.0.138

11 months ago

0.0.116

11 months ago

0.0.137

11 months ago

0.0.115

11 months ago

0.0.136

11 months ago

0.0.114

11 months ago

0.0.119

11 months ago

0.0.118

11 months ago

0.0.131

11 months ago

0.0.130

11 months ago

0.0.135

11 months ago

0.0.113

11 months ago

0.0.134

11 months ago

0.0.112

11 months ago

0.0.133

11 months ago

0.0.111

11 months ago

0.0.132

11 months ago

0.0.128

11 months ago

0.0.127

11 months ago

0.0.126

11 months ago

0.0.125

11 months ago

0.0.129

11 months ago

0.0.120

11 months ago

0.0.124

11 months ago

0.0.123

11 months ago

0.0.121

11 months ago

0.0.110

3 years ago

0.0.109

3 years ago

0.0.108

3 years ago

0.0.107

3 years ago

0.0.106

3 years ago

0.0.105

3 years ago

0.0.104

3 years ago

0.0.103

3 years ago

0.0.102

3 years ago

0.0.99

3 years ago

0.0.98

3 years ago

0.0.97

3 years ago