Best way to access custom methods on a dataProvider
We have a dataProvider that looks like-
It has a few(and more coming) methods per resource(message and panel). We wanted to group them together like this for clarity.
We access each method like this-
Is this the best/prescribed way to get to methods in a provider that have been added to the default/required methods?
const nestCrudProvider = dataProviderNestjsxCrud(API_URL);
const dataProvider = {
...nestCrudProvider,
message: {
getHelloWorld: async () => {
return {
data: 'Hello World'
}
},
addTriggerToMessage: async (record: BaseRecord) => {
return {
...record,
trigger: "Added Trigge to Message"
}
},
setAccess: async (record: BaseRecord) => {
return {
...record,
trigger: "Set Access to Message"
}
}
},
panel: {
getHelloWorld: async () => {
return {
data: 'Hello World'
}
},
addTriggerToPanel: async (record: BaseRecord) => {
return {
...record,
trigger: "Added Trigger to Message"
}
},
setAccess: async (record: BaseRecord) => {
return {
...record,
trigger: "Set Access to panel"
}
}
}
}
export type DataProvider = typeof dataProvider & {
message: {
getHelloWorld: () => Promise<string>;
addTriggerToBaseRecord: (record: BaseRecord) => Promise<BaseRecord>;
setAccess: (record: BaseRecord) => Promise<BaseRecord>;
},
panel: {
getHelloWorld: () => Promise<string>;
addTriggerToBaseRecord: (record: BaseRecord) => Promise<BaseRecord>;
setAccess: (record: BaseRecord) => Promise<BaseRecord>;
}
}
export { dataProvider };const nestCrudProvider = dataProviderNestjsxCrud(API_URL);
const dataProvider = {
...nestCrudProvider,
message: {
getHelloWorld: async () => {
return {
data: 'Hello World'
}
},
addTriggerToMessage: async (record: BaseRecord) => {
return {
...record,
trigger: "Added Trigge to Message"
}
},
setAccess: async (record: BaseRecord) => {
return {
...record,
trigger: "Set Access to Message"
}
}
},
panel: {
getHelloWorld: async () => {
return {
data: 'Hello World'
}
},
addTriggerToPanel: async (record: BaseRecord) => {
return {
...record,
trigger: "Added Trigger to Message"
}
},
setAccess: async (record: BaseRecord) => {
return {
...record,
trigger: "Set Access to panel"
}
}
}
}
export type DataProvider = typeof dataProvider & {
message: {
getHelloWorld: () => Promise<string>;
addTriggerToBaseRecord: (record: BaseRecord) => Promise<BaseRecord>;
setAccess: (record: BaseRecord) => Promise<BaseRecord>;
},
panel: {
getHelloWorld: () => Promise<string>;
addTriggerToBaseRecord: (record: BaseRecord) => Promise<BaseRecord>;
setAccess: (record: BaseRecord) => Promise<BaseRecord>;
}
}
export { dataProvider };It has a few(and more coming) methods per resource(message and panel). We wanted to group them together like this for clarity.
We access each method like this-
const {
data: oneData,
isLoading: oneIsLoading,
refetch,
} = useOne<{ data: string }, HttpError>({
liveMode: "off",
dataProviderName: "default",
queryOptions: {
queryFn: async () => {
const response = await dataProvider.message.getHelloWorld();
console.log(response);
return { data: response.data }; // Ensure the data property is of type BaseRecord
},
},
}); const {
data: oneData,
isLoading: oneIsLoading,
refetch,
} = useOne<{ data: string }, HttpError>({
liveMode: "off",
dataProviderName: "default",
queryOptions: {
queryFn: async () => {
const response = await dataProvider.message.getHelloWorld();
console.log(response);
return { data: response.data }; // Ensure the data property is of type BaseRecord
},
},
});Is this the best/prescribed way to get to methods in a provider that have been added to the default/required methods?
