( logging: boolean, disableCreateMany: boolean, dataProvider: DataProvider, resource: string, values: any[] )
| 70 | } |
| 71 | |
| 72 | export async function createInDataProvider( |
| 73 | logging: boolean, |
| 74 | disableCreateMany: boolean, |
| 75 | dataProvider: DataProvider, |
| 76 | resource: string, |
| 77 | values: any[] |
| 78 | ): Promise<ReportItem[]> { |
| 79 | logger.setEnabled(logging); |
| 80 | logger.log("createInDataProvider", { dataProvider, resource, values }); |
| 81 | const reportItems: ReportItem[] = []; |
| 82 | if (disableCreateMany) { |
| 83 | const items = await createInDataProviderFallback(dataProvider, resource, values); |
| 84 | reportItems.push(...items); |
| 85 | return items; |
| 86 | } |
| 87 | try { |
| 88 | const response = await dataProvider.createMany(resource, { data: values }); |
| 89 | reportItems.push({ |
| 90 | value: null, success: true, response: response |
| 91 | }) |
| 92 | } catch (error) { |
| 93 | const providerMethodNotFoundErrors = [ |
| 94 | "Unknown dataProvider", |
| 95 | "createMany", |
| 96 | ]; |
| 97 | const shouldTryFallback = doesErrorContainString(error, providerMethodNotFoundErrors); |
| 98 | const apiError = !shouldTryFallback; |
| 99 | if (apiError) { |
| 100 | reportItems.push({ |
| 101 | value: null, err: error, success: false, response: null |
| 102 | }) |
| 103 | } |
| 104 | if (shouldTryFallback) { |
| 105 | logger.log( |
| 106 | "createInDataProvider", |
| 107 | "createMany not found on data provider (you may need to implement it see: https://github.com/benwinding/react-admin-import-csv#reducing-requests): using fallback instead" |
| 108 | ); |
| 109 | try { |
| 110 | const items = await createInDataProviderFallback(dataProvider, resource, values); |
| 111 | reportItems.push(...items); |
| 112 | } catch (error) { |
| 113 | logger.error("createInDataProvider", error); |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | return reportItems; |
| 118 | } |
| 119 | |
| 120 | async function createInDataProviderFallback( |
| 121 | dataProvider: DataProvider, |
no test coverage detected