{"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/service/api.resource.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/service/search/base.search.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import { httpResource } from '@angular/common/http';\nimport { Injectable, ResourceRef, signal } from '@angular/core';\nimport { OrderState } from '../public-api';\n\nexport interface ApiFindBy {\n    endPoint?: string;\n    fields?: string;\n    values?: string;\n    first?: number;\n    max?: number;\n    order?: OrderState;\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ApiResourceService<T> {\n    url = signal<string | undefined>(undefined);\n\n    resource: ResourceRef<T | undefined> = httpResource(() => ({\n        url: `${this.url()}`,\n        method: 'GET',\n        headers: {\n            'Content-Type': 'application/json',\n        },\n        params: {},\n        reportProgress: true,\n        transferCache: true,\n        keepalive: true,\n        mode: 'same-origin',\n        redirect: 'error',\n        priority: 'high',\n        cache: 'force-cache',\n        credentials: 'include',\n        referrer: 'no-referrer',\n        integrity: 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GhEXAMPLEKEY=',\n    }));\n\n    constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Observable } from 'rxjs';\nimport { ApiDto, ID, JSONObject, OrderState } from '../dto/api.dto';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ApiService {\n    readonly httpClient = inject(HttpClient);\n    readonly toastService = inject(ToastService);\n    readonly platformService = inject(PlatformService);\n\n    load = signal<boolean>(false);\n    baseUrl: string = '';\n\n    setBaseUrl(url: string) {\n        this.baseUrl = url;\n    }\n\n    get<T>(url: string, callback: (data: T) => void, callbackError: () => void = () => {}) {\n        this.doSubscribe(url, this.httpClient.get<T>(this.baseUrl + url), callback, callbackError);\n    }\n\n    post<TBody, TResponse = TBody>(\n        url: string,\n        data: TBody,\n        callback: (data: TResponse) => void = () => {},\n        withCredentials: boolean = false,\n        callbackError: () => void = () => {},\n    ) {\n        this.doSubscribe(\n            url,\n            this.httpClient.post<TResponse>(this.baseUrl + url, data, { withCredentials }),\n            callback,\n            callbackError,\n        );\n    }\n\n    put<TBody, TResponse = TBody>(\n        url: string,\n        data: TBody,\n        callback: (data: TResponse) => void = () => {},\n        callbackError: () => void = () => {},\n    ) {\n        this.doSubscribe(\n            url,\n            this.httpClient.put<TResponse>(this.baseUrl + url, data),\n            callback,\n            callbackError,\n        );\n    }\n\n    delete<T>(url: string, callback: (data: T) => void, callbackError: () => void = () => {}) {\n        this.doSubscribe(url, this.httpClient.delete<T>(this.baseUrl + url), callback, callbackError);\n    }\n\n    findById<T>(endPoint: string, id: ID, callback: (data: T) => void) {\n        this.get<T>(endPoint + '/' + id, callback);\n    }\n\n    findBy<T>(\n        endPoint: string,\n        fields: string,\n        values: string,\n        first: number,\n        max: number,\n        order: OrderState,\n        callback: (data: T) => void,\n    ) {\n        const orderType: string = order.orderAsc ? '' : 'Desc';\n        const orderConst: string = order.order ? '>>' + order.order + orderType : '';\n        const fieldsComplete = fields + orderConst;\n        this.get<T>(\n            endPoint +\n                '?fields=' +\n                encodeURI(fieldsComplete) +\n                '&values=' +\n                encodeURI(values) +\n                '&first=' +\n                first +\n                '&max=' +\n                max,\n            (data: T) => {\n                callback(data);\n            },\n        );\n    }\n\n    countBy(endPoint: string, fields: string, values: string, callback: (data: { count: number }) => void) {\n        return this.get<{ count: number }>(\n            endPoint + '?fields=' + encodeURI(fields) + '&values=' + values,\n            (data: { count: number }) => {\n                callback(data);\n            },\n        );\n    }\n\n    createOrUpdate<T extends ApiDto>(endPoint: string, data: T, callback: (data: T) => void) {\n        if (data.id !== null && data.id !== undefined && data.id !== '' && Number(data.id) > 0) {\n            this.put<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n                this.toastService.showToast({ text: 'UPDATE_OK', type: 'success' });\n                callback(dateReturn);\n            });\n        } else {\n            this.post<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n                this.toastService.showToast({ text: 'CREATION_OK', type: 'success' });\n                callback(dateReturn);\n            });\n        }\n    }\n\n    doSubscribe<T>(\n        url: string,\n        observable: Observable<T>,\n        callback: (data: T) => void,\n        callbackError: () => void = () => {},\n    ) {\n        this.load.set(true);\n        observable.subscribe({\n            next: (res) => {\n                this.load.set(false);\n                this.info(url, res as JSONObject);\n                callback(res);\n            },\n            error: (error: JSONObject) => {\n                this.load.set(false);\n                callbackError();\n                this.error(url, error);\n            },\n        });\n    }\n\n    info(url: string, data: JSONObject) {\n        if (this.isPlatformBrowser()) {\n            console.log(url, data);\n        }\n    }\n\n    error(url: string, error: JSONObject) {\n        if (this.isPlatformBrowser()) {\n            console.error(url, error);\n        }\n    }\n\n    isPlatformBrowser() {\n        return this.platformService.isPlatformBrowser();\n    }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Store } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { ApiDto, ID, PageableDto } from '../../public-api';\nimport { ApiService } from '../api.service';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseSearchService<T extends ApiDto> {\n    readonly apiService = inject(ApiService);\n    readonly platformService = inject(PlatformService);\n\n    datas = new Store<T>();\n\n    page = signal<number>(1);\n    isLoading = signal<boolean>(false);\n    stopLoad = signal<boolean>(false);\n    search = signal<string>('');\n    newIds = signal<ID[]>([]);\n\n    lastUrl = signal<string>('');\n\n    doLoad(url: string, search: string = '', page: number = 1, nbPage: number = 1) {\n        this.search.set(search);\n        if (page === 1) {\n            this.stopLoad.set(false);\n        }\n        if (this.stopLoad()) {\n            return;\n        }\n        if (this.lastUrl() === url) {\n            return;\n        }\n        this.isLoading.set(true);\n        this.lastUrl.set(url);\n        this.apiService.get<PageableDto<T[]>>(\n            url + search,\n            (data) => {\n                this.page.set(page + nbPage);\n                this.datas.updateForPage(page, data.content);\n                this.newIds.set(data.content.map((item) => item.id));\n                if (data.content?.length === 0) {\n                    this.stopLoad.set(true);\n                }\n                this.isLoading.set(false);\n            },\n            () => {\n                this.stopLoad.set(true);\n            },\n        );\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}