Skip to content

Commit

Permalink
refactor(integrations/api): crud module [wip]
Browse files Browse the repository at this point in the history
  • Loading branch information
guesant committed Feb 6, 2025
1 parent ea42729 commit f5a02da
Show file tree
Hide file tree
Showing 53 changed files with 175 additions and 398 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,9 @@
import { createApiListContextOptions } from '~/components/UI/API/List/Context/UIApiListContext';
import { useLadesaApiCrudAmbientes } from '../../../composables/integrations/ladesa-api/modules/modules';
const {
crudModule,
composables: { useList },
} = useLadesaApiCrudAmbientes();
const { crudModule } = useLadesaApiCrudAmbientes();
const options = createApiListContextOptions({
baseQueryKey: crudModule.baseQueryKeys,
apiBaseResourceListRetriever: useList(),
});
const options = createApiListContextOptions({ crudModule });
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudAmbientes();
const { data: currentAmbiente } = await useFindOneQuery()(editIdRef);
const { data: currentAmbiente } = await useFindOneQuery(editIdRef);
type FormValues = {
imagem: Blob | null | undefined;
Expand Down
7 changes: 2 additions & 5 deletions sistemas/principal/app/components/Section/Blocos/Blocos.vue
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
<script setup lang="ts">
import { createApiListContextOptions } from '~/components/UI/API/List/Context/UIApiListContext';
const blocosRetriever = useBlocosRetriever();
const { crudModule } = useLadesaApiCrudBlocos();
const options = createApiListContextOptions({
baseQueryKey: ['blocos'],
apiBaseResourceListRetriever: blocosRetriever,
});
const options = createApiListContextOptions({ crudModule });
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudBlocos();
const { data: currentBloco } = await useFindOneQuery()(editIdRef);
const { data: currentBloco } = await useFindOneQuery(editIdRef);
type FormValues = {
imagem: Blob | null | undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudCursos();
const { data: currentCurso } = await useFindOneQuery()(editIdRef);
const { data: currentCurso } = await useFindOneQuery(editIdRef);
type FormValues = {
imagem: Blob | null | undefined;
Expand Down
8 changes: 3 additions & 5 deletions sistemas/principal/app/components/Section/Cursos/Cursos.vue
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
<script setup lang="ts">
import { createApiListContextOptions } from '~/components/UI/API/List/Context/UIApiListContext';
import CursosForm from './Form/Form.vue';
const cursosRetriever = useCursosRetriever();
const options = createApiListContextOptions({
baseQueryKey: cursosBaseQueryKey,
apiBaseResourceListRetriever: cursosRetriever,
});
const { crudModule } = useLadesaApiCrudCursos();
const options = createApiListContextOptions({ crudModule });
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudCursos();
const { data: currentCurso } = await useFindOneQuery()(editIdRef);
const { data: currentCurso } = await useFindOneQuery(editIdRef);
type FormValues = {
imagem: Blob | null | undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ const {
composables: { useListQuery: useListQueryDiariosProfessores },
} = useLadesaApiCrudDiariosProfessores();
const { items: diariosProfessoresList } =
await useListQueryDiariosProfessores()({});
const { items: diariosProfessoresList } = await useListQueryDiariosProfessores(
{}
);
//
Expand Down Expand Up @@ -61,7 +62,7 @@ const queries = computed(() => ({
filterDisciplinaId: [disciplinaId.value!],
}));
const { items: diarios } = await useListQuery()(queries);
const { items: diarios } = await useListQuery(queries);
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const {
const queries = computed(() => ({ search: searchBarText }));
const { items: diarios } = await useListQuery()(queries);
const { items: diarios } = await useListQuery(queries);
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const {
const options = computed(() => ({ filterDiarioId: [diario.value.id] }));
const { items: diariosProfessoresList } =
await useListQueryDiariosProfessores()(options);
await useListQueryDiariosProfessores(options);
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
import { createApiListContextOptions } from '~/components/UI/API/List/Context/UIApiListContext';
import DisciplinasForm from './Form/Form.vue';
const disciplinasRetriever = useDisciplinasRetriever();
const { crudModule } = useLadesaApiCrudDisciplinas();
const options = createApiListContextOptions({
baseQueryKey: disciplinasBaseQueryKey,
apiBaseResourceListRetriever: disciplinasRetriever,
});
const options = createApiListContextOptions({ crudModule });
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudDisciplinas();
const { data: currentDisciplina } = await useFindOneQuery()(editIdRef);
const { data: currentDisciplina } = await useFindOneQuery(editIdRef);
type FormValues = {
imagem: Blob | null | undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudCursos();
const { data: cursoSelecionado, query } = await useFindOneQuery()(cursoId, {
const { data: cursoSelecionado, query } = await useFindOneQuery(cursoId, {
mode: QuerySuspenseBehaviourMode.NEVER_WAIT,
});
Expand Down
7 changes: 2 additions & 5 deletions sistemas/principal/app/components/Section/Turmas/Turmas.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
import { createApiListContextOptions } from '~/components/UI/API/List/Context/UIApiListContext';
import TurmasForm from './Form/Form.vue';
const turmasRetriever = useTurmasRetriever();
const { crudModule } = useLadesaApiCrudTurmas();
const options = createApiListContextOptions({
baseQueryKey: turmasBaseQueryKey,
apiBaseResourceListRetriever: turmasRetriever,
});
const options = createApiListContextOptions({ crudModule });
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudCampi();
const { data: campus } = await useFindOneQuery()(props.vinculo.campus.id);
const { data: campus } = await useFindOneQuery(props.vinculo.campus.id);
const horarios = {
matutino: ['07:30', '08:20', '09:10', '10:00', '10:20', '11:10'],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const {
composables: { useFindOneQuery },
} = useLadesaApiCrudUsuarios();
const { data: currentUsuario } = await useFindOneQuery()(editIdRef);
const { data: currentUsuario } = await useFindOneQuery(editIdRef);
const { vinculosAtivos } = await useApiUsuarioPerfisAtivos(editIdRef);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const {
const queries = computed(() => ({ search: searchBarText.value }));
const { items: usuarios } = await useListQuery()(queries);
const { items: usuarios } = await useListQuery(queries);
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import type {
IGenericCrudModule,
IGenericCrudModuleTypes,
} from '../../../../../utils';

const SYMBOL_EMPTY = Symbol.for('empty');
const STORE_KEY = 'UI_API_LIST_CONTEXT';
Expand All @@ -8,21 +12,23 @@ export enum UIApiListViewMode {

export type UIApiListContext = ReturnType<typeof createUIApiListContext>;

export type ICreateUIApiListContextOptions<ResultItemDto = any> = {
baseQueryKey: MaybeRef<any>[] | MaybeRef<any>;
apiBaseResourceListRetriever: IApiBaseResourceListRetriever<ResultItemDto>;
export type ICreateUIApiListContextOptions<
Typings extends IGenericCrudModuleTypes,
> = {
crudModule: IGenericCrudModule<Typings>;
};

export const createApiListContextOptions = <
T extends ICreateUIApiListContextOptions,
Typings extends IGenericCrudModuleTypes,
T extends ICreateUIApiListContextOptions<Typings>,
>(
options: T
) => {
return options;
};

export const createUIApiListContext = (
options: ICreateUIApiListContextOptions
export const createUIApiListContext = <Typings extends IGenericCrudModuleTypes>(
options: ICreateUIApiListContextOptions<Typings>
) => {
const viewMode = ref(UIApiListViewMode.CARDS);

Expand Down Expand Up @@ -51,8 +57,8 @@ export const useUIApiListContext = (): UIApiListContext => {
return apiListContext;
};

export const setupUIApiListContext = (
options: ICreateUIApiListContextOptions
export const setupUIApiListContext = <Typings extends IGenericCrudModuleTypes>(
options: ICreateUIApiListContextOptions<Typings>
) => {
const apiListContext = createUIApiListContext(options);
provide(STORE_KEY, apiListContext);
Expand Down
13 changes: 6 additions & 7 deletions sistemas/principal/app/components/UI/API/List/List.vue
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<script lang="ts" setup generic="T = any">
<script lang="ts" setup generic="Typings extends IGenericCrudModuleTypes">
import {
setupUIApiListContext,
type ICreateUIApiListContextOptions,
Expand All @@ -8,7 +8,7 @@ import type { IGridItemSlotProps } from './Results/Grid/Typings';
//
type Props = {
options: ICreateUIApiListContextOptions<T>;
options: ICreateUIApiListContextOptions<Typings>;
};
const props = defineProps<Props>();
Expand All @@ -17,7 +17,9 @@ const props = defineProps<Props>();
type Slots = {
'options-actions'(props: any): any;
'grid-item'(props: IGridItemSlotProps<T>): any;
'grid-item'(props: IGridItemSlotProps<Typings['List']['ResultItem']>): any;
'grid-item-skeleton'(props: any): any;
};
Expand All @@ -39,10 +41,7 @@ setupUIApiListContext(props.options);

<UIAPIListResults>
<template #grid-item="options">
<slot
name="grid-item"
v-bind="{ ...options, item: options.item as T }"
/>
<slot name="grid-item" v-bind="{ ...options, item: options.item }" />
</template>

<template #grid-item-skeleton>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ const {
isLoading,
previousItems: items,
} = await useApiBaseResourceInfinityList<T>(
options.baseQueryKey,
options.apiBaseResourceListRetriever,
options.crudModule.baseQueryKeys,
options.crudModule.list,
formOptions
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<script setup lang="ts" generic="T = any">
<script setup lang="ts" generic="Typings extends IGenericCrudModuleTypes">
import {
UIApiListViewMode,
useUIApiListContext,
Expand All @@ -8,7 +8,7 @@ import type { IGridItemSlotProps } from './Grid/Typings';
//
type Slots = {
'grid-item'(props: IGridItemSlotProps<T>): any;
'grid-item'(props: IGridItemSlotProps<Typings['List']['ResultItem']>): any;
'grid-item-skeleton'(props: any): any;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
import type { MaybePromise } from '../../../../../typings';
import type {
IGenericCrudModule,
IGenericCrudModuleTypes,
} from '../../../../../utils';

export type IUIAutocompleteApiRetrieverOptions<
Typings extends IGenericCrudModuleTypes,
Value = any,
ResultItemDto = any,
> = {
baseQueryKey: MaybeRef<any>[] | MaybeRef<any>;
crudModule: IGenericCrudModule<Typings>;

apiResourceGetRetriever: (value: Value) => MaybePromise<ResultItemDto | null>;
apiResourceListRetriever: IApiBaseResourceListRetriever<ResultItemDto>;

transformer: (item: ResultItemDto) => { label: string; value: Value };
transformer: (item: Typings['GetOne']['Result']) => {
label: string;
value: Value;
};
};

/**
* @deprecated
*/
export const createUIAutocompleteApiRetrieverOptions = <
Value = any,
ResultItemDto = any,
T extends IUIAutocompleteApiRetrieverOptions<
Value,
ResultItemDto
> = IUIAutocompleteApiRetrieverOptions<Value, ResultItemDto>,
Typings extends IGenericCrudModuleTypes,
Value extends any,
T extends IUIAutocompleteApiRetrieverOptions<Typings, Value>,
>(
options: T
) => options;
Loading

0 comments on commit f5a02da

Please sign in to comment.