{"version":3,"file":"wasteDisposalSiteTypes-BVk-irnI.js","sources":["../../../Nitrogen.Client/src/api/modules/wasteDisposalSiteTypes.js"],"sourcesContent":["import { makeComparator } from '@/helpers/helpers';\r\nimport { getIdb, idbHelpers } from '@/idb';\r\nimport WasteDisposalSiteType from '@/models/WasteDisposalSiteType';\r\nimport { DateTime } from 'luxon';\r\nimport { fetchAllPages, fetchWrap, idbResponse, isIdbResponse, offlineResponse } from '../_helpers';\r\nimport cache from './cache';\r\n\r\nconst idbStore = 'wasteDisposalSiteTypes';\r\n\r\nexport default {\r\n\t/**\r\n\t * Get all waste disposal site types\r\n\t * @returns (async) Returns an array of WasteDisposalSiteType objects if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getAll() {\r\n\t\tconst idb = await getIdb();\r\n\t\tlet response, data = [], timestamp;\r\n\t\tlet useIdb = await cache.isCacheHit(idbStore);\r\n\t\tif (!useIdb) {\r\n\t\t\ttry {\r\n\t\t\t\ttimestamp = DateTime.now();\r\n\t\t\t\tresponse = await fetchAllPages('/api/WasteDisposalSiteTypes', x => data.push(x), {}, 1000);\r\n\t\t\t} catch {\r\n\t\t\t\tuseIdb = true;\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (useIdb && idb) {\r\n\t\t\tdata = await idb.getAll(idbStore);\r\n\t\t\tresponse = idbResponse(200);\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idbHelpers.replaceAll(idb, idbStore, data);\r\n\t\t\t\tawait cache.setTimestamp(idbStore, timestamp);\r\n\t\t\t}\r\n\t\t\tdata.sort(makeComparator('sortOrder', 'id'));\r\n\t\t\treturn data.map(x => new WasteDisposalSiteType(x));\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Get a waste disposal site type\r\n\t * @param {Number} id WasteDisposalSiteType ID\r\n\t * @returns (async) Returns a WasteDisposalSiteType if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getById(id) {\r\n\t\tconst idb = await getIdb();\r\n\t\tlet response, data = null;\r\n\t\tlet useIdb = await cache.isCacheHit(idbStore);\r\n\t\tif (!useIdb && await cache.canCache()) {\r\n\t\t\t// cache all for future re-use\r\n\t\t\tif ((data = (await this.getAll()).find(x => x.id === id) ?? null)) {\r\n\t\t\t\treturn data;\r\n\t\t\t} else {\r\n\t\t\t\tthrow idbResponse(404);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!useIdb) {\r\n\t\t\ttry {\r\n\t\t\t\tresponse = await fetchWrap('/api/WasteDisposalSiteTypes/' + id);\r\n\t\t\t\tif (response.ok) { data = await response.json(); }\r\n\t\t\t} catch {\r\n\t\t\t\tuseIdb = true;\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (useIdb && idb) {\r\n\t\t\tdata = await idb.get(idbStore, id);\r\n\t\t\tresponse = data ? idbResponse(200) : idbResponse(404);\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idb.put(idbStore, data);\r\n\t\t\t}\r\n\t\t\treturn new WasteDisposalSiteType(data);\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Create a waste disposal site type\r\n\t * @param {WasteDisposalSiteType} model waste disposal site type to create.\r\n\t * @returns (async) Returns the new WasteDisposalSiteType if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync create(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/WasteDisposalSiteTypes', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn new WasteDisposalSiteType(await response.json());\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Update a waste disposal site type\r\n\t * @param {WasteDisposalSiteType} model waste disposal site type to update.\r\n\t * @returns (async) Returns the updated WasteDisposalSiteType if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync update(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/WasteDisposalSiteTypes/' + model.id, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn new WasteDisposalSiteType(model);\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Delete a waste disposal site type\r\n\t * @param {Number} id WasteDisposalSiteType ID to delete.\r\n\t * @returns (async) Returns true if the request was successful (or not found), false if the waste disposal site type could not be deleted, otherwise a Response.\r\n\t */\r\n\tasync deleteById(id) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/WasteDisposalSiteTypes/' + id, { method: 'DELETE' });\r\n\t\t} catch {\r\n\t\t\treturn offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn true;\r\n\t\t} else if (response.status === 404) {\r\n\t\t\treturn true;\r\n\t\t} else if (response.status === 409) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t}\r\n};\r\n"],"names":["idbStore","wasteDisposalSiteTypesApi","idb","getIdb","response","data","timestamp","useIdb","cache","DateTime","fetchAllPages","x","offlineResponse","idbResponse","isIdbResponse","idbHelpers","makeComparator","WasteDisposalSiteType","id","fetchWrap","model"],"mappings":"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"}