Created
February 13, 2015 11:45
-
-
Save telekosmos/b8662752e20243efc1bb to your computer and use it in GitHub Desktop.
Promise-database prototype
This file contains hidden or 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
Promise = require 'bluebird' | |
_ = require 'lodash' | |
jsonObj = | |
db: | |
host: "localhost", | |
name: "appform", | |
user: "gcomesana", | |
pwd: "appform" | |
, | |
server: | |
hostname: 'localhost' | |
, | |
dumps: [ | |
prj: "Pangen-EU", | |
questionnaire: "QES_Spain", | |
group: "Spain", | |
section: 2, | |
rep: true, | |
out: "" | |
] | |
jsonStr = JSON.stringify jsonObj | |
FileReader = () -> | |
readFile = () -> | |
promiseFunc = (resolve, reject) -> | |
guard = Math.floor(Math.random()*10) | |
even = (guard % 2) == 0 | |
setTimeout () -> | |
if even then resolve "#{jsonStr}" else reject "err of: #{guard}" | |
, 2000 | |
deferred = new Promise(promiseFunc) | |
obj = | |
read: readFile | |
ParserJson = () -> | |
parse = () -> | |
promise = new Promise (resolve, reject) -> | |
guard = Math.floor(Math.random()*10) | |
even = (guard % 2) == 0 | |
setTimeout () -> | |
if !even | |
resolve JSON.parse(jsonStr) | |
else | |
reject "parse json err: #{guard}" | |
, 2000 | |
obj = | |
parse: parse | |
DBRetriever = () -> | |
obj = {} | |
sequelize = null | |
dbMock = # mocking reference to de database | |
prj: [ | |
name: "PanGen" | |
id: 100 | |
, | |
prj: "Cancer" | |
id: 101 | |
] | |
, | |
group: [ | |
name: "Spain" | |
id: 400 | |
, | |
name: "Hospital" | |
id: 401 | |
] | |
, | |
questionnaire: [ | |
name: "QES" | |
id: 300 | |
, | |
name: "IDC" | |
id: 303 | |
] | |
connect = () -> | |
sequelize = dbMock | |
null | |
prjId = (prjName) -> | |
_.result(_.find(sequelize.prj, {name: prjName}), 'id') | |
grpId = (grpName) -> | |
_.result(_.find(sequelize.group, {name: grpName}), 'id') | |
intrvId = (intrvName) -> | |
_.result(_.find(sequelize.questionnaire, {name: intrvName}), 'id') | |
query = (what, name) -> | |
if sequelize? | |
switch what | |
when 'prj' then prjId name | |
when 'grp' then grpId name | |
when 'intrv' then intrvId name | |
else prjId name | |
else | |
undefined | |
obj = | |
connect: connect | |
getGrpId: (name) -> query 'grp', name | |
getPrjId: (name) -> query 'prj', name | |
getIntrvId: (name) -> query 'intrv', name | |
############################## | |
fr = new FileReader() | |
pj = new ParserJson() | |
console.log 'About to read.then(parse) a file...' | |
db = new DBRetriever() | |
# db.connect() | |
# grpId = db.getGrpId 'Spain' | |
# console.log "Id Group retrieved #{grpId} for Spain" | |
fr.read().then pj.parse | |
.then (val) -> | |
console.log val | |
db.connect() | |
dump = val.dumps[0] | |
grpId = db.getGrpId dump.group | |
.then (grpId) -> console.log "Then the retrieved group has id #{grpId}" | |
.catch (err) -> console.log "ERR: #{err}" | |
### | |
fr.read().then (val) -> | |
console.log "Success: #{val}" | |
, | |
(err) -> console.log "ERR: #{err}" | |
### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment