mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 04:10:06 -05:00
data import fixes
This commit is contained in:
60
vue3/src/assets/tandoor_light.css
Normal file
60
vue3/src/assets/tandoor_light.css
Normal file
@@ -0,0 +1,60 @@
|
||||
a {
|
||||
color: #b98766;
|
||||
text-decoration: none;
|
||||
background-color: transparent
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #fff;
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]), a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
outline: 0
|
||||
}
|
||||
|
||||
/* Meal-Plan */
|
||||
|
||||
.cv-header {
|
||||
background-color: #303030 !important;
|
||||
}
|
||||
|
||||
.cv-weeknumber, .cv-header-day {
|
||||
background-color: #303030 !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.cv-day.past {
|
||||
background-color: #333333 !important;
|
||||
}
|
||||
|
||||
.cv-day.today {
|
||||
background-color: var(--primary) !important;
|
||||
}
|
||||
|
||||
.cv-day.outsideOfMonth {
|
||||
background-color: #0d0d0d !important;
|
||||
}
|
||||
|
||||
.cv-item {
|
||||
background-color: #4E4E4E !important;
|
||||
}
|
||||
|
||||
.d01 .cv-day-number {
|
||||
background-color: #b98766!important;
|
||||
}
|
||||
|
||||
/* vueform/multiselect */
|
||||
|
||||
.multiselect-dropdown {
|
||||
background: #212121!important;
|
||||
}
|
||||
|
||||
.multiselect-option.is-pointed {
|
||||
background: #b98766!important;
|
||||
}
|
||||
119
vue3/src/components/settings/OpenDataImportSettings.vue
Normal file
119
vue3/src/components/settings/OpenDataImportSettings.vue
Normal file
@@ -0,0 +1,119 @@
|
||||
<template>
|
||||
<p class="text-h6">{{ $t('Open_Data_Import') }}</p>
|
||||
<v-divider></v-divider>
|
||||
<p class="text-subtitle-2">{{ $t('Data_Import_Info') }}</p>
|
||||
<v-btn href="https://github.com/TandoorRecipes/open-tandoor-data" target="_blank" rel="noreferrer nofollow">{{ $t('Learn_More') }}</v-btn>
|
||||
|
||||
<v-select :items="metadata.versions" :label="$t('Language')" class="mt-2" v-model="requestData.selectedVersion" :loading="loading"></v-select>
|
||||
|
||||
<v-row v-if="requestData.selectedVersion">
|
||||
<v-col>
|
||||
<v-checkbox :label="$t('Update_Existing_Data')" v-model="requestData.updateExisting" hide-details></v-checkbox>
|
||||
<v-checkbox :label="$t('Use_Metric')" v-model="requestData.useMetric" hide-details></v-checkbox>
|
||||
|
||||
<v-table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ $t('Import') }}</th>
|
||||
<th>{{ $t('Datatype') }}</th>
|
||||
<th>{{ $t('Number of Objects') }}</th>
|
||||
<th>{{ $t('Imported') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="d in metadata.datatypes">
|
||||
<td>
|
||||
<v-checkbox hide-details density="compact" :loading="loading" v-model="importDatatype[d]"></v-checkbox>
|
||||
</td>
|
||||
<td>{{ $t(d.charAt(0).toUpperCase() + d.slice(1)) }}</td>
|
||||
<td>{{ metadata[requestData.selectedVersion][d] }}</td>
|
||||
<td>
|
||||
<template v-if="responseData[d]">
|
||||
<i class="fas fa-plus-circle"></i> {{ responseData[d].totalCreated }} {{ $t('Created') }} <br/>
|
||||
<i class="fas fa-pencil-alt"></i> {{ responseData[d].totalUpdated }} {{ $t('Updated') }} <br/>
|
||||
<i class="fas fa-forward"></i> {{ responseData[d].totalUntouched}} {{ $t('Unchanged') }} <br/>
|
||||
<i class="fas fa-exclamation-circle"></i> {{ responseData[d].totalErrored }} {{ $t('Error') }}
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</v-table>
|
||||
<v-btn @click="importOpenData()" class="mt-2 float-right" color="success" :loading="loading">{{ $t('Import') }}</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
import {ApiApi, ImportOpenData, ImportOpenDataMetaData, ImportOpenDataResponse} from "@/openapi";
|
||||
import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore.ts";
|
||||
import {onMounted, ref} from "vue";
|
||||
|
||||
let loading = ref(false)
|
||||
let metadata = ref({} as ImportOpenDataMetaData)
|
||||
let requestData = ref({useMetric: true, updateExisting: true} as ImportOpenData)
|
||||
let responseData = ref({} as ImportOpenDataResponse)
|
||||
|
||||
let importDatatype = ref({
|
||||
food: true,
|
||||
unit: true,
|
||||
category: true,
|
||||
property: true,
|
||||
store: false,
|
||||
conversion: true
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
loadMetadata()
|
||||
})
|
||||
|
||||
/**
|
||||
* perform request to metadata endpoint to load available versions and their statistics
|
||||
*/
|
||||
function loadMetadata() {
|
||||
let api = new ApiApi()
|
||||
loading.value = true
|
||||
api.apiImportOpenDataRetrieve().then(r => {
|
||||
metadata.value = r
|
||||
|
||||
let locale = document.querySelector('html')!.getAttribute('lang')
|
||||
if (locale != null && metadata.value.versions.includes(locale)) {
|
||||
requestData.value.selectedVersion = locale
|
||||
}
|
||||
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
|
||||
function importOpenData() {
|
||||
let api = new ApiApi()
|
||||
loading.value = true
|
||||
|
||||
requestData.value.selectedDatatypes = []
|
||||
Object.keys(importDatatype.value).forEach(key => {
|
||||
if (importDatatype.value[key]) {
|
||||
requestData.value.selectedDatatypes.push(key)
|
||||
}
|
||||
})
|
||||
|
||||
api.apiImportOpenDataCreate({importOpenData: requestData.value}).then(r => {
|
||||
console.log(r)
|
||||
responseData.value = r
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -1,5 +1,4 @@
|
||||
apis/ApiApi.ts
|
||||
apis/ApiImportOpenDataApi.ts
|
||||
apis/ApiTokenAuthApi.ts
|
||||
apis/index.ts
|
||||
index.ts
|
||||
@@ -7,8 +6,6 @@ models/AccessToken.ts
|
||||
models/AuthToken.ts
|
||||
models/AutoMealPlan.ts
|
||||
models/Automation.ts
|
||||
models/AutomationTypeEnum.ts
|
||||
models/BaseUnitEnum.ts
|
||||
models/BookmarkletImport.ts
|
||||
models/BookmarkletImportList.ts
|
||||
models/ConnectorConfigConfig.ts
|
||||
@@ -25,6 +22,11 @@ models/FoodShoppingUpdate.ts
|
||||
models/FoodSimple.ts
|
||||
models/Group.ts
|
||||
models/ImportLog.ts
|
||||
models/ImportOpenData.ts
|
||||
models/ImportOpenDataMetaData.ts
|
||||
models/ImportOpenDataResponse.ts
|
||||
models/ImportOpenDataResponseDetail.ts
|
||||
models/ImportOpenDataVersionMetaData.ts
|
||||
models/Ingredient.ts
|
||||
models/IngredientString.ts
|
||||
models/InviteLink.ts
|
||||
@@ -35,16 +37,6 @@ models/MealPlan.ts
|
||||
models/MealType.ts
|
||||
models/MethodEnum.ts
|
||||
models/NutritionInformation.ts
|
||||
models/OpenDataCategory.ts
|
||||
models/OpenDataConversion.ts
|
||||
models/OpenDataFood.ts
|
||||
models/OpenDataFoodProperty.ts
|
||||
models/OpenDataProperty.ts
|
||||
models/OpenDataStore.ts
|
||||
models/OpenDataStoreCategory.ts
|
||||
models/OpenDataUnit.ts
|
||||
models/OpenDataUnitTypeEnum.ts
|
||||
models/OpenDataVersion.ts
|
||||
models/PaginatedAutomationList.ts
|
||||
models/PaginatedBookmarkletImportListList.ts
|
||||
models/PaginatedCookLogList.ts
|
||||
@@ -91,13 +83,6 @@ models/PatchedInviteLink.ts
|
||||
models/PatchedKeyword.ts
|
||||
models/PatchedMealPlan.ts
|
||||
models/PatchedMealType.ts
|
||||
models/PatchedOpenDataCategory.ts
|
||||
models/PatchedOpenDataConversion.ts
|
||||
models/PatchedOpenDataFood.ts
|
||||
models/PatchedOpenDataProperty.ts
|
||||
models/PatchedOpenDataStore.ts
|
||||
models/PatchedOpenDataUnit.ts
|
||||
models/PatchedOpenDataVersion.ts
|
||||
models/PatchedProperty.ts
|
||||
models/PatchedPropertyType.ts
|
||||
models/PatchedRecipe.ts
|
||||
@@ -157,6 +142,7 @@ models/SupermarketCategoryRelation.ts
|
||||
models/Sync.ts
|
||||
models/SyncLog.ts
|
||||
models/ThemeEnum.ts
|
||||
models/TypeEnum.ts
|
||||
models/Unit.ts
|
||||
models/UnitConversion.ts
|
||||
models/User.ts
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,77 +0,0 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
import * as runtime from '../runtime';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export class ApiImportOpenDataApi extends runtime.BaseAPI {
|
||||
|
||||
/**
|
||||
*/
|
||||
async apiImportOpenDataCreateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKeyAuth authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/api-import-open-data/`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
async apiImportOpenDataCreate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.apiImportOpenDataCreateRaw(initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
async apiImportOpenDataRetrieveRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKeyAuth authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/api-import-open-data/`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
async apiImportOpenDataRetrieve(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.apiImportOpenDataRetrieveRaw(initOverrides);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export * from './ApiApi';
|
||||
export * from './ApiImportOpenDataApi';
|
||||
export * from './ApiTokenAuthApi';
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { AutomationTypeEnum } from './AutomationTypeEnum';
|
||||
import type { TypeEnum } from './TypeEnum';
|
||||
import {
|
||||
AutomationTypeEnumFromJSON,
|
||||
AutomationTypeEnumFromJSONTyped,
|
||||
AutomationTypeEnumToJSON,
|
||||
} from './AutomationTypeEnum';
|
||||
TypeEnumFromJSON,
|
||||
TypeEnumFromJSONTyped,
|
||||
TypeEnumToJSON,
|
||||
} from './TypeEnum';
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,10 +34,10 @@ export interface Automation {
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {AutomationTypeEnum}
|
||||
* @type {TypeEnum}
|
||||
* @memberof Automation
|
||||
*/
|
||||
type: AutomationTypeEnum;
|
||||
type: TypeEnum;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
@@ -108,7 +108,7 @@ export function AutomationFromJSONTyped(json: any, ignoreDiscriminator: boolean)
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'type': AutomationTypeEnumFromJSON(json['type']),
|
||||
'type': TypeEnumFromJSON(json['type']),
|
||||
'name': json['name'] == null ? undefined : json['name'],
|
||||
'description': json['description'] == null ? undefined : json['description'],
|
||||
'param1': json['param_1'] == null ? undefined : json['param_1'],
|
||||
@@ -127,7 +127,7 @@ export function AutomationToJSON(value?: Omit<Automation, 'createdBy'> | null):
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'type': AutomationTypeEnumToJSON(value['type']),
|
||||
'type': TypeEnumToJSON(value['type']),
|
||||
'name': value['name'],
|
||||
'description': value['description'],
|
||||
'param_1': value['param1'],
|
||||
|
||||
86
vue3/src/openapi/models/ImportOpenData.ts
Normal file
86
vue3/src/openapi/models/ImportOpenData.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface ImportOpenData
|
||||
*/
|
||||
export interface ImportOpenData {
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ImportOpenData
|
||||
*/
|
||||
selectedVersion: string;
|
||||
/**
|
||||
*
|
||||
* @type {Array<string>}
|
||||
* @memberof ImportOpenData
|
||||
*/
|
||||
selectedDatatypes: Array<string>;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof ImportOpenData
|
||||
*/
|
||||
updateExisting?: boolean;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof ImportOpenData
|
||||
*/
|
||||
useMetric?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ImportOpenData interface.
|
||||
*/
|
||||
export function instanceOfImportOpenData(value: object): value is ImportOpenData {
|
||||
if (!('selectedVersion' in value) || value['selectedVersion'] === undefined) return false;
|
||||
if (!('selectedDatatypes' in value) || value['selectedDatatypes'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ImportOpenDataFromJSON(json: any): ImportOpenData {
|
||||
return ImportOpenDataFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ImportOpenDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportOpenData {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'selectedVersion': json['selected_version'],
|
||||
'selectedDatatypes': json['selected_datatypes'],
|
||||
'updateExisting': json['update_existing'] == null ? undefined : json['update_existing'],
|
||||
'useMetric': json['use_metric'] == null ? undefined : json['use_metric'],
|
||||
};
|
||||
}
|
||||
|
||||
export function ImportOpenDataToJSON(value?: ImportOpenData | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'selected_version': value['selectedVersion'],
|
||||
'selected_datatypes': value['selectedDatatypes'],
|
||||
'update_existing': value['updateExisting'],
|
||||
'use_metric': value['useMetric'],
|
||||
};
|
||||
}
|
||||
|
||||
239
vue3/src/openapi/models/ImportOpenDataMetaData.ts
Normal file
239
vue3/src/openapi/models/ImportOpenDataMetaData.ts
Normal file
@@ -0,0 +1,239 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { ImportOpenDataVersionMetaData } from './ImportOpenDataVersionMetaData';
|
||||
import {
|
||||
ImportOpenDataVersionMetaDataFromJSON,
|
||||
ImportOpenDataVersionMetaDataFromJSONTyped,
|
||||
ImportOpenDataVersionMetaDataToJSON,
|
||||
} from './ImportOpenDataVersionMetaData';
|
||||
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface ImportOpenDataMetaData
|
||||
*/
|
||||
export interface ImportOpenDataMetaData {
|
||||
/**
|
||||
*
|
||||
* @type {Array<string>}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
versions: Array<string>;
|
||||
/**
|
||||
*
|
||||
* @type {Array<string>}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
datatypes: Array<string>;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
base: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
cs: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
da: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
de: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
el: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
en: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
es: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
fr: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
hu: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
it: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
nbNO: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
nl: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
pl: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
pt: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
ptBR: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
sk: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
sl: ImportOpenDataVersionMetaData;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataVersionMetaData}
|
||||
* @memberof ImportOpenDataMetaData
|
||||
*/
|
||||
zhHans: ImportOpenDataVersionMetaData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ImportOpenDataMetaData interface.
|
||||
*/
|
||||
export function instanceOfImportOpenDataMetaData(value: object): value is ImportOpenDataMetaData {
|
||||
if (!('versions' in value) || value['versions'] === undefined) return false;
|
||||
if (!('datatypes' in value) || value['datatypes'] === undefined) return false;
|
||||
if (!('base' in value) || value['base'] === undefined) return false;
|
||||
if (!('cs' in value) || value['cs'] === undefined) return false;
|
||||
if (!('da' in value) || value['da'] === undefined) return false;
|
||||
if (!('de' in value) || value['de'] === undefined) return false;
|
||||
if (!('el' in value) || value['el'] === undefined) return false;
|
||||
if (!('en' in value) || value['en'] === undefined) return false;
|
||||
if (!('es' in value) || value['es'] === undefined) return false;
|
||||
if (!('fr' in value) || value['fr'] === undefined) return false;
|
||||
if (!('hu' in value) || value['hu'] === undefined) return false;
|
||||
if (!('it' in value) || value['it'] === undefined) return false;
|
||||
if (!('nbNO' in value) || value['nbNO'] === undefined) return false;
|
||||
if (!('nl' in value) || value['nl'] === undefined) return false;
|
||||
if (!('pl' in value) || value['pl'] === undefined) return false;
|
||||
if (!('pt' in value) || value['pt'] === undefined) return false;
|
||||
if (!('ptBR' in value) || value['ptBR'] === undefined) return false;
|
||||
if (!('sk' in value) || value['sk'] === undefined) return false;
|
||||
if (!('sl' in value) || value['sl'] === undefined) return false;
|
||||
if (!('zhHans' in value) || value['zhHans'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ImportOpenDataMetaDataFromJSON(json: any): ImportOpenDataMetaData {
|
||||
return ImportOpenDataMetaDataFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ImportOpenDataMetaDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportOpenDataMetaData {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'versions': json['versions'],
|
||||
'datatypes': json['datatypes'],
|
||||
'base': ImportOpenDataVersionMetaDataFromJSON(json['base']),
|
||||
'cs': ImportOpenDataVersionMetaDataFromJSON(json['cs']),
|
||||
'da': ImportOpenDataVersionMetaDataFromJSON(json['da']),
|
||||
'de': ImportOpenDataVersionMetaDataFromJSON(json['de']),
|
||||
'el': ImportOpenDataVersionMetaDataFromJSON(json['el']),
|
||||
'en': ImportOpenDataVersionMetaDataFromJSON(json['en']),
|
||||
'es': ImportOpenDataVersionMetaDataFromJSON(json['es']),
|
||||
'fr': ImportOpenDataVersionMetaDataFromJSON(json['fr']),
|
||||
'hu': ImportOpenDataVersionMetaDataFromJSON(json['hu']),
|
||||
'it': ImportOpenDataVersionMetaDataFromJSON(json['it']),
|
||||
'nbNO': ImportOpenDataVersionMetaDataFromJSON(json['nb_NO']),
|
||||
'nl': ImportOpenDataVersionMetaDataFromJSON(json['nl']),
|
||||
'pl': ImportOpenDataVersionMetaDataFromJSON(json['pl']),
|
||||
'pt': ImportOpenDataVersionMetaDataFromJSON(json['pt']),
|
||||
'ptBR': ImportOpenDataVersionMetaDataFromJSON(json['pt_BR']),
|
||||
'sk': ImportOpenDataVersionMetaDataFromJSON(json['sk']),
|
||||
'sl': ImportOpenDataVersionMetaDataFromJSON(json['sl']),
|
||||
'zhHans': ImportOpenDataVersionMetaDataFromJSON(json['zh_Hans']),
|
||||
};
|
||||
}
|
||||
|
||||
export function ImportOpenDataMetaDataToJSON(value?: ImportOpenDataMetaData | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'versions': value['versions'],
|
||||
'datatypes': value['datatypes'],
|
||||
'base': ImportOpenDataVersionMetaDataToJSON(value['base']),
|
||||
'cs': ImportOpenDataVersionMetaDataToJSON(value['cs']),
|
||||
'da': ImportOpenDataVersionMetaDataToJSON(value['da']),
|
||||
'de': ImportOpenDataVersionMetaDataToJSON(value['de']),
|
||||
'el': ImportOpenDataVersionMetaDataToJSON(value['el']),
|
||||
'en': ImportOpenDataVersionMetaDataToJSON(value['en']),
|
||||
'es': ImportOpenDataVersionMetaDataToJSON(value['es']),
|
||||
'fr': ImportOpenDataVersionMetaDataToJSON(value['fr']),
|
||||
'hu': ImportOpenDataVersionMetaDataToJSON(value['hu']),
|
||||
'it': ImportOpenDataVersionMetaDataToJSON(value['it']),
|
||||
'nb_NO': ImportOpenDataVersionMetaDataToJSON(value['nbNO']),
|
||||
'nl': ImportOpenDataVersionMetaDataToJSON(value['nl']),
|
||||
'pl': ImportOpenDataVersionMetaDataToJSON(value['pl']),
|
||||
'pt': ImportOpenDataVersionMetaDataToJSON(value['pt']),
|
||||
'pt_BR': ImportOpenDataVersionMetaDataToJSON(value['ptBR']),
|
||||
'sk': ImportOpenDataVersionMetaDataToJSON(value['sk']),
|
||||
'sl': ImportOpenDataVersionMetaDataToJSON(value['sl']),
|
||||
'zh_Hans': ImportOpenDataVersionMetaDataToJSON(value['zhHans']),
|
||||
};
|
||||
}
|
||||
|
||||
113
vue3/src/openapi/models/ImportOpenDataResponse.ts
Normal file
113
vue3/src/openapi/models/ImportOpenDataResponse.ts
Normal file
@@ -0,0 +1,113 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { ImportOpenDataResponseDetail } from './ImportOpenDataResponseDetail';
|
||||
import {
|
||||
ImportOpenDataResponseDetailFromJSON,
|
||||
ImportOpenDataResponseDetailFromJSONTyped,
|
||||
ImportOpenDataResponseDetailToJSON,
|
||||
} from './ImportOpenDataResponseDetail';
|
||||
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface ImportOpenDataResponse
|
||||
*/
|
||||
export interface ImportOpenDataResponse {
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
food: ImportOpenDataResponseDetail;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
unit: ImportOpenDataResponseDetail;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
category: ImportOpenDataResponseDetail;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
property: ImportOpenDataResponseDetail;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
store: ImportOpenDataResponseDetail;
|
||||
/**
|
||||
*
|
||||
* @type {ImportOpenDataResponseDetail}
|
||||
* @memberof ImportOpenDataResponse
|
||||
*/
|
||||
conversion: ImportOpenDataResponseDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ImportOpenDataResponse interface.
|
||||
*/
|
||||
export function instanceOfImportOpenDataResponse(value: object): value is ImportOpenDataResponse {
|
||||
if (!('food' in value) || value['food'] === undefined) return false;
|
||||
if (!('unit' in value) || value['unit'] === undefined) return false;
|
||||
if (!('category' in value) || value['category'] === undefined) return false;
|
||||
if (!('property' in value) || value['property'] === undefined) return false;
|
||||
if (!('store' in value) || value['store'] === undefined) return false;
|
||||
if (!('conversion' in value) || value['conversion'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseFromJSON(json: any): ImportOpenDataResponse {
|
||||
return ImportOpenDataResponseFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportOpenDataResponse {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'food': ImportOpenDataResponseDetailFromJSON(json['food']),
|
||||
'unit': ImportOpenDataResponseDetailFromJSON(json['unit']),
|
||||
'category': ImportOpenDataResponseDetailFromJSON(json['category']),
|
||||
'property': ImportOpenDataResponseDetailFromJSON(json['property']),
|
||||
'store': ImportOpenDataResponseDetailFromJSON(json['store']),
|
||||
'conversion': ImportOpenDataResponseDetailFromJSON(json['conversion']),
|
||||
};
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseToJSON(value?: ImportOpenDataResponse | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'food': ImportOpenDataResponseDetailToJSON(value['food']),
|
||||
'unit': ImportOpenDataResponseDetailToJSON(value['unit']),
|
||||
'category': ImportOpenDataResponseDetailToJSON(value['category']),
|
||||
'property': ImportOpenDataResponseDetailToJSON(value['property']),
|
||||
'store': ImportOpenDataResponseDetailToJSON(value['store']),
|
||||
'conversion': ImportOpenDataResponseDetailToJSON(value['conversion']),
|
||||
};
|
||||
}
|
||||
|
||||
88
vue3/src/openapi/models/ImportOpenDataResponseDetail.ts
Normal file
88
vue3/src/openapi/models/ImportOpenDataResponseDetail.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface ImportOpenDataResponseDetail
|
||||
*/
|
||||
export interface ImportOpenDataResponseDetail {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataResponseDetail
|
||||
*/
|
||||
totalCreated: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataResponseDetail
|
||||
*/
|
||||
totalUpdated: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataResponseDetail
|
||||
*/
|
||||
totalUntouched: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataResponseDetail
|
||||
*/
|
||||
totalErrored: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ImportOpenDataResponseDetail interface.
|
||||
*/
|
||||
export function instanceOfImportOpenDataResponseDetail(value: object): value is ImportOpenDataResponseDetail {
|
||||
if (!('totalCreated' in value) || value['totalCreated'] === undefined) return false;
|
||||
if (!('totalUpdated' in value) || value['totalUpdated'] === undefined) return false;
|
||||
if (!('totalUntouched' in value) || value['totalUntouched'] === undefined) return false;
|
||||
if (!('totalErrored' in value) || value['totalErrored'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseDetailFromJSON(json: any): ImportOpenDataResponseDetail {
|
||||
return ImportOpenDataResponseDetailFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportOpenDataResponseDetail {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'totalCreated': json['total_created'],
|
||||
'totalUpdated': json['total_updated'],
|
||||
'totalUntouched': json['total_untouched'],
|
||||
'totalErrored': json['total_errored'],
|
||||
};
|
||||
}
|
||||
|
||||
export function ImportOpenDataResponseDetailToJSON(value?: ImportOpenDataResponseDetail | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'total_created': value['totalCreated'],
|
||||
'total_updated': value['totalUpdated'],
|
||||
'total_untouched': value['totalUntouched'],
|
||||
'total_errored': value['totalErrored'],
|
||||
};
|
||||
}
|
||||
|
||||
106
vue3/src/openapi/models/ImportOpenDataVersionMetaData.ts
Normal file
106
vue3/src/openapi/models/ImportOpenDataVersionMetaData.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Tandoor
|
||||
* Tandoor API Docs
|
||||
*
|
||||
* The version of the OpenAPI document: 0.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface ImportOpenDataVersionMetaData
|
||||
*/
|
||||
export interface ImportOpenDataVersionMetaData {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
food: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
unit: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
category: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
property: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
store: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ImportOpenDataVersionMetaData
|
||||
*/
|
||||
conversion: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ImportOpenDataVersionMetaData interface.
|
||||
*/
|
||||
export function instanceOfImportOpenDataVersionMetaData(value: object): value is ImportOpenDataVersionMetaData {
|
||||
if (!('food' in value) || value['food'] === undefined) return false;
|
||||
if (!('unit' in value) || value['unit'] === undefined) return false;
|
||||
if (!('category' in value) || value['category'] === undefined) return false;
|
||||
if (!('property' in value) || value['property'] === undefined) return false;
|
||||
if (!('store' in value) || value['store'] === undefined) return false;
|
||||
if (!('conversion' in value) || value['conversion'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ImportOpenDataVersionMetaDataFromJSON(json: any): ImportOpenDataVersionMetaData {
|
||||
return ImportOpenDataVersionMetaDataFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ImportOpenDataVersionMetaDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportOpenDataVersionMetaData {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'food': json['food'],
|
||||
'unit': json['unit'],
|
||||
'category': json['category'],
|
||||
'property': json['property'],
|
||||
'store': json['store'],
|
||||
'conversion': json['conversion'],
|
||||
};
|
||||
}
|
||||
|
||||
export function ImportOpenDataVersionMetaDataToJSON(value?: ImportOpenDataVersionMetaData | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'food': value['food'],
|
||||
'unit': value['unit'],
|
||||
'category': value['category'],
|
||||
'property': value['property'],
|
||||
'store': value['store'],
|
||||
'conversion': value['conversion'],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { AutomationTypeEnum } from './AutomationTypeEnum';
|
||||
import type { TypeEnum } from './TypeEnum';
|
||||
import {
|
||||
AutomationTypeEnumFromJSON,
|
||||
AutomationTypeEnumFromJSONTyped,
|
||||
AutomationTypeEnumToJSON,
|
||||
} from './AutomationTypeEnum';
|
||||
TypeEnumFromJSON,
|
||||
TypeEnumFromJSONTyped,
|
||||
TypeEnumToJSON,
|
||||
} from './TypeEnum';
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,10 +34,10 @@ export interface PatchedAutomation {
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {AutomationTypeEnum}
|
||||
* @type {TypeEnum}
|
||||
* @memberof PatchedAutomation
|
||||
*/
|
||||
type?: AutomationTypeEnum;
|
||||
type?: TypeEnum;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
@@ -106,7 +106,7 @@ export function PatchedAutomationFromJSONTyped(json: any, ignoreDiscriminator: b
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'type': json['type'] == null ? undefined : AutomationTypeEnumFromJSON(json['type']),
|
||||
'type': json['type'] == null ? undefined : TypeEnumFromJSON(json['type']),
|
||||
'name': json['name'] == null ? undefined : json['name'],
|
||||
'description': json['description'] == null ? undefined : json['description'],
|
||||
'param1': json['param_1'] == null ? undefined : json['param_1'],
|
||||
@@ -125,7 +125,7 @@ export function PatchedAutomationToJSON(value?: Omit<PatchedAutomation, 'created
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'type': AutomationTypeEnumToJSON(value['type']),
|
||||
'type': TypeEnumToJSON(value['type']),
|
||||
'name': value['name'],
|
||||
'description': value['description'],
|
||||
'param_1': value['param1'],
|
||||
|
||||
@@ -4,8 +4,6 @@ export * from './AccessToken';
|
||||
export * from './AuthToken';
|
||||
export * from './AutoMealPlan';
|
||||
export * from './Automation';
|
||||
export * from './AutomationTypeEnum';
|
||||
export * from './BaseUnitEnum';
|
||||
export * from './BookmarkletImport';
|
||||
export * from './BookmarkletImportList';
|
||||
export * from './ConnectorConfigConfig';
|
||||
@@ -22,6 +20,11 @@ export * from './FoodShoppingUpdate';
|
||||
export * from './FoodSimple';
|
||||
export * from './Group';
|
||||
export * from './ImportLog';
|
||||
export * from './ImportOpenData';
|
||||
export * from './ImportOpenDataMetaData';
|
||||
export * from './ImportOpenDataResponse';
|
||||
export * from './ImportOpenDataResponseDetail';
|
||||
export * from './ImportOpenDataVersionMetaData';
|
||||
export * from './Ingredient';
|
||||
export * from './IngredientString';
|
||||
export * from './InviteLink';
|
||||
@@ -32,16 +35,6 @@ export * from './MealPlan';
|
||||
export * from './MealType';
|
||||
export * from './MethodEnum';
|
||||
export * from './NutritionInformation';
|
||||
export * from './OpenDataCategory';
|
||||
export * from './OpenDataConversion';
|
||||
export * from './OpenDataFood';
|
||||
export * from './OpenDataFoodProperty';
|
||||
export * from './OpenDataProperty';
|
||||
export * from './OpenDataStore';
|
||||
export * from './OpenDataStoreCategory';
|
||||
export * from './OpenDataUnit';
|
||||
export * from './OpenDataUnitTypeEnum';
|
||||
export * from './OpenDataVersion';
|
||||
export * from './PaginatedAutomationList';
|
||||
export * from './PaginatedBookmarkletImportListList';
|
||||
export * from './PaginatedCookLogList';
|
||||
@@ -88,13 +81,6 @@ export * from './PatchedInviteLink';
|
||||
export * from './PatchedKeyword';
|
||||
export * from './PatchedMealPlan';
|
||||
export * from './PatchedMealType';
|
||||
export * from './PatchedOpenDataCategory';
|
||||
export * from './PatchedOpenDataConversion';
|
||||
export * from './PatchedOpenDataFood';
|
||||
export * from './PatchedOpenDataProperty';
|
||||
export * from './PatchedOpenDataStore';
|
||||
export * from './PatchedOpenDataUnit';
|
||||
export * from './PatchedOpenDataVersion';
|
||||
export * from './PatchedProperty';
|
||||
export * from './PatchedPropertyType';
|
||||
export * from './PatchedRecipe';
|
||||
@@ -154,6 +140,7 @@ export * from './SupermarketCategoryRelation';
|
||||
export * from './Sync';
|
||||
export * from './SyncLog';
|
||||
export * from './ThemeEnum';
|
||||
export * from './TypeEnum';
|
||||
export * from './Unit';
|
||||
export * from './UnitConversion';
|
||||
export * from './User';
|
||||
|
||||
Reference in New Issue
Block a user