1+ import { PrismaInclude } from '@fullstack-typescript-monorepo/core' ;
12import { Box , BoxProps , Button , ButtonGroup , Paper } from '@mui/material' ;
23import { DataGridProps , GridRowId } from '@mui/x-data-grid' ;
34import React , { useCallback , useState } from 'react' ;
@@ -15,12 +16,12 @@ interface TableOptions extends Omit<DataGridProps, 'rows'> {
1516}
1617
1718interface TableLayoutProps < DataType , Model > {
18- fetchPath : string ;
19+ include ?: PrismaInclude ;
1920 getter : (
20- fetchPath : string ,
2121 state : TableState ,
22+ include ?: PrismaInclude ,
2223 ) => Promise < { data : Model [ ] , count : number } > ;
23- setter ?: ( id : number , data : Partial < DataType > , fetchPath : string ) => Promise < Model > ;
24+ setter ?: ( id : number , data : Partial < DataType > , include ?: object ) => Promise < Model > ;
2425 mapper ?: ( rows : Model ) => DataType ;
2526 add ?: ( ) => void ;
2627 edit ?: ( id : number ) => void ;
@@ -39,7 +40,7 @@ interface TableLayoutProps<DataType, Model> {
3940 * Datatable component
4041 */
4142const TableLayout = < DataType extends WithId , Model extends WithId > ( {
42- fetchPath ,
43+ include ,
4344 getter,
4445 setter,
4546 mapper,
@@ -70,7 +71,7 @@ const TableLayout = <DataType extends WithId, Model extends WithId>({
7071 */
7172 const handleGetter = useCallback ( ( params : TableState ) => {
7273 if ( authed ) {
73- return getter ( fetchPath , params ) . then ( ( response ) => ( {
74+ return getter ( params , include ) . then ( ( response ) => ( {
7475 data : response . data . map ( ( item ) => ( {
7576 deleted, // Hack to force data reload on deletion, useless server-side
7677 ...mapper ? mapper ( item ) : item as unknown as DataType ,
@@ -82,23 +83,22 @@ const TableLayout = <DataType extends WithId, Model extends WithId>({
8283 } ) ;
8384 }
8485 return Promise . resolve ( { data : [ ] , count : 0 } ) ;
85- } , [ Alert , authed , deleted , fetchPath , getter , mapper , t ] ) ;
86+ } , [ Alert , authed , deleted , getter , include , mapper , t ] ) ;
8687
8788 // Update actions table on setter call
8889 const handleSetter = useCallback ( (
8990 id : number ,
9091 data : Partial < DataType > ,
91- path : string ,
9292 ) => new Promise < Model > ( ( resolve , reject ) => {
9393 if ( setter ) {
94- setter ( id , data , path ) . then ( ( response ) => {
94+ setter ( id , data , include ) . then ( ( response ) => {
9595 resolve ( response ) ;
9696 setNewRecord ( ( prev ) => prev + 1 ) ;
9797 } ) . catch ( reject ) ;
9898 } else {
9999 reject ( ) ;
100100 }
101- } ) , [ setter ] ) ;
101+ } ) , [ include , setter ] ) ;
102102
103103 // Enable/disable buttons based on row selection
104104 const handleSelection = useCallback ( ( data : GridRowId [ ] ) => {
@@ -182,7 +182,6 @@ const TableLayout = <DataType extends WithId, Model extends WithId>({
182182 < Datatable < DataType , Model >
183183 { ...tableOptions }
184184 onSelectionModelChange = { handleSelection }
185- fetchPath = { fetchPath }
186185 getter = { handleGetter }
187186 setter = { setter ? handleSetter : undefined }
188187 globalCsvExport = { globalCsvExport }
0 commit comments