File tree Expand file tree Collapse file tree 6 files changed +69
-6
lines changed Expand file tree Collapse file tree 6 files changed +69
-6
lines changed Original file line number Diff line number Diff line change 55 "main" : " index.js" ,
66 "scripts" : {
77 "test" : " jest" ,
8- "start" : " ts-node src/index.ts" ,
8+ "start" : " npx serverless offline" ,
9+ "load-fixtures" : " ts-node src/scripts/loadBookFixtures.ts" ,
10+ "fetch-covers" : " ts-node src/scripts/fetchBookCovers.ts" ,
911 "typeorm" : " typeorm-ts-node-commonjs"
1012 },
1113 "author" : " amalv" ,
Original file line number Diff line number Diff line change 1+ import books from "./raw/books.json" ;
2+ import bookCovers from "./raw/bookCovers.json" ;
3+
4+ const booksData = books . map ( ( book ) => ( {
5+ ...book ,
6+ image : bookCovers [ book . title ] ,
7+ } ) ) ;
8+
9+ export default booksData ;
Original file line number Diff line number Diff line change 1+ {
2+ "1984" : " http://books.google.com/books/content?id=kb7dDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
3+ "Dune" : " http://books.google.com/books/content?id=Q5HCDgAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
4+ "Fahrenheit 451" : " http://books.google.com/books/content?id=OYtkbGl2j0sC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
5+ "A Wrinkle in Time" : " http://books.google.com/books/content?id=r119-dYq0mwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
6+ "Brave New World" : " http://books.google.com/books/content?id=TIJ5EAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
7+ "The War of the Worlds" : " http://books.google.com/books/content?id=v8eNCgAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
8+ "The Time Machine" : " http://books.google.com/books/content?id=f3H6SMzlQQwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
9+ "Starship Troopers" : " http://books.google.com/books/content?id=PuzsBAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
10+ "The Hunger Games" : " http://books.google.com/books/content?id=Yz8Fnw0PlEQC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" ,
11+ "Ender's Game" : " http://books.google.com/books/content?id=Ojqi8KbWuLwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api"
12+ }
Original file line number Diff line number Diff line change 1- export const booksData = [
1+ [
22 {
33 "title" : " Dune" ,
44 "author" : " Frank Herbert" ,
Original file line number Diff line number Diff line change 1+ import https from "https" ;
2+ import { writeFile } from "fs/promises" ;
3+ import { booksData } from "../fixtures/books" ;
4+
5+ const fetchBookCover = ( book ) =>
6+ new Promise ( ( resolve , reject ) => {
7+ https
8+ . get (
9+ `https://www.googleapis.com/books/v1/volumes?q=intitle:${ book . title } +inauthor:${ book . author } &fields=items(volumeInfo(imageLinks))&maxResults=1` ,
10+ ( res ) => {
11+ let data = "" ;
12+
13+ res . on ( "data" , ( chunk ) => {
14+ data += chunk ;
15+ } ) ;
16+
17+ res . on ( "end" , ( ) => {
18+ const coverUrl =
19+ JSON . parse ( data ) . items [ 0 ] ?. volumeInfo ?. imageLinks ?. thumbnail ;
20+ if ( coverUrl ) {
21+ resolve ( { [ book . title ] : coverUrl } ) ;
22+ }
23+ } ) ;
24+ }
25+ )
26+ . on ( "error" , ( err ) => {
27+ reject ( err ) ;
28+ } ) ;
29+ } ) ;
30+
31+ const fetchBookCovers = async ( ) => {
32+ const bookCovers = await Promise . all ( booksData . map ( fetchBookCover ) ) ;
33+ const output = Object . assign ( { } , ...bookCovers ) ;
34+ await writeFile (
35+ "./src/fixtures/bookCovers.json" ,
36+ JSON . stringify ( output , null , 2 )
37+ ) ;
38+ } ;
39+
40+ fetchBookCovers ( ) ;
Original file line number Diff line number Diff line change 11import { faker } from "@faker-js/faker" ;
2- import { AppDataSource } from "./data-source" ;
3- import { User } from "./entity/User" ;
4- import { Book } from "./entity/Book" ;
5- import { booksData } from "./fixtures/books " ;
2+ import { AppDataSource } from ".. /data-source" ;
3+ import { User } from ".. /entity/User" ;
4+ import { Book } from ".. /entity/Book" ;
5+ import booksData from ".. /fixtures/booksData " ;
66
77const initializeBooks = async ( bookData ) => {
88 const book = new Book ( ) ;
You can’t perform that action at this time.
0 commit comments