{"version":3,"file":"wasteTypes-Ci56dlwI.js","sources":["../../../Nitrogen.Client/src/models/WasteType.js","../../../Nitrogen.Client/src/api/modules/wasteTypes.js"],"sourcesContent":["import { getValueFromDto as getValue } from './_helpers.js';\r\n\r\nexport default class WasteType {\r\n\tconstructor(dto) {\r\n\t\tthis.id = getValue(dto, 'id', 'number', 0);\r\n\t\tthis.name = getValue(dto, 'name', 'string', '');\r\n\t\tthis.sortOrder = getValue(dto, 'sortOrder', 'number', 0);\r\n\t\tthis.active = getValue(dto, 'active', 'boolean', true);\r\n\t}\r\n}\r\n","import { makeComparator } from '@/helpers/helpers';\r\nimport { getIdb, idbHelpers } from '@/idb';\r\nimport WasteType from '@/models/WasteType';\r\nimport { DateTime } from 'luxon';\r\nimport { fetchAllPages, fetchWrap, idbResponse, isIdbResponse, offlineResponse } from '../_helpers';\r\nimport cache from './cache';\r\n\r\nconst idbStore = 'wasteTypes';\r\n\r\nexport default {\r\n\t/**\r\n\t * Get all waste types\r\n\t * @returns (async) Returns an array of WasteType 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/WasteTypes', 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 WasteType(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 type\r\n\t * @param {Number} id WasteType ID\r\n\t * @returns (async) Returns a WasteType 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/WasteTypes/' + 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 WasteType(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 type\r\n\t * @param {WasteType} model waste type to create.\r\n\t * @returns (async) Returns the new WasteType 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/WasteTypes', {\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 WasteType(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 type\r\n\t * @param {WasteType} model waste type to update.\r\n\t * @returns (async) Returns the updated WasteType 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/WasteTypes/' + 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 WasteType(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 type\r\n\t * @param {Number} id WasteType ID to delete.\r\n\t * @returns (async) Returns true if the request was successful (or not found), false if the waste 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/WasteTypes/' + 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":["WasteType","dto","getValue","idbStore","wasteTypesApi","idb","getIdb","response","data","timestamp","useIdb","cache","DateTime","fetchAllPages","x","offlineResponse","idbResponse","isIdbResponse","idbHelpers","makeComparator","id","fetchWrap","model"],"mappings":"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"}