{"version":3,"file":"main-class-mvvm-model.mjs","sources":["../../../../projects/main-class/mvvm/model/src/client/abstract-detail.http-client.ts","../../../../projects/main-class/mvvm/model/src/client/abstract-list.http-client.ts","../../../../projects/main-class/mvvm/model/src/client/abstract-crud.http-client.ts","../../../../projects/main-class/mvvm/model/src/repository/abstract-detail.repository.ts","../../../../projects/main-class/mvvm/model/src/repository/abstract-list.repository.ts","../../../../projects/main-class/mvvm/model/src/repository/abstract-crud.repository.ts","../../../../projects/main-class/mvvm/model/index.ts","../../../../projects/main-class/mvvm/model/main-class-mvvm-model.ts"],"sourcesContent":["import {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {DetailClient} from './detail.client';\nimport {inject} from '@angular/core';\n\nexport abstract class AbstractDetailHttpClient<ENTITY> implements DetailClient<ENTITY> {\n  protected httpClient = inject(HttpClient);\n\n  protected abstract basePath: string;\n\n  get(id: any): Observable<ENTITY> {\n    return this.httpClient.get<ENTITY>(\n      `${this.basePath}/${id}`\n    );\n  }\n\n}\n","import {Query} from '../data/query';\nimport {Observable} from 'rxjs';\nimport {Page} from '../data/page';\nimport {AbstractDetailHttpClient} from './abstract-detail.http-client';\nimport {ListClient} from './list.client';\n\nexport abstract class AbstractListHttpClient<QUERY extends Query, ENTITY> extends AbstractDetailHttpClient<ENTITY> implements ListClient<QUERY, ENTITY> {\n\n  constructor(\n    protected basePath: string,\n  ) {\n    super();\n  }\n\n  protected parseQueryParams(query: any): any {\n    return Object.keys(query)\n      .filter(key => (query as any)[key] !== '' && (query as any)[key] !== undefined && (query as any)[key] !== null)\n      .map(key => ({[key]: (query as any)[key]}))\n      .reduce((v1, v2) => ({...v1, ...v2}), {});\n  }\n\n  query(query: QUERY): Observable<Page<ENTITY>> {\n    return this.httpClient.get<Page<ENTITY>>(\n      `${this.basePath}`,\n      {\n        params: this.parseQueryParams(query),\n      }\n    );\n  }\n\n  all(): Observable<ENTITY[]> {\n    return this.httpClient.get<ENTITY[]>(\n      `${this.basePath}`,\n    );\n  }\n\n}\n","import {Observable} from 'rxjs';\nimport {Query} from '../data/query';\nimport {AbstractListHttpClient} from './abstract-list.http-client';\nimport {CrudClient} from './crud.client';\n\nexport abstract class AbstractCrudHttpClient<QUERY extends Query, ENTITY, CREATE = ENTITY, UPDATE = ENTITY>\n    extends AbstractListHttpClient<QUERY, ENTITY> implements CrudClient<QUERY, ENTITY, CREATE, UPDATE>{\n\n    create(create: CREATE): Observable<ENTITY> {\n        return this.httpClient.post<ENTITY>(\n            `${this.basePath}`,\n            this.serialize(undefined, create)\n        );\n    }\n\n    protected serialize(id: any, json: CREATE | UPDATE): any {\n        return json;\n    }\n\n    update(id: any, create: UPDATE): Observable<ENTITY> {\n        const serialized = this.serialize(id, create);\n\n        if (serialized instanceof FormData) {\n            return this.httpClient.post<ENTITY>(\n                `${this.basePath}/${id}`,\n                serialized\n            );\n        }\n\n        return this.httpClient.put<ENTITY>(\n            `${this.basePath}/${id}`,\n            serialized\n        );\n    }\n\n    delete(id: any): Observable<any> {\n        return this.httpClient.delete(\n            `${this.basePath}/${id}`\n        );\n    }\n\n}\n","import {lastValueFrom} from 'rxjs';\nimport {DetailClient} from '../client/detail.client';\n\nexport abstract class AbstractDetailRepository<ENTITY> {\n  protected abstract get client(): DetailClient<ENTITY>;\n\n  get(id: any): Promise<ENTITY> {\n    return lastValueFrom(this.client.get(id));\n  }\n}\n","import {NumericQueryPagination, Query, UndefinedQueryPagination} from '../data/query';\nimport {Page} from '../data/page';\nimport {lastValueFrom} from 'rxjs';\nimport {AbstractDetailRepository} from './abstract-detail.repository';\nimport {ListClient} from '../client/list.client';\n\nexport abstract class AbstractListRepository<QUERY extends Query<NumericQueryPagination | UndefinedQueryPagination>, ENTITY> extends AbstractDetailRepository<ENTITY> {\n    protected abstract override get client(): ListClient<QUERY, ENTITY>;\n\n    async query(query: QUERY): Promise<Page<ENTITY>> {\n        return await lastValueFrom(this.client.query(query));\n    }\n\n    async all(): Promise<ENTITY[]> {\n      if (!!this.client.all) {\n        return await lastValueFrom(this.client.all());\n      }\n\n      return [];\n    }\n}\n","import {NumericQueryPagination, Query, UndefinedQueryPagination} from '../data/query';\nimport {lastValueFrom} from 'rxjs';\nimport {AbstractListRepository} from './abstract-list.repository';\nimport {CrudClient} from '../client/crud.client';\n\nexport abstract class AbstractCrudRepository<QUERY extends Query<NumericQueryPagination | UndefinedQueryPagination>, ENTITY, CREATE = ENTITY, UPDATE = ENTITY>\n    extends AbstractListRepository<QUERY, ENTITY> {\n\n    protected abstract override get client(): CrudClient<QUERY, ENTITY, CREATE, UPDATE>;\n\n    async create(create: CREATE): Promise<ENTITY> {\n        return await lastValueFrom(this.client.create(create));\n    }\n\n    async update(id: any, update: UPDATE): Promise<ENTITY> {\n        return await lastValueFrom(this.client.update(id, update));\n    }\n\n    async delete(id: any): Promise<any> {\n        return await lastValueFrom(this.client.delete(id));\n    }\n\n}\n","/*\n * Public API Surface of mvvm\n */\n\nexport * from './src/data/query';\nexport * from './src/data/page';\n\nexport * from './src/client/crud.client';\nexport * from './src/client/list.client';\nexport * from './src/client/detail.client';\nexport * from './src/client/abstract-crud.http-client';\nexport * from './src/client/abstract-list.http-client';\nexport * from './src/client/abstract-detail.http-client';\n\nexport * from './src/repository/abstract-crud.repository';\nexport * from './src/repository/abstract-detail.repository';\nexport * from './src/repository/abstract-list.repository';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}