Skip to content

Instantly share code, notes, and snippets.

@sonnylazuardi
Created March 12, 2018 02:40
Show Gist options
  • Select an option

  • Save sonnylazuardi/4d26e757b5c66547e8c16a3abf966a97 to your computer and use it in GitHub Desktop.

Select an option

Save sonnylazuardi/4d26e757b5c66547e8c16a3abf966a97 to your computer and use it in GitHub Desktop.

Revisions

  1. sonnylazuardi created this gist Mar 12, 2018.
    83 changes: 83 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,83 @@
    const client = new ApolloClient({
    networkInterface: createNetworkInterface({
    uri: "https://n84vv4q37.lp.gql.zone/graphql"
    })
    });

    // Define your models and their properties
    const PassageSchema = {
    name: "Passage",
    primaryKey: "id",
    properties: {
    id: "string",
    content: "string",
    book: "string",
    chapter: "int",
    verse: "int",
    type: "string",
    order: "int"
    }
    };

    app.get("/", (req, res) => {
    Realm.open({ schema: [PassageSchema] }).then(realm => {
    books.forEach(book => {
    for (var index = 1; index <= book.total; index++) {
    let passages = realm.objects("Passage");
    let filteredPassages = passages.filtered(`book = "${book.value}" AND chapter = "${index}"`);

    if (Object.keys(filteredPassages).length == 0) {
    client
    .query({
    query: gql`
    query AlkitabAPI($chapter: Int!, $book: String!) {
    passages(version: nkjv, book: $book, chapter: $chapter) {
    verses {
    content
    verse
    type
    order
    }
    chapter
    book
    version
    }
    }
    `,
    variables: {
    chapter: index,
    book: book.value
    }
    })
    .then(data => {
    // res.json(data);
    const { passages } = data.data;
    console.log(`Scraping ${passages.book} ${passages.chapter}`);
    passages.verses.forEach(verse => {
    realm.write(() => {
    const id = `${passages.book}-${passages.chapter}-${verse.verse}-${verse.type[0]}`;
    const passage = realm.create(
    "Passage",
    {
    id: id,
    content: verse.content,
    book: passages.book,
    chapter: passages.chapter,
    verse: verse.verse,
    order: verse.order,
    type: verse.type[0]
    },
    true
    );
    });
    });
    })
    .catch(error => console.error(error));
    } else {
    console.log(`Content already scraped ${book.value} ${index}`);
    }
    }
    });
    });
    res.json({ start: true });
    });