Untitled
unknown
typescript
4 years ago
4.0 kB
6
Indexable
const createhmHM = async (firstHm: any) => { const homeChurchInfo = { id: firstHm.id, // PK }; try { const addHM = (await API.graphql({ query: mutations.createHomeChurchInfo, variables: { input: homeChurchInfo }, authMode: GRAPHQL_AUTH_MODE.AMAZON_COGNITO_USER_POOLS, })) as GraphQLResult<ListHomeChurchInfosQuery>; console.log({ added: { addHM } }); } catch (err) { console.log({ create: err }); } }; const shouldCreateHomeChurchInfo = async ( f1HomeChurches: any, homeChurchInfos: any ) => { console.log({ f1HomeChurches }); console.log({ homeChurchInfos }); const createQueue: any = []; f1HomeChurches.forEach((f1HomeChurch: any) => { const inHomeChurchInfosTable = homeChurchInfos.find( (homeChurchInfo: any) => { if (homeChurchInfo?.id === f1HomeChurch?.id) return homeChurchInfo?.id === f1HomeChurch?.id; } ); if (!inHomeChurchInfosTable) { createQueue.push(createhmHM(f1HomeChurch)); } else console.log('Already exists'); }); await Promise.all(createQueue); if (createQueue.length) return true; return false; }; const updateHomeChurchInfo = async (fieldsToUpdate: any): Promise<void> => { try { const updateHMInfo = (await API.graphql({ query: mutations.updateHomeChurchInfo, variables: { input: fieldsToUpdate }, authMode: GRAPHQL_AUTH_MODE.AMAZON_COGNITO_USER_POOLS, })) as GraphQLResult<ListHomeChurchInfosQuery>; console.log({ updated: { updateHMInfo } }); } catch (err) { console.log({ update: err }); } }; const injectF1Data = (f1HomeChurches: any, homeChurchInfos: any) => { return homeChurchInfos.map((homeChurchInfo: any) => { const inF1Table = f1HomeChurches.find( (f1HomeChurch: any) => f1HomeChurch?.id === homeChurchInfo?.id ); homeChurchInfo.F1ItemData = inF1Table; return homeChurchInfo; }); }; useEffect(() => { const fetchHomeChurchInfoChurches = async (): Promise<any> => { const data: Array<any> = []; const fetchNext = async (next: string | null = null) => { try { const json = (await API.graphql({ query: queries.listHomeChurchInfos, variables: { nextToken: next }, authMode: GRAPHQL_AUTH_MODE.API_KEY, })) as GraphQLResult<ListHomeChurchInfosQuery>; console.log({ 'Success queries.listHomeChurchInfos': json, }); if (json?.data?.listHomeChurchInfos?.items?.length) { json?.data?.listHomeChurchInfos?.items?.forEach((hmInfo) => { data.push(hmInfo); }); } if (json?.data?.listHomeChurchInfos?.nextToken) await fetchNext(json?.data?.listHomeChurchInfos?.nextToken); } catch (e) { console.error(e); } }; await fetchNext(null); return data; }; const fetchF1ListGroup2sChurches = async (): Promise<Array<any>> => { let data: Array<any> = []; await DataLoader.listHomeChurches( (items) => { data = [...data, ...items]; }, () => null ); return data; }; const load = async () => { const f1HomeChurchItems = await fetchF1ListGroup2sChurches(); const homeChurchInfoItems = await fetchHomeChurchInfoChurches(); if ( await shouldCreateHomeChurchInfo(f1HomeChurchItems, homeChurchInfoItems) ) { console.log( 'At least one new HomeChurchInfo has been added. Fetch again' ); load(); } const injectedHomeChurchInfoData = injectF1Data( f1HomeChurchItems, homeChurchInfoItems ); setHomeChurch(injectedHomeChurchInfoData); setIsLoading(false); }; load(); }, []);
Editor is loading...