-
Notifications
You must be signed in to change notification settings - Fork 221
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added driver to directly push books object to mongo
- Loading branch information
1 parent
09b630e
commit 10773f1
Showing
5 changed files
with
353 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Ignore unecessary files | ||
|
||
node_modules | ||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
const Book = require('./models/Book'); | ||
const mongoose = require('mongoose'); | ||
let fs = require('fs'); | ||
require('dotenv').config(); | ||
|
||
mongoose.connect(process.env.MONGODB_URI, { | ||
useNewUrlParser: true, | ||
useUnifiedTopology: true, | ||
useCreateIndex: true | ||
}); | ||
|
||
const db = mongoose.connection; | ||
|
||
db.on('error',console.error.bind(console, 'Connection error:')); | ||
|
||
const SEED_FILE = 'Library/Library.md'; | ||
fs.readFile(SEED_FILE, (err,buf)=>{ | ||
if(err){ | ||
console.log(err); | ||
} | ||
let arr = buf.toString().split('\n'); | ||
let fileNames = []; | ||
for(let i=0;i<arr.length;i++){ | ||
if(arr[i].search('.md')!=-1){ // search for markdown files | ||
let filename = arr[i].split(/([()])/); | ||
fileNames.push(filename[2]) | ||
} | ||
} | ||
extractDataFromMarkdown(fileNames); | ||
}) | ||
|
||
// traversing fileNames and extract data | ||
const extractDataFromMarkdown = (fileNames)=>{ | ||
const DOWNLOAD_URL = "https://github.com/GauravWalia19/Free-Algorithms-Books/raw/master/Library/"; | ||
const VIEW_URL = "https://github.com/GauravWalia19/Free-Algorithms-Books/blob/master/Library/"; | ||
|
||
for(let i=0;i<fileNames.length;i++){ | ||
let objectDatabase = []; | ||
let readFileName = 'Library/'+fileNames[i]; // reading files path | ||
|
||
fs.readFile(readFileName, (err,buf)=>{ | ||
if(err) | ||
{ | ||
console.log(err); | ||
} | ||
let object = null; | ||
let arr = buf.toString().split('\n'); | ||
let language = fileNames[i].split('.md')[0]; | ||
|
||
// MARKDOWN PARSING | ||
for(let j=0;j<arr.length;j++) { | ||
if(arr[j].search("## :rocket:")!=-1){ | ||
if(object!=null) | ||
{ | ||
objectDatabase.push(object); | ||
} | ||
object={ | ||
name: arr[j].split('## :rocket: ')[1], | ||
view: "", | ||
size: "", | ||
language | ||
} | ||
}else if(arr[j].search("Download") != -1){ | ||
let url = arr[j].split(/([()])/)[2]; | ||
object.download = url.replace('./', DOWNLOAD_URL); | ||
object.view = url.replace('./', VIEW_URL); | ||
}else if(arr[j].search("size:") != -1){ | ||
object.size=arr[j].split("* size: ")[1] | ||
} | ||
} | ||
objectDatabase.push(object); // pushing last created object | ||
addDataToMongo(objectDatabase); | ||
}) | ||
} | ||
} | ||
|
||
const addDataToMongo = (objectDatabase)=>{ | ||
for(let i=0;i<objectDatabase.length;i++){ | ||
let book = new Book( | ||
objectDatabase[i] | ||
); | ||
book.save((err, book)=>{ | ||
if(err) | ||
{ | ||
console.log(err.message); | ||
}else{ | ||
console.log("Book Added: " + objectDatabase[i].name); | ||
} | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
const mongoose = require('mongoose'); | ||
|
||
const Schema = mongoose.Schema; | ||
|
||
const Book = new Schema({ | ||
name: { | ||
type: String, | ||
required: true, | ||
unique: true | ||
}, | ||
view: { | ||
type: String, | ||
required: true | ||
}, | ||
download: { | ||
type: String, | ||
required: true | ||
}, | ||
size: { | ||
type: String, | ||
required: true | ||
}, | ||
language: { | ||
type: String, | ||
required: true | ||
} | ||
}); | ||
|
||
module.exports = mongoose.model('Book',Book); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"name": "free-algorithm-books", | ||
"version": "1.0.0", | ||
"description": "Free Algorithm Books driver project", | ||
"main": "driver.js", | ||
"scripts":{ | ||
"syncDriver": "node driver.js" | ||
}, | ||
"repository": "https://github.com/GauravWalia19/Free-Algorithms-Books.git", | ||
"author": "Gaurav Walia <[email protected]>", | ||
"license": "MIT", | ||
"devDependencies": { | ||
"dotenv": "^8.2.0" | ||
}, | ||
"dependencies": { | ||
"mongoose": "^5.10.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. | ||
# yarn lockfile v1 | ||
|
||
|
||
bl@^2.2.0: | ||
version "2.2.0" | ||
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493" | ||
integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== | ||
dependencies: | ||
readable-stream "^2.3.5" | ||
safe-buffer "^5.1.1" | ||
|
||
[email protected]: | ||
version "3.5.1" | ||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" | ||
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== | ||
|
||
bson@^1.1.4: | ||
version "1.1.5" | ||
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.5.tgz#2aaae98fcdf6750c0848b0cba1ddec3c73060a34" | ||
integrity sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg== | ||
|
||
core-util-is@~1.0.0: | ||
version "1.0.2" | ||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" | ||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= | ||
|
||
[email protected]: | ||
version "3.1.0" | ||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" | ||
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== | ||
dependencies: | ||
ms "2.0.0" | ||
|
||
denque@^1.4.1: | ||
version "1.4.1" | ||
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" | ||
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== | ||
|
||
dotenv@^8.2.0: | ||
version "8.2.0" | ||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" | ||
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== | ||
|
||
inherits@~2.0.3: | ||
version "2.0.4" | ||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | ||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | ||
|
||
isarray@~1.0.0: | ||
version "1.0.0" | ||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" | ||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= | ||
|
||
[email protected]: | ||
version "2.3.1" | ||
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" | ||
integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== | ||
|
||
memory-pager@^1.0.2: | ||
version "1.5.0" | ||
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" | ||
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== | ||
|
||
[email protected]: | ||
version "3.6.0" | ||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.0.tgz#babd7172ec717e2ed3f85e079b3f1aa29dce4724" | ||
integrity sha512-/XWWub1mHZVoqEsUppE0GV7u9kanLvHxho6EvBxQbShXTKYF9trhZC2NzbulRGeG7xMJHD8IOWRcdKx5LPjAjQ== | ||
dependencies: | ||
bl "^2.2.0" | ||
bson "^1.1.4" | ||
denque "^1.4.1" | ||
require_optional "^1.0.1" | ||
safe-buffer "^5.1.2" | ||
optionalDependencies: | ||
saslprep "^1.0.0" | ||
|
||
[email protected]: | ||
version "1.0.2" | ||
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" | ||
integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== | ||
|
||
mongoose@^5.10.0: | ||
version "5.10.0" | ||
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.10.0.tgz#05a35f5a3d8485613c9988aeb9548285a97083f7" | ||
integrity sha512-5itAvBMVDG4+zTDtuLg/IyoTxEMgvpOSHnigQ9Cyh8LR4BEgMAChJj7JSaGkg+tr1AjCSY9DgSdU8bHqCOoxXg== | ||
dependencies: | ||
bson "^1.1.4" | ||
kareem "2.3.1" | ||
mongodb "3.6.0" | ||
mongoose-legacy-pluralize "1.0.2" | ||
mpath "0.7.0" | ||
mquery "3.2.2" | ||
ms "2.1.2" | ||
regexp-clone "1.0.0" | ||
safe-buffer "5.2.1" | ||
sift "7.0.1" | ||
sliced "1.0.1" | ||
|
||
[email protected]: | ||
version "0.7.0" | ||
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.7.0.tgz#20e8102e276b71709d6e07e9f8d4d0f641afbfb8" | ||
integrity sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg== | ||
|
||
[email protected]: | ||
version "3.2.2" | ||
resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" | ||
integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== | ||
dependencies: | ||
bluebird "3.5.1" | ||
debug "3.1.0" | ||
regexp-clone "^1.0.0" | ||
safe-buffer "5.1.2" | ||
sliced "1.0.1" | ||
|
||
[email protected]: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" | ||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= | ||
|
||
[email protected]: | ||
version "2.1.2" | ||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" | ||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== | ||
|
||
process-nextick-args@~2.0.0: | ||
version "2.0.1" | ||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" | ||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== | ||
|
||
readable-stream@^2.3.5: | ||
version "2.3.7" | ||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" | ||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== | ||
dependencies: | ||
core-util-is "~1.0.0" | ||
inherits "~2.0.3" | ||
isarray "~1.0.0" | ||
process-nextick-args "~2.0.0" | ||
safe-buffer "~5.1.1" | ||
string_decoder "~1.1.1" | ||
util-deprecate "~1.0.1" | ||
|
||
[email protected], regexp-clone@^1.0.0: | ||
version "1.0.0" | ||
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" | ||
integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== | ||
|
||
require_optional@^1.0.1: | ||
version "1.0.1" | ||
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" | ||
integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== | ||
dependencies: | ||
resolve-from "^2.0.0" | ||
semver "^5.1.0" | ||
|
||
resolve-from@^2.0.0: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" | ||
integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= | ||
|
||
[email protected], safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
version "5.1.2" | ||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== | ||
|
||
[email protected], safe-buffer@^5.1.1, safe-buffer@^5.1.2: | ||
version "5.2.1" | ||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" | ||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | ||
|
||
saslprep@^1.0.0: | ||
version "1.0.3" | ||
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" | ||
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== | ||
dependencies: | ||
sparse-bitfield "^3.0.3" | ||
|
||
semver@^5.1.0: | ||
version "5.7.1" | ||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" | ||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== | ||
|
||
[email protected]: | ||
version "7.0.1" | ||
resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" | ||
integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== | ||
|
||
[email protected]: | ||
version "1.0.1" | ||
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" | ||
integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= | ||
|
||
sparse-bitfield@^3.0.3: | ||
version "3.0.3" | ||
resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" | ||
integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= | ||
dependencies: | ||
memory-pager "^1.0.2" | ||
|
||
string_decoder@~1.1.1: | ||
version "1.1.1" | ||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" | ||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== | ||
dependencies: | ||
safe-buffer "~5.1.0" | ||
|
||
util-deprecate@~1.0.1: | ||
version "1.0.2" | ||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | ||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= |